/*
   * @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());
 }
Esempio n. 3
0
  /**
   * 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());
  }
Esempio n. 4
0
  /**
   * 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. */
  }
Esempio n. 5
0
  /**
   * 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());
  }
Esempio n. 6
0
  /** 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());
  }
Esempio n. 7
0
 /** @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();
 }
Esempio n. 9
0
  /** 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);
  }
Esempio n. 16
0
  /** 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));
  }
Esempio n. 17
0
  /** 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));
  }
Esempio n. 18
0
 /** @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();
 }
Esempio n. 22
0
  /**
   * 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"});
  }
Esempio n. 23
0
  /** 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));
  }
Esempio n. 24
0
 /*
  * @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);
 }
Esempio n. 26
0
  /**
   * 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);
 }