svnno****@sourc*****
svnno****@sourc*****
2009年 3月 9日 (月) 21:58:03 JST
Revision: 2853 http://svn.sourceforge.jp/view?root=jiemamy&view=rev&rev=2853 Author: daisuke_m Date: 2009-03-09 21:58:03 +0900 (Mon, 09 Mar 2009) Log Message: ----------- Modified Paths: -------------- vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/action/AutoLayoutAction.java vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/action/ChangeNodeBackgroundColorAction.java vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/AbstractMovePositionCommand.java vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/ChangeNodeColorCommand.java vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/ChangeNodeConstraintCommand.java vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/CreateBendpointCommand.java vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/CreateConnectionCommand.java vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/CreateNodeCommand.java vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/DeleteBendpointCommand.java vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/DirectEditNodeCommand.java vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/MoveBendpointCommand.java vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/editpolicy/JmBendpointEditPolicy.java vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/editpolicy/JmGraphicalNodeEditPolicy.java vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/editpolicy/JmLayoutEditPolicy.java -------------- next part -------------- Modified: vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/action/AutoLayoutAction.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/action/AutoLayoutAction.java 2009-03-09 12:38:30 UTC (rev 2852) +++ vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/action/AutoLayoutAction.java 2009-03-09 12:58:03 UTC (rev 2853) @@ -133,7 +133,7 @@ new DirectedGraphLayout().visit(graph); for (Object obj : graph.nodes) { EntityNode node = (EntityNode) obj; - commands.add(new LayoutCommand(rootModel, node.model, node.x, node.y)); + commands.add(new LayoutCommand(rootModel, Migration.DIAGRAM_INDEX, node.model, node.x, node.y)); } getViewer().getEditDomain().getCommandStack().execute(commands); } @@ -171,6 +171,8 @@ private RootModel rootModel; + private final int diagramIndex; + private NodeAdapter target; private int x; @@ -188,17 +190,19 @@ * インスタンスを生成する。 * * @param rootModel + * @param diagramIndex ダイアグラムエディタのインデックス(エディタ内のタブインデックス) * @param target * @param x X座標 * @param y Y座標 */ - public LayoutCommand(RootModel rootModel, NodeAdapter target, int x, int y) { + public LayoutCommand(RootModel rootModel, int diagramIndex, NodeAdapter target, int x, int y) { this.rootModel = rootModel; + this.diagramIndex = diagramIndex; this.target = target; this.x = x; this.y = y; DiagramPresentations diagramPresentations = rootModel.getAdapter(DiagramPresentations.class); - DiagramPresentationModel presentation = diagramPresentations.get(Migration.DIAGRAM_INDEX); + DiagramPresentationModel presentation = diagramPresentations.get(diagramIndex); NodeProfile nodeProfile = presentation.getFigureProfiles().get(target); JmRectangle boundary = nodeProfile.getBoundary(); oldX = boundary.x; @@ -208,7 +212,7 @@ @Override public void execute() { DiagramPresentations diagramPresentations = rootModel.getAdapter(DiagramPresentations.class); - DiagramPresentationModel presentation = diagramPresentations.get(Migration.DIAGRAM_INDEX); + DiagramPresentationModel presentation = diagramPresentations.get(diagramIndex); PresentationUtil.setBoundary(presentation, target, new JmRectangle(x, y, -1, -1)); oldBendpoints.clear(); for (ConnectionAdapter conn : target.getSourceConnections()) { @@ -222,7 +226,7 @@ @Override public void undo() { DiagramPresentations diagramPresentations = rootModel.getAdapter(DiagramPresentations.class); - DiagramPresentationModel presentation = diagramPresentations.get(Migration.DIAGRAM_INDEX); + DiagramPresentationModel presentation = diagramPresentations.get(diagramIndex); for (ConnectionAdapter conn : target.getSourceConnections()) { ConnectionProfile connectionProfile = presentation.getConnectionProfiles().get(conn); List<JmPoint> bendpoints = connectionProfile.getBendpoints(); Modified: vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/action/ChangeNodeBackgroundColorAction.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/action/ChangeNodeBackgroundColorAction.java 2009-03-09 12:38:30 UTC (rev 2852) +++ vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/action/ChangeNodeBackgroundColorAction.java 2009-03-09 12:58:03 UTC (rev 2853) @@ -28,6 +28,7 @@ import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.widgets.ColorDialog; +import org.jiemamy.Migration; import org.jiemamy.eclipse.editor.command.ChangeNodeColorCommand; import org.jiemamy.eclipse.editor.editpart.diagram.AbstractJmNodeEditPart; import org.jiemamy.eclipse.utils.ConvertUtil; @@ -67,7 +68,9 @@ for (AbstractJmNodeEditPart editPart : editParts) { NodeAdapter nodeAdapter = editPart.getModel(); CommandStack stack = getViewer().getEditDomain().getCommandStack(); - Command command = new ChangeNodeColorCommand(rootModel, nodeAdapter, ConvertUtil.convert(rgb)); + Command command = + new ChangeNodeColorCommand(rootModel, Migration.DIAGRAM_INDEX, nodeAdapter, ConvertUtil + .convert(rgb)); stack.execute(command); } Modified: vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/AbstractMovePositionCommand.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/AbstractMovePositionCommand.java 2009-03-09 12:38:30 UTC (rev 2852) +++ vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/AbstractMovePositionCommand.java 2009-03-09 12:58:03 UTC (rev 2853) @@ -23,7 +23,6 @@ import org.eclipse.gef.commands.Command; -import org.jiemamy.Migration; import org.jiemamy.eclipse.editor.JiemamyEditor; import org.jiemamy.eclipse.utils.EditorUtil; import org.jiemamy.model.ConnectionProfile; @@ -45,8 +44,20 @@ private JmPoint shift; + /** ダイアグラムエディタのインデックス(エディタ内のタブインデックス) */ + private int diagramIndex; + /** + * インスタンスを生成する。 + * + * @param diagramIndex ダイアグラムエディタのインデックス(エディタ内のタブインデックス) + */ + public AbstractMovePositionCommand(int diagramIndex) { + this.diagramIndex = diagramIndex; + } + + /** * shiftを取得する。 * * @return shift @@ -74,7 +85,7 @@ RootModel rootModel = editor.getRootModel(); DiagramPresentations diagramPresentations = rootModel.getAdapter(DiagramPresentations.class); - DiagramPresentationModel presentation = diagramPresentations.get(Migration.DIAGRAM_INDEX); + DiagramPresentationModel presentation = diagramPresentations.get(diagramIndex); for (NodeAdapter node : presentation.getFigureProfiles().keySet()) { // エンティティの移動 NodeProfile nodeProfile = presentation.getFigureProfiles().get(node); Modified: vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/ChangeNodeColorCommand.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/ChangeNodeColorCommand.java 2009-03-09 12:38:30 UTC (rev 2852) +++ vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/ChangeNodeColorCommand.java 2009-03-09 12:58:03 UTC (rev 2853) @@ -20,7 +20,6 @@ import org.eclipse.gef.commands.Command; -import org.jiemamy.Migration; import org.jiemamy.facade.JiemamyViewFacade; import org.jiemamy.facade.JiemamyViewFacadeImpl; import org.jiemamy.facade.SavePoint; @@ -35,6 +34,9 @@ */ public class ChangeNodeColorCommand extends Command { + /** ダイアグラムエディタのインデックス(エディタ内のタブインデックス) */ + private int diagramIndex; + private NodeAdapter nodeAdapter; private JmColor newColor; @@ -48,10 +50,12 @@ * インスタンスを生成する。 * * @param rootModel + * @param diagramIndex ダイアグラムエディタのインデックス(エディタ内のタブインデックス) * @param nodeAdapter 変更対象のエンティティ * @param newColor newColor */ - public ChangeNodeColorCommand(RootModel rootModel, NodeAdapter nodeAdapter, JmColor newColor) { + public ChangeNodeColorCommand(RootModel rootModel, int diagramIndex, NodeAdapter nodeAdapter, JmColor newColor) { + this.diagramIndex = diagramIndex; this.nodeAdapter = nodeAdapter; this.newColor = newColor; @@ -61,7 +65,7 @@ @Override public void execute() { save = jiemamyFacade.save(); - jiemamyFacade.changeNodeColor(Migration.DIAGRAM_INDEX, nodeAdapter, newColor); + jiemamyFacade.changeNodeColor(diagramIndex, nodeAdapter, newColor); } @Override Modified: vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/ChangeNodeConstraintCommand.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/ChangeNodeConstraintCommand.java 2009-03-09 12:38:30 UTC (rev 2852) +++ vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/ChangeNodeConstraintCommand.java 2009-03-09 12:58:03 UTC (rev 2853) @@ -27,7 +27,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.jiemamy.Migration; import org.jiemamy.eclipse.utils.ConvertUtil; import org.jiemamy.facade.JiemamyViewFacade; import org.jiemamy.facade.JiemamyViewFacadeImpl; @@ -80,11 +79,12 @@ */ public ChangeNodeConstraintCommand(RootModel rootModel, int diagramIndex, NodeAdapter nodeAdapter, JmRectangle boundary, EditPartViewer viewer) { + super(diagramIndex); this.rootModel = rootModel; this.diagramIndex = diagramIndex; this.nodeAdapter = nodeAdapter; DiagramPresentations diagramPresentations = rootModel.getAdapter(DiagramPresentations.class); - DiagramPresentationModel presentationModel = diagramPresentations.get(Migration.DIAGRAM_INDEX); + DiagramPresentationModel presentationModel = diagramPresentations.get(diagramIndex); oldBoundary = presentationModel.getFigureProfiles().get(nodeAdapter).getBoundary(); this.boundary = boundary; this.viewer = viewer; @@ -117,7 +117,7 @@ save = jiemamyFacade.save(); // 本体の移動 - jiemamyFacade.changeNodeBoundary(Migration.DIAGRAM_INDEX, nodeAdapter, boundary); + jiemamyFacade.changeNodeBoundary(diagramIndex, nodeAdapter, boundary); // ベンドポイントの移動 shiftBendpoints(false); @@ -147,7 +147,7 @@ for (ConnectionAdapter connection : nodeAdapter.getSourceConnections()) { if (selectedModels.contains(connection.getSource()) && selectedModels.contains(connection.getTarget())) { DiagramPresentations diagramPresentations = rootModel.getAdapter(DiagramPresentations.class); - DiagramPresentationModel presentationModel = diagramPresentations.get(Migration.DIAGRAM_INDEX); + DiagramPresentationModel presentationModel = diagramPresentations.get(diagramIndex); List<JmPoint> bendpoints = presentationModel.getConnectionProfiles().get(connection).getBendpoints(); for (JmPoint bendpoint : bendpoints) { if (positive) { Modified: vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/CreateBendpointCommand.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/CreateBendpointCommand.java 2009-03-09 12:38:30 UTC (rev 2852) +++ vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/CreateBendpointCommand.java 2009-03-09 12:58:03 UTC (rev 2853) @@ -20,7 +20,6 @@ import org.eclipse.draw2d.geometry.Point; -import org.jiemamy.Migration; import org.jiemamy.eclipse.utils.ConvertUtil; import org.jiemamy.facade.JiemamyViewFacade; import org.jiemamy.facade.JiemamyViewFacadeImpl; @@ -40,25 +39,33 @@ private Point location; - private int index; + /** source側からtarget側に向かって数えたベンドポイントのインデックス */ + private int bendpointIndex; private JiemamyViewFacade jiemamyFacade; private SavePoint save; + /** ダイアグラムエディタのインデックス(エディタ内のタブインデックス) */ + private int diagramIndex; + /** * インスタンスを生成する。 * * @param rootModel + * @param diagramIndex ダイアグラムエディタのインデックス(エディタ内のタブインデックス) * @param connectionAdapter ベンドポイント追加対象のrelation - * @param location ベンドポイントの位置 - * @param index ベンドポイントのindex + * @param location ベンドポイントの座標 + * @param bendpointIndex source側からtarget側に向かって数えたベンドポイントのインデックス */ - public CreateBendpointCommand(RootModel rootModel, ConnectionAdapter connectionAdapter, Point location, int index) { + public CreateBendpointCommand(RootModel rootModel, int diagramIndex, ConnectionAdapter connectionAdapter, + Point location, int bendpointIndex) { + super(diagramIndex); + this.diagramIndex = diagramIndex; this.connectionAdapter = connectionAdapter; this.location = location; - this.index = index; + this.bendpointIndex = bendpointIndex; // 移動量の計算 int shiftX = location.x < 0 ? Math.abs(location.x) : 0; @@ -71,7 +78,7 @@ @Override public void execute() { save = jiemamyFacade.save(); - jiemamyFacade.addBendpoint(Migration.DIAGRAM_INDEX, connectionAdapter, index, ConvertUtil.convert(location)); + jiemamyFacade.addBendpoint(diagramIndex, connectionAdapter, bendpointIndex, ConvertUtil.convert(location)); shiftPosition(false); } Modified: vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/CreateConnectionCommand.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/CreateConnectionCommand.java 2009-03-09 12:38:30 UTC (rev 2852) +++ vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/CreateConnectionCommand.java 2009-03-09 12:58:03 UTC (rev 2853) @@ -26,7 +26,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.jiemamy.Migration; import org.jiemamy.eclipse.JiemamyUIPlugin; import org.jiemamy.exception.ElementNotFoundException; import org.jiemamy.facade.JiemamyViewFacade; @@ -54,6 +53,9 @@ /** 接続元ノード */ private NodeAdapter source; + /** ダイアグラムエディタのインデックス(エディタ内のタブインデックス) */ + private int diagramIndex; + /** 接続先ノード */ private NodeAdapter target; @@ -73,9 +75,11 @@ * インスタンスを生成する。 * * @param rootModel + * @param diagramIndex ダイアグラムエディタのインデックス(エディタ内のタブインデックス) * @param connection 作成するコネクションモデル */ - public CreateConnectionCommand(RootModel rootModel, ConnectionAdapter connection) { + public CreateConnectionCommand(RootModel rootModel, int diagramIndex, ConnectionAdapter connection) { + this.diagramIndex = diagramIndex; this.connection = connection; jiemamyFacade = new JiemamyViewFacadeImpl(rootModel.getJiemamy()); @@ -143,7 +147,7 @@ TableModel sourceTable = (TableModel) source.unwrap(); TableModel targetTable = (TableModel) target.unwrap(); save = jiemamyFacade.save(); - jiemamyFacade.createConnection(Migration.DIAGRAM_INDEX, connection, sourceTable, targetTable); + jiemamyFacade.createConnection(diagramIndex, connection, sourceTable, targetTable); } else { // TODO wrapping connectionしか対応していない。 } Modified: vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/CreateNodeCommand.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/CreateNodeCommand.java 2009-03-09 12:38:30 UTC (rev 2852) +++ vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/CreateNodeCommand.java 2009-03-09 12:58:03 UTC (rev 2853) @@ -23,7 +23,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.jiemamy.Migration; import org.jiemamy.eclipse.utils.ConvertUtil; import org.jiemamy.facade.JiemamyViewFacade; import org.jiemamy.facade.JiemamyViewFacadeImpl; @@ -40,7 +39,8 @@ private static Logger logger = LoggerFactory.getLogger(CreateNodeCommand.class); - private RootModel rootModel; + /** ダイアグラムエディタのインデックス(エディタ内のタブインデックス) */ + private final int diagramIndex; private NodeAdapter nodeAdapter; @@ -55,11 +55,12 @@ * インスタンスを生成する。 * * @param rootModel 作成ノードの親モデル + * @param diagramIndex ダイアグラムエディタのインデックス(エディタ内のタブインデックス) * @param nodeAdapter 作成するノード * @param rectangle 作成する位置サイズ */ - public CreateNodeCommand(RootModel rootModel, NodeAdapter nodeAdapter, Rectangle rectangle) { - this.rootModel = rootModel; + public CreateNodeCommand(RootModel rootModel, int diagramIndex, NodeAdapter nodeAdapter, Rectangle rectangle) { + this.diagramIndex = diagramIndex; this.nodeAdapter = nodeAdapter; this.rectangle = rectangle; @@ -70,7 +71,7 @@ public void execute() { if (nodeAdapter.unwrap() != null) { savePoint = jiemamyFacade.save(); - jiemamyFacade.addEntity(Migration.DIAGRAM_INDEX, nodeAdapter, ConvertUtil.convert(rectangle)); + jiemamyFacade.addEntity(diagramIndex, nodeAdapter, ConvertUtil.convert(rectangle)); } else { logger.debug("EntityModel以外は未実装状態"); } Modified: vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/DeleteBendpointCommand.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/DeleteBendpointCommand.java 2009-03-09 12:38:30 UTC (rev 2852) +++ vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/DeleteBendpointCommand.java 2009-03-09 12:58:03 UTC (rev 2853) @@ -20,7 +20,6 @@ import org.eclipse.gef.commands.Command; -import org.jiemamy.Migration; import org.jiemamy.facade.JiemamyViewFacade; import org.jiemamy.facade.JiemamyViewFacadeImpl; import org.jiemamy.facade.SavePoint; @@ -34,6 +33,9 @@ */ public class DeleteBendpointCommand extends Command { + /** ダイアグラムエディタのインデックス(エディタ内のタブインデックス) */ + private int diagramIndex; + /** 削除元のコネクション */ private ConnectionAdapter connectionAdapter; @@ -48,10 +50,13 @@ /** * インスタンスを生成する。 * @param rootModel + * @param diagramIndex ダイアグラムエディタのインデックス(エディタ内のタブインデックス) * @param connectionAdapter ベンドポイント削除対象のコネクション * @param bendpointIndex source側からtarget側に向かって数えたベンドポイントのインデックス */ - public DeleteBendpointCommand(RootModel rootModel, ConnectionAdapter connectionAdapter, int bendpointIndex) { + public DeleteBendpointCommand(RootModel rootModel, int diagramIndex, ConnectionAdapter connectionAdapter, + int bendpointIndex) { + this.diagramIndex = diagramIndex; this.connectionAdapter = connectionAdapter; this.bendpointIndex = bendpointIndex; @@ -61,7 +66,7 @@ @Override public void execute() { save = jiemamyFacade.save(); - jiemamyFacade.removeBendpoint(Migration.DIAGRAM_INDEX, connectionAdapter, bendpointIndex); + jiemamyFacade.removeBendpoint(diagramIndex, connectionAdapter, bendpointIndex); } @Override Modified: vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/DirectEditNodeCommand.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/DirectEditNodeCommand.java 2009-03-09 12:38:30 UTC (rev 2852) +++ vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/DirectEditNodeCommand.java 2009-03-09 12:58:03 UTC (rev 2853) @@ -54,7 +54,7 @@ private JiemamyViewFacade jiemamyFacade; - private SavePoint save; + private SavePoint savePoint; /** @@ -71,17 +71,17 @@ EntityModel entityModel = nodeAdapter.unwrap(); if (entityModel != null) { if (displayStatus.getMode() == Mode.PHYSICAL) { - save = jiemamyFacade.save(); + savePoint = jiemamyFacade.save(); jiemamyFacade.changeModelProperty(entityModel, EntityProperty.name, newValue); } else if (displayStatus.getMode() == Mode.LOGICAL) { - save = jiemamyFacade.save(); + savePoint = jiemamyFacade.save(); jiemamyFacade.changeModelProperty(entityModel, EntityProperty.logicalName, newValue); } else { JiemamyUIPlugin.log("想定外のenum要素", Status.ERROR); } } else if (nodeAdapter instanceof StickyModel) { StickyModel stickyModel = (StickyModel) nodeAdapter; - save = jiemamyFacade.save(); + savePoint = jiemamyFacade.save(); jiemamyFacade.changeModelProperty(stickyModel, StickyProperty.contents, newValue); } else { throw new IllegalImplementationException(nodeAdapter, "Unknown node: " + nodeAdapter.getClass()); @@ -119,18 +119,6 @@ @Override public void undo() { - if (nodeAdapter instanceof EntityModel) { - if (displayStatus.getMode() == Mode.PHYSICAL) { - jiemamyFacade.rollback(save); - } else if (displayStatus.getMode() == Mode.LOGICAL) { - jiemamyFacade.rollback(save); - } else { - JiemamyUIPlugin.log("想定外のenum要素", Status.ERROR); - } - } else if (nodeAdapter instanceof StickyModel) { - jiemamyFacade.rollback(save); - } else { - throw new IllegalImplementationException(nodeAdapter, "Unknown node"); - } + jiemamyFacade.rollback(savePoint); } } Modified: vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/MoveBendpointCommand.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/MoveBendpointCommand.java 2009-03-09 12:38:30 UTC (rev 2852) +++ vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/command/MoveBendpointCommand.java 2009-03-09 12:58:03 UTC (rev 2853) @@ -20,13 +20,10 @@ import org.eclipse.draw2d.geometry.Point; -import org.jiemamy.Migration; import org.jiemamy.eclipse.utils.ConvertUtil; import org.jiemamy.facade.JiemamyViewFacade; import org.jiemamy.facade.JiemamyViewFacadeImpl; -import org.jiemamy.model.ConnectionProfile; -import org.jiemamy.model.DiagramPresentationModel; -import org.jiemamy.model.DiagramPresentations; +import org.jiemamy.facade.SavePoint; import org.jiemamy.model.RootModel; import org.jiemamy.model.connection.ConnectionAdapter; import org.jiemamy.model.geometory.JmPoint; @@ -40,8 +37,7 @@ private ConnectionAdapter connectionAdapter; - private Point oldLocation; - + /** ベンドポイントの移動先座標 */ private Point newLocation; /** source側からtarget側に向かって数えたベンドポイントのインデックス */ @@ -49,24 +45,26 @@ private JiemamyViewFacade jiemamyFacade; + private SavePoint savePoint; + + private int diagramIndex; + /** * インスタンスを生成する。 * * @param rootModel + * @param diagramIndex * @param connectionAdapter 操作対象のコネクション - * @param newLocation 新しい位置 + * @param newLocation 新しい座標 * @param bendpointIndex source側からtarget側に向かって数えたベンドポイントのインデックス */ - public MoveBendpointCommand(RootModel rootModel, ConnectionAdapter connectionAdapter, int bendpointIndex, - Point newLocation) { - DiagramPresentations diagramPresentations = rootModel.getAdapter(DiagramPresentations.class); - DiagramPresentationModel presentation = diagramPresentations.get(Migration.DIAGRAM_INDEX); - ConnectionProfile connectionProfile = presentation.getConnectionProfiles().get(connectionAdapter); - + public MoveBendpointCommand(RootModel rootModel, int diagramIndex, ConnectionAdapter connectionAdapter, + int bendpointIndex, Point newLocation) { + super(diagramIndex); + this.diagramIndex = diagramIndex; this.connectionAdapter = connectionAdapter; this.bendpointIndex = bendpointIndex; - oldLocation = ConvertUtil.convert(connectionProfile.getBendpoints().get(bendpointIndex)); this.newLocation = newLocation; int shiftX = newLocation.x < 0 ? Math.abs(newLocation.x) : 0; @@ -78,15 +76,14 @@ @Override public void execute() { - jiemamyFacade.moveBendpoint(Migration.DIAGRAM_INDEX, connectionAdapter, bendpointIndex, ConvertUtil - .convert(newLocation)); + savePoint = jiemamyFacade.save(); + jiemamyFacade.moveBendpoint(diagramIndex, connectionAdapter, bendpointIndex, ConvertUtil.convert(newLocation)); shiftPosition(false); } @Override public void undo() { shiftPosition(true); - jiemamyFacade.moveBendpoint(Migration.DIAGRAM_INDEX, connectionAdapter, bendpointIndex, ConvertUtil - .convert(oldLocation)); + jiemamyFacade.rollback(savePoint); } } Modified: vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/editpolicy/JmBendpointEditPolicy.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/editpolicy/JmBendpointEditPolicy.java 2009-03-09 12:38:30 UTC (rev 2852) +++ vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/editpolicy/JmBendpointEditPolicy.java 2009-03-09 12:58:03 UTC (rev 2853) @@ -23,6 +23,7 @@ import org.eclipse.gef.editpolicies.BendpointEditPolicy; import org.eclipse.gef.requests.BendpointRequest; +import org.jiemamy.Migration; import org.jiemamy.eclipse.editor.command.CreateBendpointCommand; import org.jiemamy.eclipse.editor.command.DeleteBendpointCommand; import org.jiemamy.eclipse.editor.command.MoveBendpointCommand; @@ -45,7 +46,7 @@ ConnectionAdapter connection = (ConnectionAdapter) getHost().getModel(); ForeignKey foreignKey = connection.unwrap(); RootModel rootModel = foreignKey.getJiemamy().getFactory().getRootModel(); - return new CreateBendpointCommand(rootModel, connection, point, request.getIndex()); + return new CreateBendpointCommand(rootModel, Migration.DIAGRAM_INDEX, connection, point, request.getIndex()); } @@ -54,7 +55,7 @@ ConnectionAdapter connection = (ConnectionAdapter) getHost().getModel(); ForeignKey foreignKey = connection.unwrap(); RootModel rootModel = foreignKey.getJiemamy().getFactory().getRootModel(); - return new DeleteBendpointCommand(rootModel, connection, request.getIndex()); + return new DeleteBendpointCommand(rootModel, Migration.DIAGRAM_INDEX, connection, request.getIndex()); } @Override @@ -64,6 +65,6 @@ getConnection().translateToRelative(location); ConnectionAdapter connection = (ConnectionAdapter) getHost().getModel(); - return new MoveBendpointCommand(rootModel, connection, request.getIndex(), location); + return new MoveBendpointCommand(rootModel, Migration.DIAGRAM_INDEX, connection, request.getIndex(), location); } } Modified: vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/editpolicy/JmGraphicalNodeEditPolicy.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/editpolicy/JmGraphicalNodeEditPolicy.java 2009-03-09 12:38:30 UTC (rev 2852) +++ vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/editpolicy/JmGraphicalNodeEditPolicy.java 2009-03-09 12:58:03 UTC (rev 2853) @@ -23,6 +23,7 @@ import org.eclipse.gef.requests.CreateConnectionRequest; import org.eclipse.gef.requests.ReconnectRequest; +import org.jiemamy.Migration; import org.jiemamy.eclipse.editor.command.CreateConnectionCommand; import org.jiemamy.model.JiemamyElement; import org.jiemamy.model.RootModel; @@ -47,8 +48,8 @@ protected Command getConnectionCreateCommand(CreateConnectionRequest request) { JiemamyElement model = (JiemamyElement) request.getNewObject(); RootModel rootModel = (RootModel) getHost().getRoot().getContents().getModel(); - CreateConnectionCommand command = - new CreateConnectionCommand(rootModel, model.getAdapter(ConnectionAdapter.class)); + ConnectionAdapter connection = model.getAdapter(ConnectionAdapter.class); + CreateConnectionCommand command = new CreateConnectionCommand(rootModel, Migration.DIAGRAM_INDEX, connection); command.setSource((NodeAdapter) getHost().getModel()); command.setFigureSize(getHostFigure().getSize()); request.setStartCommand(command); Modified: vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/editpolicy/JmLayoutEditPolicy.java =================================================================== --- vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/editpolicy/JmLayoutEditPolicy.java 2009-03-09 12:38:30 UTC (rev 2852) +++ vesta/trunk/org.jiemamy.eclipse.ui/src/main/java/org/jiemamy/eclipse/editor/editpolicy/JmLayoutEditPolicy.java 2009-03-09 12:58:03 UTC (rev 2853) @@ -73,7 +73,7 @@ node = stickyModel; } - return new CreateNodeCommand(rootModel, node, (Rectangle) getConstraintFor(request)); + return new CreateNodeCommand(rootModel, Migration.DIAGRAM_INDEX, node, (Rectangle) getConstraintFor(request)); } @Override