[Jiemamy-notify:1672] commit [2871] reset bendpointsの逆コマンドを実装。 / refactor

アーカイブの一覧に戻る

svnno****@sourc***** svnno****@sourc*****
2009年 3月 11日 (水) 02:02:52 JST


Revision: 2871
          http://svn.sourceforge.jp/view?root=jiemamy&view=rev&rev=2871
Author:   daisuke_m
Date:     2009-03-11 02:02:52 +0900 (Wed, 11 Mar 2009)

Log Message:
-----------
reset bendpointsの逆コマンドを実装。 / refactor

Modified Paths:
--------------
    artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/editcommand/CommandProcessorImpl.java
    artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/model/attribute/constraint/AbstractCheckConstraint.java
    artemis/trunk/jiemamy-view/src/main/java/org/jiemamy/editcommand/ResetBendpointCommand.java
    artemis/trunk/jiemamy-view/src/main/java/org/jiemamy/facade/JiemamyViewFacadeImpl.java
    zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/editcommand/Command.java

Added Paths:
-----------
    artemis/trunk/jiemamy-view/src/main/java/org/jiemamy/editcommand/RevertBendpointsCommand.java


-------------- next part --------------
Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/editcommand/CommandProcessorImpl.java
===================================================================
--- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/editcommand/CommandProcessorImpl.java	2009-03-10 16:48:31 UTC (rev 2870)
+++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/editcommand/CommandProcessorImpl.java	2009-03-10 17:02:52 UTC (rev 2871)
@@ -72,7 +72,7 @@
 public class CommandProcessorImpl implements CommandProcessor {
 	
 	/**
-	 * ブローカ
+	 * イベントブローカ
 	 * 
 	 * サブクラスからも見える必要がある。
 	 */
@@ -82,7 +82,7 @@
 	/**
 	 * インスタンスを生成する。
 	 * 
-	 * @param eventBroker ブローカ
+	 * @param eventBroker イベントブローカ
 	 * @throws IllegalArgumentException 引数に{@code null}を与えた場合
 	 */
 	public CommandProcessorImpl(EventBroker eventBroker) {

Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/model/attribute/constraint/AbstractCheckConstraint.java
===================================================================
--- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/model/attribute/constraint/AbstractCheckConstraint.java	2009-03-10 16:48:31 UTC (rev 2870)
+++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/model/attribute/constraint/AbstractCheckConstraint.java	2009-03-10 17:02:52 UTC (rev 2871)
@@ -25,7 +25,6 @@
 /**
  * TODO for daisuke
  * 
- * @since 0.2
  * @author daisuke
  */
 public abstract class AbstractCheckConstraint extends AbstractConstraintModel implements CheckConstraint {

Modified: artemis/trunk/jiemamy-view/src/main/java/org/jiemamy/editcommand/ResetBendpointCommand.java
===================================================================
--- artemis/trunk/jiemamy-view/src/main/java/org/jiemamy/editcommand/ResetBendpointCommand.java	2009-03-10 16:48:31 UTC (rev 2870)
+++ artemis/trunk/jiemamy-view/src/main/java/org/jiemamy/editcommand/ResetBendpointCommand.java	2009-03-10 17:02:52 UTC (rev 2871)
@@ -39,17 +39,21 @@
  */
 public class ResetBendpointCommand extends AbstractCommand {
 	
+	private final RootModel rootModel;
+	
 	/** ダイアグラムエディタのインデックス(エディタ内のタブインデックス) */
 	private final int diagramIndex;
 	
+	/** リセット対象のコネクション */
+	private final ConnectionAdapter connectionAdapter;
+	
+	private final DiagramPresentationModel diagramPresentation;
+	
 	private final ConnectionProfile connectionProfile;
 	
+	/** リセット前のベンドポイントリスト(undo用) */
 	private final List<JmPoint> bendpoints;
 	
-	private final ConnectionAdapter connectionAdapter;
-	
-	private final DiagramPresentationModel diagramPresentation;
-	
 
 	/**
 	 * インスタンスを生成する。
@@ -59,6 +63,7 @@
 	 * @param connectionAdapter ベンドポイントが削除されるコネクション
 	 */
 	public ResetBendpointCommand(RootModel rootModel, int diagramIndex, ConnectionAdapter connectionAdapter) {
+		this.rootModel = rootModel;
 		this.diagramIndex = diagramIndex;
 		this.connectionAdapter = connectionAdapter;
 		DiagramPresentations diagramPresentations = rootModel.getAdapter(DiagramPresentations.class);
@@ -68,8 +73,9 @@
 	}
 	
 	/**
-	 * TODO for daisuke
-	 * @return the connectionAdapter
+	 * リセット対象のコネクションを取得する。
+	 * 
+	 * @return リセット対象のコネクション
 	 */
 	public ConnectionAdapter getConnectionAdapter() {
 		return connectionAdapter;
@@ -92,8 +98,7 @@
 	}
 	
 	public Command getNegateCommand() {
-		// TODO
-		return null;
+		return new RevertBendpointsCommand(rootModel, diagramIndex, connectionAdapter, bendpoints);
 	}
 	
 	public JiemamyElement getTarget() {

Added: artemis/trunk/jiemamy-view/src/main/java/org/jiemamy/editcommand/RevertBendpointsCommand.java
===================================================================
--- artemis/trunk/jiemamy-view/src/main/java/org/jiemamy/editcommand/RevertBendpointsCommand.java	                        (rev 0)
+++ artemis/trunk/jiemamy-view/src/main/java/org/jiemamy/editcommand/RevertBendpointsCommand.java	2009-03-10 17:02:52 UTC (rev 2871)
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2007-2009 Jiemamy Project and the Others.
+ * Created on 2009/03/02
+ *
+ * This file is part of Jiemamy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+package org.jiemamy.editcommand;
+
+import java.util.List;
+
+import org.jiemamy.editcommand.impl.AbstractCommand;
+import org.jiemamy.model.ConnectionProfile;
+import org.jiemamy.model.DiagramPresentationModel;
+import org.jiemamy.model.DiagramPresentations;
+import org.jiemamy.model.JiemamyElement;
+import org.jiemamy.model.RootModel;
+import org.jiemamy.model.connection.ConnectionAdapter;
+import org.jiemamy.model.geometory.JmPoint;
+
+/**
+ * コネクションにベンドポイントを復元するEDITコマンド。
+ * 
+ * @author daisuke
+ */
+public class RevertBendpointsCommand extends AbstractCommand {
+	
+	private final RootModel rootModel;
+	
+	/** ダイアグラムエディタのインデックス(エディタ内のタブインデックス) */
+	private final int diagramIndex;
+	
+	/** ベンドポイントが復元されるコネクション */
+	private final ConnectionAdapter connectionAdapter;
+	
+	private final DiagramPresentationModel diagramPresentation;
+	
+	private final ConnectionProfile connectionProfile;
+	
+	/** ベンドポイントのリスト */
+	private final List<JmPoint> bendpoints;
+	
+
+	/**
+	 * インスタンスを生成する。
+	 * 
+	 * @param rootModel 
+	 * @param diagramIndex ダイアグラムエディタのインデックス(エディタ内のタブインデックス)
+	 * @param connectionAdapter ベンドポイントが復元されるコネクション
+	 * @param points source側からtarget側に向かう順の座標のリスト
+	 */
+	public RevertBendpointsCommand(RootModel rootModel, int diagramIndex, ConnectionAdapter connectionAdapter,
+			List<JmPoint> points) {
+		this.rootModel = rootModel;
+		this.diagramIndex = diagramIndex;
+		this.connectionAdapter = connectionAdapter;
+		DiagramPresentations diagramPresentations = rootModel.getAdapter(DiagramPresentations.class);
+		diagramPresentation = diagramPresentations.get(diagramIndex);
+		connectionProfile = diagramPresentation.getConnectionProfiles().get(connectionAdapter);
+		bendpoints = connectionProfile.getBendpoints();
+	}
+	
+	/**
+	 * ベンドポイントのリストを取得する。
+	 * 
+	 * @return ベンドポイントのリスト
+	 */
+	public List<JmPoint> getBendpoints() {
+		return bendpoints;
+	}
+	
+	/**
+	 * ベンドポイントが復元されるコネクションを取得する。
+	 * 
+	 * @return ベンドポイントが復元されるコネクション
+	 */
+	public ConnectionAdapter getConnectionAdapter() {
+		return connectionAdapter;
+	}
+	
+	/**
+	 * ベンドポイントが追加されるコネクションを設定する。
+	 * 
+	 * @return ベンドポイントが追加されるコネクション
+	 */
+	public ConnectionProfile getConnectionProfile() {
+		return connectionProfile;
+	}
+	
+	/**
+	 * TODO for daisuke
+	 * 
+	 * @return
+	 */
+	public DiagramPresentationModel getDiagramPresentation() {
+		return diagramPresentation;
+	}
+	
+	public Command getNegateCommand() {
+		return new ResetBendpointCommand(rootModel, diagramIndex, connectionAdapter); // TODO
+	}
+	
+	public JiemamyElement getTarget() {
+		return connectionProfile;
+	}
+	
+}


Property changes on: artemis/trunk/jiemamy-view/src/main/java/org/jiemamy/editcommand/RevertBendpointsCommand.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Modified: artemis/trunk/jiemamy-view/src/main/java/org/jiemamy/facade/JiemamyViewFacadeImpl.java
===================================================================
--- artemis/trunk/jiemamy-view/src/main/java/org/jiemamy/facade/JiemamyViewFacadeImpl.java	2009-03-10 16:48:31 UTC (rev 2870)
+++ artemis/trunk/jiemamy-view/src/main/java/org/jiemamy/facade/JiemamyViewFacadeImpl.java	2009-03-10 17:02:52 UTC (rev 2871)
@@ -39,6 +39,7 @@
 import org.jiemamy.editcommand.RemoveConnectionViewCommand;
 import org.jiemamy.editcommand.RemoveNodeViewCommand;
 import org.jiemamy.editcommand.ResetBendpointCommand;
+import org.jiemamy.editcommand.RevertBendpointsCommand;
 import org.jiemamy.editcommand.impl.AddColumnToColumnRefListCommand;
 import org.jiemamy.editcommand.impl.ModifyModelPropertyCommand;
 import org.jiemamy.model.ConnectionProfile;
@@ -394,5 +395,22 @@
 			
 			eventBroker.fireCommandProcessed(command);
 		}
+		
+		/**
+		 * TODO for daisuke
+		 * 
+		 * @param command コマンド
+		 */
+		public void process(RevertBendpointsCommand command) {
+			ConnectionAdapter connectionAdapter = command.getConnectionAdapter();
+			DiagramPresentationModel diagramPresentation = command.getDiagramPresentation();
+			ConnectionProfile connectionProfile = diagramPresentation.getConnectionProfiles().get(connectionAdapter);
+			List<JmPoint> bendpoints = connectionProfile.getBendpoints();
+			
+			bendpoints.clear();
+			bendpoints.addAll(command.getBendpoints());
+			
+			eventBroker.fireCommandProcessed(command);
+		}
 	}
 }

Modified: zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/editcommand/Command.java
===================================================================
--- zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/editcommand/Command.java	2009-03-10 16:48:31 UTC (rev 2870)
+++ zeus/trunk/jiemamy-spec-core/src/main/java/org/jiemamy/editcommand/Command.java	2009-03-10 17:02:52 UTC (rev 2871)
@@ -23,7 +23,7 @@
 /**
  * モデルを編集するためのEDITコマンドのインターフェース。
  * 
- * <p>このインターフェイスの実装は、イミュータブルでなければならない。</p>
+ * <p>このインターフェイスの実装は、イミュータブルであることが望ましい。</p>
  * 
  * @since 0.2
  * @author daisuke
@@ -43,8 +43,9 @@
 	/**
 	 * 取り消しEDITコマンドを取得する。
 	 * 
-	 * <p>このメソッドは、{@link #execute(CommandProcessor)}を実行前後、どちらでも、
-	 * 同じ効果をもたらす取り消しEDITコマンドを返さなければならない。</p>
+	 * <p>このメソッドは、常に同じ効果をもたらす取り消しEDITコマンドを返さなければならない。
+	 * 例えば、{@link #execute(CommandProcessor)}を実行前後で変化してはならない。
+	 * このインターフェイスの実装は、イミュータブルであることが望ましいのは、以上の理由である。</p>
 	 * 
 	 * @return 取り消しEDITコマンド
 	 * @since 0.2



Jiemamy-notify メーリングリストの案内
アーカイブの一覧に戻る