diff --git a/AlgebraicDataflowArchitectureModel/src/application/simulator/InputEventCellEditor.java b/AlgebraicDataflowArchitectureModel/src/application/simulator/InputEventCellEditor.java index 82f6fe3..ce047c7 100644 --- a/AlgebraicDataflowArchitectureModel/src/application/simulator/InputEventCellEditor.java +++ b/AlgebraicDataflowArchitectureModel/src/application/simulator/InputEventCellEditor.java @@ -105,24 +105,24 @@ if (!graphComponent.getGraph().getModel().isEdge(cell)) { Resource res = simulator.getCurState().getResource((String) ((mxCell) cell).getValue()); - ResourceIdentifier resId = res.getResourceIdentifier();//resource - ArrayList eventChs = new ArrayList<>();//iOchannelList - ArrayList messages = new ArrayList<>();//ADLmessage - ArrayList eventMessages = new ArrayList<>();//messageList + ResourceIdentifier resId = res.getResourceIdentifier(); // clicked resource + ArrayList eventChs = new ArrayList<>(); // eventchannelList + ArrayList messages = new ArrayList<>(); // ADLmessage + ArrayList eventMessages = new ArrayList<>(); // messageList ResourcePath eventResPath = null; - for (Channel ch: simulator.getModel().getInputChannels()) {//all channel + for (Channel ch: simulator.getModel().getInputChannels()) { // all channels eventResPath = getSelectableMessages(ch, resId, eventChs, messages, eventMessages, eventResPath); } - if(messages.isEmpty()) { + if (messages.isEmpty()) { return; } String[] eventList = messages.toArray(new String[messages.size()]); JComboBox event = new JComboBox(eventList); JPanel eventChoice = new JPanel(); - eventChoice.add(event);//FirstEventChoice + eventChoice.add(event); // FirstEventChoice int ret = JOptionPane.showConfirmDialog(window, eventChoice, "Event Choice", JOptionPane.OK_CANCEL_OPTION); if (ret == JOptionPane.OK_OPTION) { @@ -131,14 +131,14 @@ int i , eventNum; i = eventNum = 0; - for(String eventString : eventList) { + for (String eventString : eventList) { if(eventString.equals(event.getSelectedItem().toString())) { eventNum = i; } i++; } - JTextArea textArea = new JTextArea(eventMessages.get(eventNum).toString(), 10, 30);//EventInput + JTextArea textArea = new JTextArea(eventMessages.get(eventNum).toString(), 10, 30); // EventInput inputEvent.add(textArea); int approve = JOptionPane.showConfirmDialog(window, inputEvent, "Event Code", JOptionPane.OK_CANCEL_OPTION); @@ -148,14 +148,11 @@ TokenStream stream = new Parser.TokenStream(); Parser parser = new Parser(stream); stream.addLine(textArea.getText()); - Expression eventMessage = parser.parseTerm(stream,simulator.getModel()); + Expression eventMessage = parser.parseTerm(stream, simulator.getModel()); Event newEvent = new Event(eventChs.get(eventNum), eventMessage, eventResPath, simulator.getCurState().getResource(resId)); simulator.transition(newEvent); -// SimulationLayout layout = new SimulationLayout(simulator.getCurState()); -// layout.constructSimulateGraph(graph, simulator); - graphComponent.setCellEditor(new InputEventCellEditor(window, graphComponent, simulator, this.editor)); } catch (ParameterizedIdentifierIsFutureWork | ResolvingMultipleDefinitionIsFutureWork @@ -164,8 +161,8 @@ } } } - //resource - return; + // resource + return; } mxCellState state = graphComponent.getGraph().getView().getState(cell); @@ -191,21 +188,32 @@ private ResourcePath getSelectableMessages(Channel ch, ResourceIdentifier resId, ArrayList eventChs, ArrayList messages, ArrayList eventMessages, ResourcePath eventResPath) { - if (((DataTransferChannel)ch).getInputResources().size() == 0) {//ioch Or normalch - for (ChannelMember out: ((DataTransferChannel)ch).getOutputChannelMembers()) { + if (((DataTransferChannel) ch).getInputResources().size() == 0) { // event ch or normal ch + for (ChannelMember out: ((DataTransferChannel) ch).getOutputChannelMembers()) { ResourcePath resPath = out.getResource(); - if (!out.isOutside() && resId.isInstanceOf(resPath)) {//account.uid == acounts.123 + if (!out.isOutside() && resId.isInstanceOf(resPath)) { // account.uid == acounts.123 eventResPath = resPath; - eventChs.add(((DataTransferChannel)ch)); + eventChs.add(((DataTransferChannel) ch)); String message = null; - Expression mesExp = out.getStateTransition().getMessageExpression();//sync(a,b) - eventMessages.add(mesExp); + Expression mesExp = out.getStateTransition().getMessageExpression(); if (mesExp instanceof Term) { - message = ((Term) mesExp).getSymbol().toString();//sync + List pathParams = resPath.getPathParams(); + List children = ((Term) mesExp).getChildren(); + mesExp = new Term(((Term) mesExp).getSymbol()); + for (Expression child: children) { + if (!pathParams.contains(child)) { + ((Term) mesExp).addChild(child); + } else { + int idx = pathParams.indexOf(child); + ((Term) mesExp).addChild(resId.getPathParams().get(idx)); + } + } + message = ((Term) mesExp).getSymbol().toString(); } else if(mesExp instanceof Variable) { - message = ((Variable) mesExp).getName();//x,y,z.. + message = ((Variable) mesExp).getName(); } - messages.add(message);//pulldown + eventMessages.add(mesExp); + messages.add(message); // for the pull-down menu } } for (Channel childCh: ch.getChildren()) { @@ -215,57 +223,6 @@ return eventResPath; } -// private mxGraph constructNextSimulateGraph(Set simulateRes, DataTransferModel model,DataFlowGraph dataFlowGraph, mxGraph nextGraph) { -// bReflectingArchitectureModel = true; -// ((mxGraphModel) nextGraph.getModel()).clear(); -// Object parent = nextGraph.getDefaultParent(); -// nextGraph.getModel().beginUpdate(); -// -// try { -// Map resources = new HashMap<>(); -// -// // create resource vertices -// for (Resource resNode: simulateRes) { -// int w = 400; -// int h = 150; -// ResourcePath res = resNode.getResourceIdentifier(); -// Object resource = nextGraph.insertVertex(parent, null, -// res.toString(), x, y, w, h, -// "shape=ellipse;perimeter=ellipsePerimeter;verticalAlign=top;"); // insert a resource as a vertex -// resources.put(resNode, resource); -// -// createNextChildSimulateResourceVerticies(resource, resNode, resources, w, h); -// x+=400; -// } -// -// } finally { -// nextGraph.getModel().endUpdate(); -// } -// -// bReflectingArchitectureModel = false; -// return nextGraph; -// } -// -// private void createNextChildSimulateResourceVerticies(Object resource, Resource resNode, Map resources, int w, int h) { //sample -// -// if(resNode.getChildren() != null) { -// for (Resource childNode: resNode.getChildren()) { -// int i = 1; -// ResourcePath childRes = childNode.getResourceIdentifier(); -// Object childResource = graph.insertVertex(resource, null, -// childRes.toString(), x/i, 0, w/(i+1), h/(i+2), -// "shape=ellipse;perimeter=ellipsePerimeter;verticalAlign=top;"); // insert a resource as a vertex -// resources.put(childNode, childResource); -// i++; -// createNextChildSimulateResourceVerticies(childResource, childNode, resources, w, h); -// } -// } -// if (resNode.getChildren() == null || resNode.getChildren().size() == 0) { -// Object state = graph.insertVertex(resource, null, -// resNode.getState().getValue().toString(), 0.5, 0.5, 0.25, 0.25, "opacity=0;verticalAlign=down;", true); // insert a state label as a vertex -// } -// } - @Override public void stopEditing(boolean cancel) { if (editingCell != null) {