/* * @see org.argouml.uml.ui.UMLModelElementListModel2#setTarget(java.lang.Object) */ public void setTarget(Object target) { if (getTarget() != null) { Enumeration enumeration = elements(); while (enumeration.hasMoreElements()) { Object base = enumeration.nextElement(); Model.getPump().removeModelEventListener(this, base, "feature"); } Model.getPump().removeModelEventListener(this, getTarget(), "base"); } target = target instanceof Fig ? ((Fig) target).getOwner() : target; if (!Model.getFacade().isAModelElement(target)) // TODO: - isn't this an error condition? Should we not throw // an exception or at least log. return; setListTarget(target); if (getTarget() != null) { Collection bases = Model.getFacade().getBases(getTarget()); Iterator it = bases.iterator(); while (it.hasNext()) { Object base = it.next(); Model.getPump().addModelEventListener(this, base, "feature"); } // make sure we know it when a classifier is added as a base Model.getPump().addModelEventListener(this, getTarget(), "base"); removeAllElements(); setBuildingModel(true); buildModelList(); setBuildingModel(false); if (getSize() > 0) { fireIntervalAdded(this, 0, getSize() - 1); } } }
/** Test to create a diagram. */ public void testCreateDiagram() { Model.getPump().flushModelEvents(); action.actionPerformed(null); Object d = TargetManager.getInstance().getTarget(); assertTrue("No diagram generated", d instanceof ArgoDiagram); Model.getPump().flushModelEvents(); ArgoDiagram diagram = (ArgoDiagram) d; assertNotNull("The diagram has no namespace", diagram.getNamespace()); assertNotNull("The diagram has no graphmodel", diagram.getGraphModel()); assertTrue( "The graphmodel of the diagram is not a " + "UMLMutableGraphSupport", diagram.getGraphModel() instanceof UMLMutableGraphSupport); assertNotNull("The diagram has no name", diagram.getName()); }
/** * Test deleting a package with a package with a Activity diagram. The diagram should be deleted, * too. */ public void testDeletePackageWithPackageWithActivityDiagram() { Project p = ProjectManager.getManager().getOpenProjects().get(0); assertEquals(2, p.getDiagramList().size()); int sizeMembers = p.getMembers().size(); int sizeDiagrams = p.getDiagramList().size(); // test with a package and a class and activity diagram Object package1 = Model.getModelManagementFactory().buildPackage("test1"); Model.getCoreHelper().setNamespace(package1, p.getModel()); Object package2 = Model.getModelManagementFactory().buildPackage("test2"); Model.getCoreHelper().setNamespace(package2, package1); // build the Activity Diagram Object actgrph = Model.getActivityGraphsFactory().buildActivityGraph(package2); UMLActivityDiagram d = new UMLActivityDiagram(Model.getFacade().getNamespace(actgrph), actgrph); p.addMember(d); assertEquals(sizeDiagrams + 1, p.getDiagramList().size()); assertEquals(sizeMembers + 1, p.getMembers().size()); p.moveToTrash(package1); Model.getPump().flushModelEvents(); assertTrue("Package 2 not in trash", Model.getUmlFactory().isRemoved(package2)); assertTrue("ActivityGraph not in trash", Model.getUmlFactory().isRemoved(actgrph)); assertEquals(sizeDiagrams, p.getDiagramList().size()); assertEquals(sizeMembers, p.getMembers().size()); }
/** * Test deleting an operation that contains a statechart diagram. The diagram should be deleted, * too. */ public void testDeleteOperationWithStateDiagram() { Project p = ProjectManager.getManager().getOpenProjects().get(0); assertEquals(2, p.getDiagramList().size()); int sizeMembers = p.getMembers().size(); int sizeDiagrams = p.getDiagramList().size(); // test with a class and class diagram Object package1 = Model.getModelManagementFactory().buildPackage("test1"); Object aClass = Model.getCoreFactory().buildClass(package1); Object voidType = p.getDefaultReturnType(); Object oper = Model.getCoreFactory().buildOperation(aClass, voidType); // try with Statediagram Object machine = Model.getStateMachinesFactory().buildStateMachine(oper); UMLStateDiagram d = new UMLStateDiagram(Model.getFacade().getNamespace(machine), machine); p.addMember(d); assertEquals(sizeDiagrams + 1, p.getDiagramList().size()); assertEquals(sizeMembers + 1, p.getMembers().size()); p.moveToTrash(oper); Model.getPump().flushModelEvents(); assertTrue("Operation not in trash", p.isInTrash(oper)); /* Changed by issue 4281: */ assertTrue("Statemachine in trash", !Model.getUmlFactory().isRemoved(machine)); assertEquals(sizeDiagrams + 1, p.getDiagramList().size()); assertEquals(sizeMembers + 1, p.getMembers().size()); /* After issue 4284 will be solved, we * may even delete the class, and the diagram * should still exist. */ }
/** * Test deleting a package that contains a Class with Statechart diagram. The diagram should be * deleted, too. */ public void testDeletePackageWithStateDiagram() { Project p = ProjectManager.getManager().getOpenProjects().get(0); assertEquals(2, p.getDiagramList().size()); int sizeMembers = p.getMembers().size(); int sizeDiagrams = p.getDiagramList().size(); // test with a class and class diagram Object package1 = Model.getModelManagementFactory().buildPackage("test1"); Object aClass = Model.getCoreFactory().buildClass(package1); // try with Statediagram Object machine = Model.getStateMachinesFactory().buildStateMachine(aClass); UMLStateDiagram d = new UMLStateDiagram(Model.getFacade().getNamespace(machine), machine); p.addMember(d); assertEquals(sizeDiagrams + 1, p.getDiagramList().size()); assertEquals(sizeMembers + 1, p.getMembers().size()); p.moveToTrash(package1); Model.getPump().flushModelEvents(); assertTrue("Class not in trash", Model.getUmlFactory().isRemoved(aClass)); assertTrue("Statemachine not in trash", Model.getUmlFactory().isRemoved(machine)); assertEquals(sizeDiagrams, p.getDiagramList().size()); assertEquals(sizeMembers, p.getMembers().size()); }
/** Test deleting a package that contains a Class diagram. The diagram should be deleted, too. */ public void testDeletePackageWithClassDiagram() { Project p = ProjectManager.getManager().getOpenProjects().get(0); assertEquals(2, p.getDiagramList().size()); assertEquals( Translator.localize("misc.untitled-model"), Model.getFacade().getName(p.getModel())); assertEquals(p.getRoot(), p.getModel()); int sizeMembers = p.getMembers().size(); int sizeDiagrams = p.getDiagramList().size(); // test with a class and class diagram Object package1 = Model.getModelManagementFactory().buildPackage("test1"); assertNotNull(package1); Object package2 = Model.getModelManagementFactory().buildPackage("test2"); UMLClassDiagram cDiag = new UMLClassDiagram(package2); p.addMember(cDiag); assertEquals(sizeDiagrams + 1, p.getDiagramList().size()); assertEquals(sizeMembers + 1, p.getMembers().size()); p.moveToTrash(package2); Model.getPump().flushModelEvents(); assertEquals(sizeDiagrams, p.getDiagramList().size()); assertEquals(sizeMembers, p.getMembers().size()); }
/** @see java.lang.Runnable#run() */ public void run() { Designer dsgr = Designer.theDesigner(); org.argouml.uml.cognitive.critics.Init.init(); org.argouml.uml.cognitive.checklist.Init.init(); Project p = ProjectManager.getManager().getCurrentProject(); // set the icon for this poster dsgr.setClarifier(ResourceLoaderWrapper.lookupIconResource("PostItD0")); dsgr.setDesignerName(Configuration.getString(Argo.KEY_USER_FULLNAME)); Configuration.addListener(Argo.KEY_USER_FULLNAME, dsgr); // MVW dsgr.spawnCritiquer(p); dsgr.setChildGenerator(new ChildGenUML()); java.util.Enumeration models = (p.getUserDefinedModels()).elements(); while (models.hasMoreElements()) { Object o = models.nextElement(); Model.getPump().addModelEventListener(dsgr, o); } LOG.info("spawned critiquing thread"); dsgr.getDecisionModel().startConsidering(UMLDecision.CLASS_SELECTION); dsgr.getDecisionModel().startConsidering(UMLDecision.BEHAVIOR); dsgr.getDecisionModel().startConsidering(UMLDecision.NAMING); dsgr.getDecisionModel().startConsidering(UMLDecision.STORAGE); dsgr.getDecisionModel().startConsidering(UMLDecision.INHERITANCE); dsgr.getDecisionModel().startConsidering(UMLDecision.CONTAINMENT); dsgr.getDecisionModel().startConsidering(UMLDecision.PLANNED_EXTENSIONS); dsgr.getDecisionModel().startConsidering(UMLDecision.STATE_MACHINES); dsgr.getDecisionModel().startConsidering(UMLDecision.PATTERNS); dsgr.getDecisionModel().startConsidering(UMLDecision.RELATIONSHIPS); dsgr.getDecisionModel().startConsidering(UMLDecision.INSTANCIATION); dsgr.getDecisionModel().startConsidering(UMLDecision.MODULARITY); dsgr.getDecisionModel().startConsidering(UMLDecision.EXPECTED_USAGE); dsgr.getDecisionModel().startConsidering(UMLDecision.METHODS); dsgr.getDecisionModel().startConsidering(UMLDecision.CODE_GEN); dsgr.getDecisionModel().startConsidering(UMLDecision.STEREOTYPES); Designer.setUserWorking(true); }
/** * Unregister all listeners registered through addElementListener * * @see #addElementListener(Object, String) */ protected void removeAllElementListeners() { for (Iterator iter = listeners.iterator(); iter.hasNext(); ) { Object[] l = (Object[]) iter.next(); Object property = l[1]; if (property == null) { Model.getPump().removeModelEventListener(this, l[0]); } else if (property instanceof String[]) { Model.getPump().removeModelEventListener(this, l[0], (String[]) property); } else if (property instanceof String) { Model.getPump().removeModelEventListener(this, l[0], (String) property); } else { throw new RuntimeException("Internal error in removeAllElementListeners"); } } listeners.clear(); }
/** Test the moveToTrash function for package and content. */ public void testTrashcanPackageContent() { Project p = ProjectManager.getManager().getOpenProjects().get(0); // test with a class in a package Object package1 = Model.getModelManagementFactory().buildPackage("test1"); Model.getCoreHelper().setNamespace(package1, p.getRoot()); Object cls1 = Model.getCoreFactory().buildClass(package1); Object cls2 = Model.getCoreFactory().buildClass(package1); Object cls3 = Model.getCoreFactory().buildClass(package1); Object cls4 = Model.getCoreFactory().buildClass(p.getRoot()); Object c1 = Model.getFacade().getOwnedElements(p.getRoot()); assertTrue(c1 instanceof Collection); // Let's make it a bit more difficult by setting the target: TargetManager.getInstance().setTarget(cls2); p.moveToTrash(package1); Model.getPump().flushModelEvents(); // TODO: We should also test that the object // have been removed from their namespace. // Collection c = Model.getFacade().getOwnedElements(p.getRoot()); assertTrue("Package not in trash", p.isInTrash(package1)); assertTrue("Package not deleted", Model.getUmlFactory().isRemoved(package1)); assertTrue("Class 1 not deleted", Model.getUmlFactory().isRemoved(cls1)); assertTrue("Class 2 not deleted", Model.getUmlFactory().isRemoved(cls2)); assertTrue("Class 3 not deleted", Model.getUmlFactory().isRemoved(cls3)); assertTrue("Class 4 has been deleted", !Model.getUmlFactory().isRemoved(cls4)); }
/** Test setPowertype(). */ public void testSetPowertype() { LOG.info("Setting powertype"); Model.getCoreHelper().setPowertype(elem, types[0]); Model.getPump().flushModelEvents(); assertTrue(model.getSelectedItem() == types[0]); LOG.info("Powertype set"); }
/** * Enable/disable firing of updates. As a side effect, it unregisters model event listeners during * disable and registers them again during enable. * * @param f new firing state. Pass false to disable updates. */ final synchronized void setFiring(boolean f) { ModelEventPump eventPump = Model.getPump(); if (f && target != null) { eventPump.addModelEventListener(this, target, eventName); } else { eventPump.removeModelEventListener(this, target, eventName); } firing = f; }
/** * Wrapped version of setProperty which attempts to keep us from hearing our own echo on the event * listener when we change something. Also skips updates equal the current value. */ private void setPropertyInternal(String newValue) { // TODO: This is updating model on a per character basis as // well as unregistering/reregistering event listeners every // character - very wasteful - tfm if (isFiring() && !newValue.equals(getProperty())) { setFiring(false); setProperty(newValue); Model.getPump().flushModelEvents(); setFiring(true); } }
/* * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent) */ public void propertyChange(PropertyChangeEvent e) { if (e instanceof AddAssociationEvent) { if (e.getPropertyName().equals("base") && e.getSource() == getTarget()) { Object clazz = getChangedElement(e); addAll(Model.getFacade().getFeatures(clazz)); Model.getPump().addModelEventListener(this, clazz, "feature"); } else if (e.getPropertyName().equals("feature") && Model.getFacade().getBases(getTarget()).contains(e.getSource())) { addElement(getChangedElement(e)); } } else if (e instanceof RemoveAssociationEvent) { if (e.getPropertyName().equals("base") && e.getSource() == getTarget()) { Object clazz = getChangedElement(e); Model.getPump().removeModelEventListener(this, clazz, "feature"); } else if (e.getPropertyName().equals("feature") && Model.getFacade().getBases(getTarget()).contains(e.getSource())) { removeElement(getChangedElement(e)); } } else { super.propertyChange(e); } }
public void testListener() { Object model = Model.getModelManagementFactory().createModel(); Project p = ProjectManager.getManager().getCurrentProject(); p.addModel(model); aClass = Model.getCoreFactory().buildClass(model); NotationProvider np = new NPImpl(); np.initialiseListener(this, aClass); propChanged = false; Model.getCoreHelper().setName(aClass, "ClassA1"); Model.getPump().flushModelEvents(); assertTrue("No event received", propChanged); np.cleanListener(this, aClass); propChanged = false; Model.getCoreHelper().setName(aClass, "ClassA2"); Model.getPump().flushModelEvents(); assertTrue("Event received, despite not listening", !propChanged); np.updateListener(this, aClass, null); }
/** * Test if the listener gets events when model elements change: * * @throws InterruptedException */ public void testListener() throws InterruptedException { Object model = Model.getModelManagementFactory().createModel(); aClass = Model.getCoreFactory().buildClass(model); NotationProvider np = new NPImpl(); np.setRenderer(this); np.initialiseListener(aClass); propChanged = false; Model.getCoreHelper().setName(aClass, "ClassA1"); Model.getPump().flushModelEvents(); Thread.sleep(2000); assertTrue("No event received", propChanged); np.cleanListener(); propChanged = false; Model.getCoreHelper().setName(aClass, "ClassA2"); Model.getPump().flushModelEvents(); assertTrue("Event received, despite not listening", !propChanged); np.updateListener(aClass, null); }
/** Test deleting a package that contains a Class. The class should be deleted, too. */ public void testDeletePackageWithClass() { Project p = ProjectManager.getManager().getOpenProjects().get(0); assertEquals(2, p.getDiagramList().size()); // test with a class and class diagram Object package1 = Model.getModelManagementFactory().buildPackage("test1"); Object aClass = Model.getCoreFactory().buildClass(package1); p.moveToTrash(package1); Model.getPump().flushModelEvents(); assertTrue("Class not in trash", Model.getUmlFactory().isRemoved(aClass)); }
/** Test deleting a class that contains a Class. The inner class should be deleted, too. */ public void testDeleteClassWithInnerClass() { Project p = ProjectManager.getManager().getOpenProjects().get(0); assertEquals(2, p.getDiagramList().size()); // test with a class and an inner class Object aClass = Model.getCoreFactory().buildClass("Test"); Object bClass = Model.getCoreFactory().buildClass(aClass); p.moveToTrash(aClass); Model.getPump().flushModelEvents(); assertTrue("Class not in trash", p.isInTrash(aClass)); assertTrue("Inner Class not in trash", Model.getUmlFactory().isRemoved(bClass)); }
/** @see org.argouml.uml.diagram.ui.FigNodeModelElement#updateListeners(java.lang.Object) */ protected void updateListeners(Object newOwner) { Object oldOwner = getOwner(); if (oldOwner != null && oldOwner != newOwner) { // remove the listeners if the owner is changed Iterator it = Model.getFacade().getFeatures(oldOwner).iterator(); while (it.hasNext()) { Object feat = it.next(); Model.getPump().removeModelEventListener(this, feat); Collection c = new ArrayList(Model.getFacade().getStereotypes(feat)); if (Model.getFacade().isAOperation(feat)) { c.addAll(Model.getFacade().getParameters(feat)); } Iterator it2 = c.iterator(); while (it2.hasNext()) { Object obj = it2.next(); Model.getPump().removeModelEventListener(this, obj); } } } if (newOwner != null) { // add the listeners to the newOwner Iterator it = Model.getFacade().getFeatures(newOwner).iterator(); while (it.hasNext()) { Object feat = it.next(); Collection c = new ArrayList(Model.getFacade().getStereotypes(feat)); if (Model.getFacade().isAOperation(feat)) { c.addAll(Model.getFacade().getParameters(feat)); } Iterator it2 = c.iterator(); while (it2.hasNext()) { Object obj = it2.next(); Model.getPump().addModelEventListener(this, obj); } } } super.updateListeners(newOwner); }
/** Tests if two diagrams created have different names. */ public void testDifferentNames() { action.actionPerformed(null); Object d = TargetManager.getInstance().getTarget(); assertTrue("No diagram generated", d instanceof ArgoDiagram); Model.getPump().flushModelEvents(); ArgoDiagram diagram1 = (ArgoDiagram) d; // This next line is needed to register the diagram in the project, // since creating a next diagram will need the new name to be compared // with existing diagrams in the project, to validate // there are no duplicates. ProjectManager.getManager().getCurrentProject().addMember(diagram1); TargetManager.getInstance().setTarget(ns); action.actionPerformed(null); d = TargetManager.getInstance().getTarget(); assertTrue("No diagram generated", d instanceof ArgoDiagram); Model.getPump().flushModelEvents(); ArgoDiagram diagram2 = (ArgoDiagram) d; Model.getPump().flushModelEvents(); assertTrue( "The created diagrams have the same name", !(diagram1.getName().equals(diagram2.getName()))); }
/** * Tests if the list with namespaces defined in getValidNamespaceClasses contains only valid * namespaces. * * <p>TODO: This test does not test anything, really! */ public void testValidNamespaces() { Iterator it = validNamespaces.iterator(); while (it.hasNext()) { Object type = it.next(); Object o = Model.getUmlFactory().buildNode(type); String objDesc = "" + o; if (o != null) { objDesc += " (" + o.getClass() + ")"; } TargetManager.getInstance().setTarget(o); Model.getPump().flushModelEvents(); action.actionPerformed(null); Object d = TargetManager.getInstance().getTarget(); assertTrue(objDesc + " is not valid namespace for the diagram", d instanceof ArgoDiagram); } }
/** @see junit.framework.TestCase#setUp() */ protected void setUp() throws Exception { super.setUp(); Object mmodel = Model.getModelManagementFactory().createModel(); Model.getCoreHelper().setName(mmodel, "untitledModel"); Model.getModelManagementFactory().setRootModel(mmodel); namespace = Model.getModelManagementFactory().createPackage(); child = Model.getCoreFactory().buildClass("child", namespace); parent = Model.getCoreFactory().buildClass("parent", namespace); elem = Model.getCoreFactory().buildGeneralization(child, parent); model = new UMLGeneralizationPowertypeComboBoxModel(); model.targetSet(new TargetEvent(this, "set", new Object[0], new Object[] {elem})); types = new Object[10]; Object m = Model.getModelManagementFactory().createModel(); ProjectManager.getManager().getCurrentProject().setRoot(m); Model.getCoreHelper().setNamespace(elem, m); for (int i = 0; i < 10; i++) { types[i] = Model.getCoreFactory().createClass(); Model.getCoreHelper().addOwnedElement(m, types[i]); } Model.getPump().flushModelEvents(); }
/** * Method to perform a number of important initializations of a StateDiagram. * * <p>Each diagram type has a similar <I>UMLxxxDiagram</I> class. * * <p>Changed <I>lay</I> from <I>LayerPerspective</I> to <I>LayerPerspectiveMutable</I>. This * class is a child of <I>LayerPerspective</I> and was implemented to correct some difficulties in * changing the model. <I>lay</I> is used mainly in <I>LayerManager</I>(GEF) to control the * adding, changing and deleting layers on the diagram... * * @param namespace Class from the UML model...connects the class to the Statechart diagram. * @param machine StateMachine from the UML model * @author [email protected] Jan. 24, 2oo2 */ public void setup(Object namespace, Object machine) { setNamespace(namespace); theStateMachine = machine; StateDiagramGraphModel gm = createGraphModel(); gm.setHomeModel(namespace); if (theStateMachine != null) { gm.setMachine(theStateMachine); } StateDiagramRenderer rend = new StateDiagramRenderer(); // singleton LayerPerspective lay = new LayerPerspectiveMutable(Model.getFacade().getName(namespace), gm); lay.setGraphNodeRenderer(rend); lay.setGraphEdgeRenderer(rend); setLayer(lay); /* Listen to machine deletion, * to delete the diagram. */ Model.getPump() .addModelEventListener(this, theStateMachine, new String[] {"remove", "namespace"}); }
/** Test the moveToTrash function for class and content. */ public void testTrashcanClassContent() { Project p = ProjectManager.getManager().getOpenProjects().get(0); // test with a class and an inner class Object aClass = Model.getCoreFactory().buildClass("Test", p.getRoot()); Object cls1 = Model.getCoreFactory().buildClass(aClass); Object cls2 = Model.getCoreFactory().buildClass(aClass); Object cls3 = Model.getCoreFactory().buildClass(aClass); Object typ = Model.getCoreFactory().buildClass(p.getRoot()); Object oper2a = Model.getCoreFactory().buildOperation(cls2, cls3); assertNotNull(oper2a); Object oper2b = Model.getCoreFactory().buildOperation(cls2, typ); assertNotNull(oper2b); p.moveToTrash(aClass); Model.getPump().flushModelEvents(); assertTrue("Package not in trash", p.isInTrash(aClass)); assertTrue("Package not deleted", Model.getUmlFactory().isRemoved(aClass)); assertTrue("Class 1 not deleted", Model.getUmlFactory().isRemoved(cls1)); assertTrue("Class 2 not deleted", Model.getUmlFactory().isRemoved(cls2)); assertTrue("Class 3 not deleted", Model.getUmlFactory().isRemoved(cls3)); }
/* * @see org.argouml.uml.diagram.ui.UMLDiagram#propertyChange(java.beans.PropertyChangeEvent) */ @Override public void propertyChange(PropertyChangeEvent evt) { if ((evt.getSource() == theStateMachine) && (evt instanceof DeleteInstanceEvent) && "remove".equals(evt.getPropertyName())) { Model.getPump() .removeModelEventListener(this, theStateMachine, new String[] {"remove", "namespace"}); if (getProject() != null) { getProject().moveToTrash(this); } else { DiagramFactory.getInstance().removeDiagram(this); } } if (evt.getSource() == theStateMachine && "namespace".equals(evt.getPropertyName())) { Object newNamespace = evt.getNewValue(); if (newNamespace != null // this in case we are being deleted && getNamespace() != newNamespace) { /* The namespace of the statemachine is changed! */ setNamespace(newNamespace); ((UMLMutableGraphSupport) getGraphModel()).setHomeModel(newNamespace); } } }
/** * Add an element listener and remember the registration. * * @param element element to listen for changes on * @see org.argouml.model.ModelEventPump#addModelEventListener(PropertyChangeListener, Object, * String) */ protected void addElementListener(Object element) { listeners.add(new Object[] {element, null}); Model.getPump().addModelEventListener(this, element); }
/** * Handles changes of the model. Takes into account the event that occured. If you need to update * the whole fig, consider using renderingChanged. * * @see * org.argouml.uml.diagram.ui.FigNodeModelElement#modelChanged(java.beans.PropertyChangeEvent) */ protected void modelChanged(PropertyChangeEvent mee) { if (getOwner() == null) { return; } Object source = null; if (mee != null) { source = mee.getSource(); } else { LOG.warn( "ModelChanged called with no event. " + "Please javadoc the situation in which this can happen"); } // attributes if (mee == null || Model.getFacade().isAAttribute(source) || (source == getOwner() && mee.getPropertyName().equals("feature"))) { updateAttributes(); damage(); } // operations if (mee == null || Model.getFacade().isAOperation(source) || Model.getFacade().isAParameter(source) || (source == getOwner() && mee.getPropertyName().equals("feature"))) { updateOperations(); damage(); } if (mee != null && mee.getPropertyName().equals("parameter") && Model.getFacade().isAOperation(source)) { if (mee instanceof AddAssociationEvent) { AddAssociationEvent aae = (AddAssociationEvent) mee; /* Ensure we will get an event for the name change of * the newly created attribute: */ Model.getPump() .addModelEventListener( this, aae.getChangedValue(), new String[] {"name", "kind", "type", "defaultValue"}); damage(); return; } else if (mee instanceof RemoveAssociationEvent) { RemoveAssociationEvent rae = (RemoveAssociationEvent) mee; Model.getPump().removeModelEventListener(this, rae.getChangedValue()); damage(); return; } } if (mee == null || mee.getPropertyName().equals("isAbstract")) { updateAbstract(); damage(); } if (mee == null || mee.getPropertyName().equals("stereotype")) { updateListeners(getOwner()); updateStereotypeText(); updateAttributes(); updateOperations(); damage(); } if (mee != null && Model.getFacade().isAStereotype(source)) { if (Model.getFacade().getStereotypes(getOwner()).contains(source)) { updateStereotypeText(); damage(); } else if (mee.getPropertyName().equals("name")) { updateAttributes(); updateOperations(); damage(); } } // name updating super.modelChanged(mee); }
/** Test setup. */ public void testSetUp() { Model.getPump().flushModelEvents(); assertTrue(model.contains(types[5])); assertTrue(model.contains(types[0])); assertTrue(model.contains(types[9])); }
/** * Sets the target. * * @param target The target to set */ public final void setTarget(Object target) { ModelEventPump eventPump = Model.getPump(); this.target = target; eventPump.addModelEventListener(this, this.target, getEventName()); updateText(getProperty()); }
/** * Add a listener and remember the registration. * * @param element element to listen for changes on * @param property array of property names (Strings) to listen for changes of * @see org.argouml.model.ModelEventPump#addModelEventListener(PropertyChangeListener, Object, * String) */ protected void addElementListener(Object element, String[] property) { listeners.add(new Object[] {element, property}); Model.getPump().addModelEventListener(this, element, property); }
/** * Add an element listener and remember the registration. * * @param element element to listen for changes on * @see org.argouml.model.ModelEventPump#addModelEventListener(PropertyChangeListener, Object, * String) */ protected void removeElementListener(Object element) { listeners.remove(new Object[] {element, null}); Model.getPump().removeModelEventListener(this, element); }