protected void removeFromDiagramImpl() { Object o = getOwner(); if (o != null) { removeElementListener(o); } ArgoEventPump.removeListener(this); Iterator it = getPathItemFigs().iterator(); while (it.hasNext()) { Fig fig = (Fig) it.next(); fig.removeFromDiagram(); } /* TODO: MVW: Why the next action? * Deleting a fig from 1 diagram should not influence others! * */ // GEF does not take into account the multiple diagrams we have // therefore we loop through our diagrams and delete each and every // occurence on our own it = ProjectManager.getManager().getCurrentProject().getDiagrams().iterator(); while (it.hasNext()) { ArgoDiagram diagram = (ArgoDiagram) it.next(); diagram.damage(); } /* TODO: MVW: Should we not call damage() * for diagrams AFTER the next step? */ super.removeFromDiagram(); }
/** @see javax.swing.Action#isEnabled() */ public boolean isEnabled() { Object target = TargetManager.getInstance().getTarget(); ArgoDiagram dia = ProjectManager.getManager().getCurrentProject().getActiveDiagram(); if (dia == null) return false; MutableGraphModel gm = (MutableGraphModel) dia.getGraphModel(); return gm.canAddNode(target); }
/** * selects a diagram without affecting the gui. * * @param diagram the diagram */ public void setCurrentDiagram(ArgoDiagram diagram) { if (diagram == null) { throw new RuntimeException("you can't select a null diagram"); } currentGM = (ClassDiagramGraphModel) diagram.getGraphModel(); currentLayer = diagram.getLayer(); currentDiagram = diagram; markDiagramAsModified(diagram); }
/** * Add a new class diagram for a package to the project. * * @param ns The namespace to contain the diagram. If null, the root model will be used. * @param name The fully qualified name of the package, which is used to generate the diagram name * from. */ public void addClassDiagram(Object ns, String name) { Project p = ProjectManager.getManager().getCurrentProject(); ArgoDiagram d = DiagramFactory.getInstance() .createDiagram(UMLClassDiagram.class, ns == null ? p.getRoot() : ns, null); try { d.setName(getDiagramName(name)); } catch (PropertyVetoException pve) { LOG.error("Failed to set diagram name.", pve); } p.addMember(d); setCurrentDiagram(d); }
/** * Check if a given package has a representation in the current diagram. * * @param p The package to lookup in the current diagram. * @return true if this package has a figure in the current diagram, false otherwise. */ public boolean isInDiagram(Object p) { if (currentDiagram == null) { return false; } else { return currentDiagram.getNodes().contains(p); } }