@Override public void actionPerformed(ActionEvent e) { MainWindow w = MainWindowSingleton.getInstance(); String event = e.getActionCommand(); if ("colour".equals(event)) { // TODO fail due to old substance API / Bug in API Color newColor = JColorChooser.showDialog(w, "Choose Element Colour", getElementColor()); JButton b = ((JButton) e.getSource()); b.setBackground(newColor); ab.setColor(newColor); ab.setReference(false); ab.setHidden(false); ab.setVisible(true); // reference.setSelected(false); // updateReferences(false); } else if ("reference".equals(event)) { // TODO calculate References properly ab.setReference(reference.isSelected()); if (reference.isSelected()) { ab.setHidden(true); updateReferences(true); } else { ab.setHidden(false); updateReferences(false); } colorButton.setBackground(ab.getColor()); } else if ("pathwayLink".equals(event)) { if (JOptionPane.showConfirmDialog( w, "If you delete the PathwayLink the Sub-Pathway (with all eventually made changes within it) will be lost. Do you want to do this?", "Delete the Sub-Pathway...", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION && ab instanceof PathwayMap) { ((PathwayMap) ab).setPathwayLink(null); w.updateElementTree(); w.updatePathwayTree(); ab.setColor(Color.white); } w.updateElementProperties(); } else if (("hideNeighbours".equals(event) || ("showNeighbours".equals(event))) && ab instanceof BiologicalNodeAbstract) { // TODO visible wird noch nicht gehandelt in transformators Pathway pw = graphInstance.getPathway(); boolean hide = "hideNeighbours".equals(event); BiologicalNodeAbstract bna = (BiologicalNodeAbstract) ab; Iterator<BiologicalEdgeAbstract> it = pw.getGraph().getJungGraph().getIncidentEdges(bna).iterator(); BiologicalEdgeAbstract bea; while (it.hasNext()) { // System.out.println(!hide); bea = it.next(); bea.setVisible(!hide); // bea.setLabel(!hide+""); } Iterator<BiologicalNodeAbstract> it2 = pw.getGraph().getJungGraph().getNeighbors(bna).iterator(); BiologicalNodeAbstract node; while (it2.hasNext()) { // System.out.println("drin"); node = it2.next(); node.setVisible(!hide); node.setHidden(hide); } } else if ("dirChanger".equals(event) && ab.isEdge()) { Pathway pw = graphInstance.getPathway(); PNEdge edge = (PNEdge) ab; PNEdge newEdge = new PNEdge( edge.getTo(), edge.getFrom(), edge.getLabel(), edge.getName(), edge.getBiologicalElement(), edge.getFunction()); newEdge.setUpperBoundary(edge.getUpperBoundary()); newEdge.setLowerBoundary(edge.getLowerBoundary()); newEdge.setActivationProbability(edge.getActivationProbability()); newEdge.setDirected(true); // pw = graphInstance.getPathway(); MyGraph g = pw.getGraph(); g.getJungGraph().removeEdge(edge); // g.getEdgeStringer().removeEdge(edge.getEdge()); pw.removeElement(edge); pw.addEdge(newEdge); // g.getVisualizationViewer().getPickedState().clearPickedEdges(); graphInstance.setSelectedObject(newEdge); ab = newEdge; } else if ("chooseRef".equals(event)) { BiologicalNodeAbstract bna = (BiologicalNodeAbstract) original; ReferenceDialog dialog = new ReferenceDialog(bna); BiologicalNodeAbstract node = dialog.getAnswer(); if (node != null) { bna.setRef(node); this.revalidateView(); w.updateElementTree(); // System.out.println("node: "+node.getID()); } } else if ("deleteRef".equals(event)) { BiologicalNodeAbstract bna = (BiologicalNodeAbstract) original; bna.deleteRef(); this.revalidateView(); w.updateElementTree(); } else if ("pickOrigin".equals(event)) { BiologicalNodeAbstract bna = (BiologicalNodeAbstract) original; Pathway pw = graphInstance.getPathway(); pw = graphInstance.getPathway(); MyGraph g = pw.getGraph(); g.getVisualizationViewer().getPickedVertexState().pick(bna.getRef(), true); this.revalidateView(); } else if ("pickRefs".equals(event)) { BiologicalNodeAbstract bna = (BiologicalNodeAbstract) original; Pathway pw = graphInstance.getPathway(); pw = graphInstance.getPathway(); MyGraph g = pw.getGraph(); // System.out.println("c: "+g.getJungGraph().getVertexCount()); BiologicalNodeAbstract pick; Iterator<BiologicalNodeAbstract> it = bna.getRefs().iterator(); // System.out.println("size: "+bna.getRefs().size()); while (it.hasNext()) { pick = it.next(); // System.out.println(pick.getLabel()); // System.out.println(pick); g.getVisualizationViewer().getPickedVertexState().pick(pick, true); } // System.out.println(g.getVisualizationViewer().getPickedVertexState().getPicked().size()); this.revalidateView(); } else if ("showParameters".equals(event)) { // System.out.println("show parameters"); new ParameterWindow(ab); this.updateWindow(ab); p.revalidate(); } else if ("showLabels".equals(event)) { // System.out.println("click"); new LabelsWindow(ab); } else if ("knockedOut".equals(event)) { ((Transition) ab).setKnockedOut(knockedOut.isSelected()); this.updateWindow(ab); p.revalidate(); // p.repaint(); Pathway pw = new GraphInstance().getPathway(); pw.handleChangeFlags(ChangedFlags.PNPROPERTIES_CHANGED); // System.out.println("knocked out"); } else if ("constCheck".equals(event)) { if (ab instanceof BiologicalNodeAbstract) { BiologicalNodeAbstract bna = (BiologicalNodeAbstract) ab; if (constCheck.isSelected()) { this.tokenMin.setEnabled(false); this.tokenMax.setEnabled(false); bna.setConstant(true); } else { this.tokenMin.setEnabled(true); this.tokenMax.setEnabled(true); bna.setConstant(false); } Pathway pw = new GraphInstance().getPathway(); pw.handleChangeFlags(ChangedFlags.EDGEWEIGHT_CHANGED); } // System.out.println(this.constCheck.isSelected()); } GraphInstance.getMyGraph().updateGraph(); }