Author: thn
Date: 2010-12-03 01:07:27-0800
New Revision: 18864

Modified:
   trunk/src/argouml-app/src/org/argouml/kernel/Project.java
   trunk/src/argouml-app/src/org/argouml/kernel/ProjectImpl.java

Log:
UML2 only: provide a method for updating the roots of a project. This is needed 
when stereotypes get applied/unapplied to model elements.

Modified: trunk/src/argouml-app/src/org/argouml/kernel/Project.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/kernel/Project.java?view=diff&pathrev=18864&r1=18863&r2=18864
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/kernel/Project.java   (original)
+++ trunk/src/argouml-app/src/org/argouml/kernel/Project.java   2010-12-03 
01:07:27-0800
@@ -527,6 +527,13 @@
      * @param elements Collection of top level ModelElements
      */
     public void setRoots(final Collection elements);
+
+    /**
+     * Updates the top level ModelElements for all projects. In UML2, each
+     * model knows it's root elements, so this could make setRoots(...)
+     * obsolete. E.g., applying a stereotype in UML2 adds a new root.
+     */
+    public void updateRoots();
     
     /**
      * Returns true if the given name is a valid name for a diagram. Valid 
means

Modified: trunk/src/argouml-app/src/org/argouml/kernel/ProjectImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/kernel/ProjectImpl.java?view=diff&pathrev=18864&r1=18863&r2=18864
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/kernel/ProjectImpl.java       
(original)
+++ trunk/src/argouml-app/src/org/argouml/kernel/ProjectImpl.java       
2010-12-03 01:07:27-0800
@@ -984,6 +984,21 @@
         roots.addAll(elements);
     }
 
+    public void updateRoots() {
+        if (Model.getFacade().getUmlVersion().charAt(0) == '1') {
+            // not needed in UML 1.x
+            return;
+        }
+        roots.clear();
+        for (Object m : models) {
+            for (Object e : 
Model.getModelManagementHelper().getRootElements(m)) {
+                if (!roots.contains(e)) {
+                    roots.add(e);
+                }
+            }
+        }
+    }
+
     public boolean isValidDiagramName(String name) {
         boolean rv = true;
         for (ArgoDiagram diagram : diagrams) {

------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2687495

To unsubscribe from this discussion, e-mail: 
[[email protected]].

Reply via email to