Example #1
0
  @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();
  }