svn commit: r15432 - trunk/src/argouml-app/src/org/argouml/uml: . diagram/ui ui ui/foundation/core ui/foundation/extension_mechanisms

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: bobtarling
Date: 2008-07-31 19:20:08-0700
New Revision: 15432

Added:
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionList.java
Modified:
   trunk/src/argouml-app/src/org/argouml/uml/ActionAddStereotype.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionAddNote.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionAddStereotype.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierAbstract.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierActive.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierLeaf.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierRoot.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityPackage.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityPrivate.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityProtected.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityPublic.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEdgeModelElement.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java
   trunk/src/argouml-app/src/org/argouml/uml/ui/AbstractActionNewModelElement.java
   trunk/src/argouml-app/src/org/argouml/uml/ui/ActionDeleteModelElements.java
   trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionAddAttribute.java
   trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionAddEnumerationLiteral.java
   trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionAddOperation.java
   trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/extension_mechanisms/ActionNewTagDefinition.java

Log:
Issue 5268: Remove context menu items on figs of readonly model elements

Modified: trunk/src/argouml-app/src/org/argouml/uml/ActionAddStereotype.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/ActionAddStereotype.java?view=diff&rev=15432&p1=trunk/src/argouml-app/src/org/argouml/uml/ActionAddStereotype.java&p2=trunk/src/argouml-app/src/org/argouml/uml/ActionAddStereotype.java&r1=15431&r2=15432
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/ActionAddStereotype.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/ActionAddStereotype.java	2008-07-31 19:20:08-0700
@@ -33,6 +33,7 @@
 import org.argouml.kernel.ProjectManager;
 import org.argouml.kernel.ProjectSettings;
 import org.argouml.model.Model;
+import org.argouml.model.UmlModelMutator;
 import org.tigris.gef.undo.UndoableAction;
 
 
@@ -40,7 +41,9 @@
  * Action to add a sterotype to a model element.
  * @author Bob Tarling
  */
