diff --git a/AlgebraicDataflowArchitectureModel/src/application/editor/stages/DependencyModelingStage.java b/AlgebraicDataflowArchitectureModel/src/application/editor/stages/DependencyModelingStage.java index 684f27f..ffebd73 100644 --- a/AlgebraicDataflowArchitectureModel/src/application/editor/stages/DependencyModelingStage.java +++ b/AlgebraicDataflowArchitectureModel/src/application/editor/stages/DependencyModelingStage.java @@ -4,40 +4,66 @@ import application.editor.Editor; import application.editor.FlowCellEditor; import application.editor.Stage; +import com.mxgraph.canvas.mxGraphics2DCanvas; import com.mxgraph.model.mxCell; import com.mxgraph.model.mxGeometry; import com.mxgraph.model.mxGraphModel; import com.mxgraph.model.mxGraphModel.mxTerminalChange; +import com.mxgraph.shape.mxBasicShape; import com.mxgraph.swing.mxGraphComponent; import com.mxgraph.util.mxEventSource.mxIEventListener; import com.mxgraph.util.mxPoint; +import com.mxgraph.util.mxUtils; +import com.mxgraph.view.mxCellState; import models.algebra.Expression; import models.dataConstraintModel.Channel; import models.dataConstraintModel.ChannelMember; import models.dataConstraintModel.ResourcePath; import models.dataConstraintModel.Selector; +import models.dataFlowModel.DataFlowGraph; import models.dataFlowModel.DataTransferChannel; import models.dataFlowModel.DataTransferModel; import models.dataFlowModel.ResourceNode; +import models.dependencyModel.DependencyFlowGraph; import models.visualModel.FormulaChannel; import parser.Parser; import parser.exceptions.*; +import java.awt.*; +import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; public class DependencyModelingStage extends Stage { public final int PORT_DIAMETER = 8; public final int PORT_RADIUS = PORT_DIAMETER / 2; + private DependencyFlowGraph dependencyFlowGraph = null; + + private List nodes = new ArrayList<>(); + + //-------------------------------------------------- + // コンストラクタ + //-------------------------------------------------- public DependencyModelingStage(mxGraphComponent graphComponent) { super(graphComponent); } @Override public void init(Stage prevStage) { + //ここのステージは最終的にControlFlowModelingステージの次にあたる + if (prevStage instanceof PushPullSelectionStage) { + model = ((PushPullSelectionStage) prevStage).getModel(); + + DataFlowGraph dataFlowGraph = ((PushPullSelectionStage) prevStage).getDataFlowGraph(); + + dependencyFlowGraph = new DependencyFlowGraph(dataFlowGraph, model); + //clearGraph(); + + } } @Override @@ -47,24 +73,7 @@ @Override public mxIEventListener createChangeEventListener(Editor editor) { - return (sender, event) -> { - List terminals = new ArrayList<>(); - mxCell cell = null; - for (Object change : ((List) event.getProperties().get("changes"))) { - if (change instanceof mxTerminalChange) { - mxTerminalChange terminalChange = (mxTerminalChange) change; - cell = (mxCell) terminalChange.getCell(); - mxCell terminal = (mxCell) terminalChange.getTerminal(); - terminals.add(terminal); - } - } - if (terminals.size() == 2) { - if (!editor.connectEdge(cell, terminals.get(0), terminals.get(1))) { - graph.removeCells(new mxCell[]{cell}); - graph.clearSelection(); - } - } - }; + return null; } @Override @@ -72,6 +81,7 @@ return null; } + @Override public boolean canChangeFrom(Stage prevStage) { return true;