@Override public void setElementColors(MouseEvent e, Map<Element, Color> elementColors) { Point clickedPoint = getClickedPoint(e); Element targetElement = getClickedElement(clickedPoint); Marking currentMarking = PNEditor.getInstance().getDocument().getPetriNet().getMarking(); if (PNEditor.getInstance().getToolSelector().isSelectedTool_Fire()) { if (targetElement instanceof Transition) { if (currentMarking.isEnabled((Transition) targetElement)) { elementColors.put(targetElement, Color.green); } else { elementColors.put(targetElement, Color.red); } } } }
public void drawForeground(Graphics g) { Marking currentMarking = PNEditor.getInstance().getDocument().getPetriNet().getMarking(); if (PNEditor.getInstance().getToolSelector().isSelectedTool_Fire()) { for (Element element : PNEditor.getInstance().getDocument().getPetriNet()) { if (element instanceof Transition) { Transition transition = (Transition) element; if (currentMarking.isEnabled(transition)) { g.setColor(Color.green); } else { g.setColor(Color.red); } ((Graphics2D) g).setStroke(new BasicStroke(2f)); g.drawRect( transition.getStart().getX() + 1, transition.getStart().getY() + 1, transition.getWidth() - 3, transition.getHeight() - 3); ((Graphics2D) g).setStroke(new BasicStroke(1f)); } } } }
public void mousePressed(MouseEvent e) { Point clickedPoint = getClickedPoint(e); Element clickedElement = getClickedElement(clickedPoint); Marking currentmarking = PNEditor.getInstance().getDocument().getPetriNet().getMarking(); if (PNEditor.getInstance().getToolSelector().isSelectedTool_Fire()) { if (clickedElement instanceof Transition) { Transition transition = (Transition) clickedElement; if (e.getButton() == MouseEvent.BUTTON1) { if (currentmarking.isEnabled(transition)) { if (!simulationInProgress) { simulationInProgress = true; oldMarking = new Marking(currentmarking); if (canvas.isLogging) { newTrace = canvas.newTrace; } } // new event if (canvas.isLogging) { String resource = ""; String time = ""; String name = "UNDEFINED"; String[] resources = new String[100]; if (transition.getProperties().getFilteredByClass(RoleProperty.class).size() == 0) { resource = "UNDEFINED"; } if (transition.getProperties().getFilteredByClass(RoleProperty.class).size() == 1) { resource = transition .getProperties() .getFilteredByClass(RoleProperty.class) .get(0) .getRoleId(); } if (transition.getProperties().getFilteredByClass(RoleProperty.class).size() > 1) { int i = 0; for (RoleProperty proprol : transition.getProperties().getFilteredByClass(RoleProperty.class)) { resources[i] = proprol.getRoleId(); i++; } resource = (String) JOptionPane.showInputDialog( null, "Choose role for transition", "Roles for transition", JOptionPane.QUESTION_MESSAGE, null, resources, resources[0]); } if (resource == null) { resource = "UNDEFINED"; } SimpleDateFormat ISO8601Local = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); Date now = new Date(); time = ISO8601Local.format(now); if (!transition.getLabel().getText().isEmpty()) { name = transition.getLabel().getText().toString(); } event = new XESEvent(name, time, resource, "complete"); newTrace.addEventToTrace(event); PNEditor.getInstance() .getMainFrame() .infolog .setText( "Event added --- event properies : name=" + name + " time=" + time + " resource=" + resource + " lifecycle=complete"); } // new event currentmarking.fire(transition); canvas.repaint(); } } } if (clickedElement == null) { if (e.getButton() == MouseEvent.BUTTON3) { if (simulationInProgress) { simulationInProgress = false; PNEditor.getInstance().getDocument().getPetriNet().setMarking(oldMarking); canvas.repaint(); } else { PNEditor.getInstance().getToolSelector().selectTool_Select(); // new trace if (canvas.isLogging) { canvas.logtable.addTraceToLog(newTrace); newTrace = null; canvas.logtable.show(); canvas.setIsLogging(false); PNEditor.getInstance().getMainFrame().panel.setVisible(false); PNEditor.getInstance().getMainFrame().panel.repaint(); } // new trace } } } } }