-public class ActionAddStereotype extends UndoableAction {
+public class ActionAddStereotype extends UndoableAction
+        implements UmlModelMutator {
+    
     private Object modelElement;
     private Object stereotype;
 

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionAddNote.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionAddNote.java?view=diff&rev=15432&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionAddNote.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionAddNote.java&r1=15431&r2=15432
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionAddNote.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionAddNote.java	2008-07-31 19:20:08-0700
@@ -36,6 +36,7 @@
 import org.argouml.i18n.Translator;
 import org.argouml.kernel.ProjectManager;
 import org.argouml.model.Model;
+import org.argouml.model.UmlModelMutator;
 import org.argouml.ui.ProjectBrowser;
 import org.argouml.ui.targetmanager.TargetManager;
 import org.argouml.uml.CommentEdge;
@@ -54,7 +55,8 @@
  * The modelelements that are present on the current diagram, are connected
  * graphically. All others are only annotated in the model.
  */
-public class ActionAddNote extends UndoableAction {
+public class ActionAddNote extends UndoableAction 
+        implements UmlModelMutator {
 
     /**
      * The default position (x and y) of the new fig.

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionAddStereotype.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionAddStereotype.java?view=diff&rev=15432&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionAddStereotype.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionAddStereotype.java&r1=15431&r2=15432
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionAddStereotype.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionAddStereotype.java	2008-07-31 19:20:08-0700
@@ -33,6 +33,7 @@
 import org.argouml.kernel.ProjectManager;

 import org.argouml.kernel.ProjectSettings;

 import org.argouml.model.Model;

+import org.argouml.model.UmlModelMutator;

 import org.tigris.gef.undo.UndoableAction;

 

 

@@ -40,7 +41,8 @@
  * Action to add a stereotype to a model element.

  * @author Bob Tarling

  */

-class ActionAddStereotype extends UndoableAction {

+class ActionAddStereotype extends UndoableAction

+        implements UmlModelMutator {

     private Object modelElement;

     private Object stereotype;

 


Added: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionList.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionList.java?view=auto&rev=15432
==============================================================================
--- (empty file)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionList.java	2008-07-31 19:20:08-0700
@@ -0,0 +1,142 @@
+// $Id: eclipse-argo-codetemplates.xml 11347 2006-10-26 22:37:44Z linus $

+// Copyright (c) 2008 The Regents of the University of California. All

+// Rights Reserved. Permission to use, copy, modify, and distribute this

+// software and its documentation without fee, and without a written

+// agreement is hereby granted, provided that the above copyright notice

+// and this paragraph appear in all copies. This software program and

+// documentation are copyrighted by The Regents of the University of

+// California. The software program and documentation are supplied "AS

+// IS", without any accompanying services from The Regents. The Regents

+// does not warrant that the operation of the program will be

+// uninterrupted or error-free. The end-user understands that the program

+// was developed for research purposes and is advised not to rely

+// exclusively on the program for any reason. IN NO EVENT SHALL THE

+// UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,

+// SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,

+// ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF

+// THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF

+// SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY

+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF

+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE

+// PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF

+// CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,

+// UPDATES, ENHANCEMENTS, OR MODIFICATIONS.

+

+package org.argouml.uml.diagram.ui;

+

+import java.util.List;

+import java.util.Vector;

+

+import javax.swing.Action;

+import javax.swing.JMenu;

+import javax.swing.JMenuItem;

+

+import org.argouml.model.UmlModelMutator;

+

+/**

+ * A specialist collection used for filtering the return from getPopUpActions

+ * in FigNodeModelElement and FigEdgeModelElement.

+ * This class should remain package scope as I imagine its lifetime to be

+ * short (we need a better way of registering Actions with Figs)

+ *

+ * @author Bob Tarling

+ */

+class ActionList extends Vector {

+    

+    private boolean readonly;

+    

+    ActionList(List list, boolean readonly) {

+        super(list);

+        this.readonly = readonly;

+    }

+    

+    public boolean add(Object o) {

+        if (readonly) {

+            if (o instanceof UmlModelMutator) {

+                return false;

+            } else if (o instanceof JMenu) {

+                o = trimMenu(o);

+            }

+        }

+        if (o != null) {

+            return super.add(o);

+        } else {

+            return false;

+        }

+    }

+    

+    public void addElement(Object o) {

+        if (readonly) {

+            if (o instanceof UmlModelMutator) {

+                return;

+            } else if (o instanceof JMenu) {

+                o = trimMenu(o);

+            }

+        }

+        if (o != null) {

+            super.addElement(o);

+        }

+    }

+    

+    public void add(int index, Object o) {

+        if (readonly) {

+            if (o instanceof UmlModelMutator) {

+                return;

+            } else if (o instanceof JMenu) {

+                o = trimMenu(o);

+            }

+        }

+        if (o != null) {

+            super.add(index, o);

+        }

+    }

+    

+    public void insertElementAt(Object o, int index) {

+        if (readonly) {

+            if (o instanceof UmlModelMutator) {

+                return;

+            } else if (o instanceof JMenu) {

+                o = trimMenu(o);

+            }

+        }

+        if (o != null) {

+            super.insertElementAt(o, index);

+        }

+    }

+    

+    /**

+     * Trim out any menu items that have a UML model mutating action

+     * @param o

+     * @return The trimmed menu or null if all contents trimmed out.

+     */

+    private JMenu trimMenu(Object o) {

+        JMenu menu = (JMenu) o;

+        for (int i = menu.getItemCount() - 1; i >= 0; --i) {

+            JMenuItem menuItem = menu.getItem(i);

+            Action action = menuItem.getAction();

+            if (action == null

+                    && menuItem.getActionListeners().length > 0

+                    && menuItem.getActionListeners()[0] instanceof Action) {

+                action = (Action) menuItem.getActionListeners()[0];

+            }

+            if (isUmlMutator(action)) {

+                menu.remove(i);

+            }

+        }

+        if (menu.getItemCount() == 0) {

+            return null;

+        }

+        return menu;

+    }

+    

+    /**

+     * @param a An object (typically an Action) to test if its a UML model

+     * mutator

+     * @return true if the given action mutates the UML model.

+     */

+    private boolean isUmlMutator(Object a) {

+        return a instanceof UmlModelMutator;

+        // TODO: Why doesn't this work for annotation?

+        //return a.getClass().isAnnotationPresent(UmlModelMutator.class);

+    }

+}


Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierAbstract.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierAbstract.java?view=diff&rev=15432&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierAbstract.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierAbstract.java&r1=15431&r2=15432
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierAbstract.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierAbstract.java	2008-07-31 19:20:08-0700
@@ -25,8 +25,10 @@
 package org.argouml.uml.diagram.ui;
 
 import org.argouml.model.Model;
+import org.argouml.model.UmlModelMutator;
 
-class ActionModifierAbstract extends AbstractActionCheckBoxMenuItem {
+class ActionModifierAbstract extends AbstractActionCheckBoxMenuItem
+        implements UmlModelMutator {
     
     /**
      * Serial version generated for rev. 1.5

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierActive.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierActive.java?view=diff&rev=15432&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierActive.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierActive.java&r1=15431&r2=15432
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierActive.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierActive.java	2008-07-31 19:20:08-0700
@@ -25,8 +25,10 @@
 package org.argouml.uml.diagram.ui;
 
 import org.argouml.model.Model;
+import org.argouml.model.UmlModelMutator;
 
-class ActionModifierActive extends AbstractActionCheckBoxMenuItem {
+class ActionModifierActive extends AbstractActionCheckBoxMenuItem
+        implements UmlModelMutator {
     /**
      * Serial version generated for rev. 1.5
      */

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierLeaf.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierLeaf.java?view=diff&rev=15432&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierLeaf.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierLeaf.java&r1=15431&r2=15432
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierLeaf.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierLeaf.java	2008-07-31 19:20:08-0700
@@ -25,8 +25,10 @@
 package org.argouml.uml.diagram.ui;
 
 import org.argouml.model.Model;
+import org.argouml.model.UmlModelMutator;
 
-class ActionModifierLeaf extends AbstractActionCheckBoxMenuItem {
+class ActionModifierLeaf extends AbstractActionCheckBoxMenuItem 
+        implements UmlModelMutator {
     /**
      * Serial version generated for rev. 1.5
      */

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierRoot.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierRoot.java?view=diff&rev=15432&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierRoot.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierRoot.java&r1=15431&r2=15432
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierRoot.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionModifierRoot.java	2008-07-31 19:20:08-0700
@@ -25,8 +25,10 @@
 package org.argouml.uml.diagram.ui;
 
 import org.argouml.model.Model;
+import org.argouml.model.UmlModelMutator;
 
-class ActionModifierRoot extends AbstractActionCheckBoxMenuItem {
+class ActionModifierRoot extends AbstractActionCheckBoxMenuItem
+        implements UmlModelMutator {
     /**
      * Serial version generated for rev. 1.5
      */

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityPackage.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityPackage.java?view=diff&rev=15432&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityPackage.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityPackage.java&r1=15431&r2=15432
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityPackage.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityPackage.java	2008-07-31 19:20:08-0700
@@ -25,8 +25,10 @@
 package org.argouml.uml.diagram.ui;
 
 import org.argouml.model.Model;
+import org.argouml.model.UmlModelMutator;
 
-class ActionVisibilityPackage extends AbstractActionRadioMenuItem {
+class ActionVisibilityPackage extends AbstractActionRadioMenuItem
+        implements UmlModelMutator {
     /**
      * Serial version generated for rev 1.3
      */

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityPrivate.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityPrivate.java?view=diff&rev=15432&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityPrivate.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityPrivate.java&r1=15431&r2=15432
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityPrivate.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityPrivate.java	2008-07-31 19:20:08-0700
@@ -25,8 +25,10 @@
 package org.argouml.uml.diagram.ui;
 
 import org.argouml.model.Model;
+import org.argouml.model.UmlModelMutator;
 
-class ActionVisibilityPrivate extends AbstractActionRadioMenuItem {
+class ActionVisibilityPrivate extends AbstractActionRadioMenuItem
+        implements UmlModelMutator {
     /**
      * Serial version generated for rev 1.5
      */

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityProtected.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityProtected.java?view=diff&rev=15432&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityProtected.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityProtected.java&r1=15431&r2=15432
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityProtected.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityProtected.java	2008-07-31 19:20:08-0700
@@ -25,8 +25,10 @@
 package org.argouml.uml.diagram.ui;
 
 import org.argouml.model.Model;
+import org.argouml.model.UmlModelMutator;
 
-class ActionVisibilityProtected extends AbstractActionRadioMenuItem {
+class ActionVisibilityProtected extends AbstractActionRadioMenuItem
+        implements UmlModelMutator {
     /**
      * Serial version generated for rev 1.5
      */

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityPublic.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityPublic.java?view=diff&rev=15432&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityPublic.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityPublic.java&r1=15431&r2=15432
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityPublic.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionVisibilityPublic.java	2008-07-31 19:20:08-0700
@@ -25,8 +25,9 @@
 package org.argouml.uml.diagram.ui;
 
 import org.argouml.model.Model;
+import org.argouml.model.UmlModelMutator;
 
-class ActionVisibilityPublic extends AbstractActionRadioMenuItem {
+class ActionVisibilityPublic extends AbstractActionRadioMenuItem implements UmlModelMutator {
     /**
      * Serial version generated for rev 1.5
      */

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEdgeModelElement.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEdgeModelElement.java?view=diff&rev=15432&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEdgeModelElement.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEdgeModelElement.java&r1=15431&r2=15432
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEdgeModelElement.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEdgeModelElement.java	2008-07-31 19:20:08-0700
@@ -261,12 +261,13 @@
     }
 
     /**
-     * This method shall return a Vector of one of these 4 types:
-     * AbstractAction, JMenu, JMenuItem, JSeparator.
+     * @return a Vector containing a combination of these 4 types:
+     * Action, JMenu, JMenuItem, JSeparator.
      */
     @Override
     public Vector getPopUpActions(MouseEvent me) {
-        Vector popUpActions = super.getPopUpActions(me);
+        ActionList popUpActions =
+            new ActionList(super.getPopUpActions(me), isReadOnly());
         
         // popupAddOffset should be equal to the number of items added here:
         popUpActions.add(new JSeparator());

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java?view=diff&rev=15432&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java&r1=15431&r2=15432
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java	2008-07-31 19:20:08-0700
@@ -480,7 +480,8 @@
      */
     @Override
     public Vector getPopUpActions(MouseEvent me) {
-        Vector popUpActions = super.getPopUpActions(me);
+        ActionList popUpActions =
+            new ActionList(super.getPopUpActions(me), isReadOnly());
 
         // Show ...
         ArgoJMenu show = buildShowPopUp();

Modified: trunk/src/argouml-app/src/org/argouml/uml/ui/AbstractActionNewModelElement.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/ui/AbstractActionNewModelElement.java?view=diff&rev=15432&p1=trunk/src/argouml-app/src/org/argouml/uml/ui/AbstractActionNewModelElement.java&p2=trunk/src/argouml-app/src/org/argouml/uml/ui/AbstractActionNewModelElement.java&r1=15431&r2=15432
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/ui/AbstractActionNewModelElement.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/ui/AbstractActionNewModelElement.java	2008-07-31 19:20:08-0700
@@ -29,13 +29,15 @@
 
 import org.argouml.application.helpers.ResourceLoaderWrapper;
 import org.argouml.i18n.Translator;
+import org.argouml.model.UmlModelMutator;
 import org.tigris.gef.undo.UndoableAction;
 
 /**
  * @since Oct 3, 2002
  * @author [email protected]
  */
-public abstract class AbstractActionNewModelElement extends UndoableAction {
+public abstract class AbstractActionNewModelElement extends UndoableAction 
+        implements UmlModelMutator {
 
     private Object target;
 

Modified: trunk/src/argouml-app/src/org/argouml/uml/ui/ActionDeleteModelElements.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/ui/ActionDeleteModelElements.java?view=diff&rev=15432&p1=trunk/src/argouml-app/src/org/argouml/uml/ui/ActionDeleteModelElements.java&p2=trunk/src/argouml-app/src/org/argouml/uml/ui/ActionDeleteModelElements.java&r1=15431&r2=15432
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/ui/ActionDeleteModelElements.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/ui/ActionDeleteModelElements.java	2008-07-31 19:20:08-0700
@@ -42,6 +42,7 @@
 import org.argouml.kernel.ProjectManager;
 import org.argouml.model.InvalidElementException;
 import org.argouml.model.Model;
+import org.argouml.model.UmlModelMutator;
 import org.argouml.ui.targetmanager.TargetEvent;
 import org.argouml.ui.targetmanager.TargetListener;
 import org.argouml.ui.targetmanager.TargetManager;
@@ -59,7 +60,8 @@
  * Objects can be Modelelements, Diagrams (argodiagram and it's children),
  * Figs without owner,... 
  */
-public class ActionDeleteModelElements extends UndoableAction {
+public class ActionDeleteModelElements extends UndoableAction
+implements UmlModelMutator {
 
     /**
      * Generated serial version for rev 1.4

Modified: trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionAddAttribute.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionAddAttribute.java?view=diff&rev=15432&p1=trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionAddAttribute.java&p2=trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionAddAttribute.java&r1=15431&r2=15432
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionAddAttribute.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionAddAttribute.java	2008-07-31 19:20:08-0700
@@ -33,6 +33,7 @@
 import org.argouml.kernel.Project;
 import org.argouml.kernel.ProjectManager;
 import org.argouml.model.Model;
+import org.argouml.model.UmlModelMutator;
 import org.argouml.ui.targetmanager.TargetEvent;
 import org.argouml.ui.targetmanager.TargetListener;
 import org.argouml.ui.targetmanager.TargetManager;
@@ -44,7 +45,8 @@
  * This class shall be the only one that knows 
  * when this tool should be downlighted or not.
  */
-public class ActionAddAttribute extends UndoableAction {
+public class ActionAddAttribute extends UndoableAction
+        implements UmlModelMutator {
 
     private static ActionAddAttribute targetFollower;
 
@@ -115,7 +117,9 @@
      */
     public boolean shouldBeEnabled() {
         Object target = TargetManager.getInstance().getSingleModelTarget();
-        if (target == null) return false;
+        if (target == null) {
+            return false;
+        }
         return Model.getFacade().isAClassifier(target)
             || Model.getFacade().isAFeature(target)
             || Model.getFacade().isAAssociationEnd(target);

Modified: trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionAddEnumerationLiteral.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionAddEnumerationLiteral.java?view=diff&rev=15432&p1=trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionAddEnumerationLiteral.java&p2=trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionAddEnumerationLiteral.java&r1=15431&r2=15432
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionAddEnumerationLiteral.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionAddEnumerationLiteral.java	2008-07-31 19:20:08-0700
@@ -29,13 +29,15 @@
 import org.argouml.application.helpers.ResourceLoaderWrapper;
 import org.argouml.i18n.Translator;
 import org.argouml.model.Model;
+import org.argouml.model.UmlModelMutator;
 import org.argouml.ui.targetmanager.TargetManager;
 import org.tigris.gef.undo.UndoableAction;
 
 /**
  * Action to add an operation to a classifier.
  */
-public class ActionAddEnumerationLiteral extends UndoableAction {
+public class ActionAddEnumerationLiteral extends UndoableAction
+        implements UmlModelMutator {
 
     /**
      * Serial version generated by Eclipse for initial implementation.

Modified: trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionAddOperation.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionAddOperation.java?view=diff&rev=15432&p1=trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionAddOperation.java&p2=trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionAddOperation.java&r1=15431&r2=15432
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionAddOperation.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/ActionAddOperation.java	2008-07-31 19:20:08-0700
@@ -33,6 +33,7 @@
 import org.argouml.kernel.Project;
 import org.argouml.kernel.ProjectManager;
 import org.argouml.model.Model;
+import org.argouml.model.UmlModelMutator;
 import org.argouml.ui.targetmanager.TargetEvent;
 import org.argouml.ui.targetmanager.TargetListener;
 import org.argouml.ui.targetmanager.TargetManager;
@@ -41,7 +42,8 @@
 /**
  * Action to add an operation to a classifier.
  */
-public class ActionAddOperation extends UndoableAction {
+public class ActionAddOperation extends UndoableAction
+        implements UmlModelMutator {
 
     private static ActionAddOperation targetFollower;
 

Modified: trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/extension_mechanisms/ActionNewTagDefinition.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/extension_mechanisms/ActionNewTagDefinition.java?view=diff&rev=15432&p1=trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/extension_mechanisms/ActionNewTagDefinition.java&p2=trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/extension_mechanisms/ActionNewTagDefinition.java&r1=15431&r2=15432
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/extension_mechanisms/ActionNewTagDefinition.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/extension_mechanisms/ActionNewTagDefinition.java	2008-07-31 19:20:08-0700
@@ -31,6 +31,7 @@
 import org.argouml.application.helpers.ResourceLoaderWrapper;
 import org.argouml.i18n.Translator;
 import org.argouml.model.Model;
+import org.argouml.model.UmlModelMutator;
 import org.argouml.ui.targetmanager.TargetManager;
 import org.tigris.gef.undo.UndoableAction;
 
@@ -41,7 +42,8 @@
  *
  * @author [email protected]
  */
-public class ActionNewTagDefinition extends UndoableAction {
+public class ActionNewTagDefinition extends UndoableAction
+        implements UmlModelMutator {
 
     /**
      * The constructor.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.