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