diff --git a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/actions/NewFormulaChannelAction.java b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/actions/NewFormulaChannelAction.java new file mode 100644 index 0000000..b87f5eb --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/actions/NewFormulaChannelAction.java @@ -0,0 +1,36 @@ +package graphicalrefactor.actions; + +import java.awt.BorderLayout; +import java.awt.Container; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; + +import graphicalrefactor.editor.Editor; +import models.visualModel.FormulaChannelGenerator; + +public class NewFormulaChannelAction extends AbstractEditorAction implements ActionListener { + + /** + * + */ + private static final long serialVersionUID = 5345875219049178252L; + + public NewFormulaChannelAction(Editor editor) { + super("FormulaChannel...", editor); + } + + @Override + public void actionPerformed(ActionEvent e) { + String channelName = JOptionPane.showInputDialog("FormulaChannel Name:"); + String symbol = JOptionPane.showInputDialog("symbol"); + if (channelName == null|| symbol == null) return; + editor.addFormulaChannelGenerator(new FormulaChannelGenerator(channelName, editor.getModel().getSymbol(symbol))); + } + +} diff --git a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/Editor.java b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/Editor.java index 2aca6a3..b07cd6c 100644 --- a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/Editor.java +++ b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/Editor.java @@ -37,6 +37,7 @@ import models.dataFlowModel.ResourceDependency; import models.dataFlowModel.ResourceDependencyGraph; import models.dataFlowModel.ResourceNode; +import models.visualModel.FormulaChannelGenerator; import parser.ExpectedAssignment; import parser.ExpectedChannel; import parser.ExpectedChannelName; @@ -368,6 +369,32 @@ graph.getModel().endUpdate(); } } + + public void addFormulaChannelGenerator(FormulaChannelGenerator formulaChannelGen) { + getModel().addChannelGenerator(formulaChannelGen); + resetResourceDependencyGraph(); + graph.getModel().beginUpdate(); + Object parent = graph.getDefaultParent(); + try { + mxGeometry geo1 = new mxGeometry(0, 0.5, PORT_DIAMETER, PORT_DIAMETER); + geo1.setOffset(new mxPoint(-PORT_RADIUS, -PORT_RADIUS)); + geo1.setRelative(true); + + mxGeometry geo2 = new mxGeometry(1.0, 0.5, PORT_DIAMETER, PORT_DIAMETER); + geo2.setOffset(new mxPoint(-PORT_RADIUS, -PORT_RADIUS)); + geo2.setRelative(true); + + Object channel = graph.insertVertex(parent, null, formulaChannelGen.getChannelName(), 150, 20, 30, 30); // insert a channel as a vertex + mxCell port_in = new mxCell(null, geo1, "shape=ellipse;perimter=ellipsePerimeter"); + port_in.setVertex(true); + graph.addCell(port_in, channel); // insert the input port of a channel + mxCell port_out = new mxCell(null, geo2, "shape=ellipse;perimter=ellipsePerimeter"); + port_out.setVertex(true); + graph.addCell(port_out, channel); // insert the output port of a channel + } finally { + graph.getModel().endUpdate(); + } + } public boolean connectEdge(mxCell edge, mxCell src, mxCell dst) { DataFlowModel model = getModel(); diff --git a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/views/GraphicalRefactorMenuBar.java b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/views/GraphicalRefactorMenuBar.java index ed54e48..43ab6ca 100644 --- a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/views/GraphicalRefactorMenuBar.java +++ b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/views/GraphicalRefactorMenuBar.java @@ -10,6 +10,7 @@ import graphicalrefactor.actions.JavaPrototypeGenerateAction; import graphicalrefactor.actions.JerseyPrototypeGenerateAction; import graphicalrefactor.actions.NewChannelAction; +import graphicalrefactor.actions.NewFormulaChannelAction; import graphicalrefactor.actions.NewIOChannelAction; import graphicalrefactor.actions.NewModelAction; import graphicalrefactor.actions.NewResourceAction; @@ -27,6 +28,7 @@ private NewResourceAction newResourceAction = null; private NewChannelAction newChannelAction = null; private NewIOChannelAction newIOChannelAction = null; + private NewFormulaChannelAction newFormulaChannelAction = null; private DeleteAction deleteAction = null; private JavaPrototypeGenerateAction javaPrototypeGenerateAction = null; private JerseyPrototypeGenerateAction jerseyPrototypeGenerateAction = null; @@ -40,6 +42,7 @@ newMenu.add(newResourceAction = new NewResourceAction(graphicalModelRefactor.getEditor())); newMenu.add(newChannelAction = new NewChannelAction(graphicalModelRefactor.getEditor())); newMenu.add(newIOChannelAction = new NewIOChannelAction(graphicalModelRefactor.getEditor())); + newMenu.add(newFormulaChannelAction = new NewFormulaChannelAction(graphicalModelRefactor.getEditor())); JMenu menu = null; menu = add(new JMenu("File")); menu.add(newMenu);