Author: bobtarling
Date: 2009-12-18 07:47:02-0800
New Revision: 17666

Added:
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionSetStructuralFeatureType.java
Modified:
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SwingUIFactory.java
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLCallEventOperationComboBox.java
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLComboBox.java
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLComboBoxModel.java
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLMessageActivatorComboBox.java
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStructuralFeatureTypeComboBoxModel.java

Log:
Change type combo when model element changes

Added: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionSetStructuralFeatureType.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionSetStructuralFeatureType.java?view=markup&pathrev=17666
==============================================================================
--- (empty file)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ActionSetStructuralFeatureType.java
 2009-12-18 07:47:02-0800
@@ -0,0 +1,85 @@
+// $Id: ActionSetStructuralFeatureType.java 13726 2007-11-04 20:21:13Z 
tfmorris $
+// Copyright (c) 1996-2007 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.core.propertypanels.ui;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.Action;
+
+import org.argouml.i18n.Translator;
+import org.argouml.model.Model;
+import org.argouml.ui.UndoableAction;
+
+/**
+ * @since Nov 3, 2002
+ * @author [email protected]
+ */
+class ActionSetStructuralFeatureType extends UndoableAction {
+
+    /**
+     * The class uid
+     */
+    private static final long serialVersionUID = 8227201276430122294L;
+    
+    /**
+     * Constructor for ActionSetStructuralFeatureType.
+     */
+    protected ActionSetStructuralFeatureType() {
+        super(Translator.localize("Set"), null);
+        // Set the tooltip string:
+        putValue(Action.SHORT_DESCRIPTION, 
+                Translator.localize("Set"));
+    }
+
+    /*
+     * @see 
java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
+     */
+    @Override
+    public void actionPerformed(ActionEvent e) {
+        super.actionPerformed(e);
+        assert (e.getSource() instanceof UMLComboBox);
+        Object oldClassifier = null;
+        final UMLComboBox box = (UMLComboBox) e.getSource();
+        final Object feature = box.getTarget();
+        assert (feature != null);
+        
+        oldClassifier = Model.getFacade().getType(feature);
+        
+        Object selectedClassifier = box.getSelectedItem();
+        System.out.println("The selected classifier is " + selectedClassifier);
+        
+        final Object newClassifier;
+        if (Model.getFacade().isAElement(selectedClassifier)) {
+            newClassifier = selectedClassifier;
+        } else {
+            newClassifier = null;
+        }
+        
+        if (newClassifier != oldClassifier) {
+            System.out.println("Setting the type to " + newClassifier);
+            Model.getCoreHelper().setType(feature, newClassifier);
+        }
+    }
+}

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SwingUIFactory.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SwingUIFactory.java?view=diff&pathrev=17666&r1=17665&r2=17666
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SwingUIFactory.java
 (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SwingUIFactory.java
 2009-12-18 07:47:02-0800
@@ -38,7 +38,6 @@
 import org.argouml.i18n.Translator;
 import org.argouml.model.Model;
 import org.argouml.uml.ui.UMLCheckBox2;
-import org.argouml.uml.ui.UMLComboBox2;
 import org.argouml.uml.ui.UMLComboBoxNavigator;
 import org.argouml.uml.ui.UMLDerivedCheckBox;
 import org.argouml.uml.ui.UMLRadioButtonPanel;
@@ -51,7 +50,6 @@
 import org.argouml.uml.ui.foundation.core.ActionSetAssociationEndType;
 import org.argouml.uml.ui.foundation.core.ActionSetGeneralizationPowertype;
 import org.argouml.uml.ui.foundation.core.ActionSetModelElementNamespace;
-import org.argouml.uml.ui.foundation.core.ActionSetStructuralFeatureType;
 import 
org.argouml.uml.ui.foundation.core.UMLAssociationEndAggregationRadioButtonPanel;
 import 
org.argouml.uml.ui.foundation.core.UMLAssociationEndChangeabilityRadioButtonPanel;
 import org.argouml.uml.ui.foundation.core.UMLAssociationEndNavigableCheckBox;
@@ -372,7 +370,7 @@
                     model,
                     // TODO: The action is different for
                     // attributes and parameters. Issue #5222
-                    ActionSetStructuralFeatureType.getInstance());
+                    new ActionSetStructuralFeatureType());
             comp = combo;
         } else if ("base".equals(prop.getName())) {
             if (Model.getFacade().isAAssociationRole(target)) {

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLCallEventOperationComboBox.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLCallEventOperationComboBox.java?view=diff&pathrev=17666&r1=17665&r2=17666
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLCallEventOperationComboBox.java
  (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLCallEventOperationComboBox.java
  2009-12-18 07:47:02-0800
@@ -28,18 +28,20 @@
 
 import org.argouml.model.Model;
 
-
-/**
- * @author [email protected]
- */
 class UMLCallEventOperationComboBox extends UMLSearchableComboBox {
+    
+    /**
+     * The class uid
+     */
+    private static final long serialVersionUID = -8008883017063694372L;
+
     /**
      * The constructor.
      *
-     * @param arg0 the model
+     * @param model the model
      */
-    public UMLCallEventOperationComboBox(UMLComboBoxModel arg0) {
-        super(arg0, null); // no external action; we do it ourselves
+    public UMLCallEventOperationComboBox(UMLComboBoxModel model) {
+        super(model, null); // no external action; we do it ourselves
         setEditable(false);
     }
 
@@ -56,8 +58,8 @@
             if (Model.getFacade().isACallEvent(target) 
                 && Model.getFacade().isAOperation(selected)) {
                 if (Model.getFacade().getOperation(target) != selected) {
-                    Model.getCommonBehaviorHelper()
-                        .setOperation(target, selected);
+                    Model.getCommonBehaviorHelper().setOperation(
+                            target, selected);
                 }
             }
         }

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLComboBox.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLComboBox.java?view=diff&pathrev=17666&r1=17665&r2=17666
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLComboBox.java
    (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLComboBox.java
    2009-12-18 07:47:02-0800
@@ -35,41 +35,31 @@
 
 /**
  * ComboBox for UML modelelements. <p>
- *
- * This implementation does not use
- * reflection and seperates Model, View and Controller better then does
- * UMLComboBox. The ancient UMLComboBoxModel and UMLComboBox are
- * replaced with this implementation to improve performance.
  */
 class UMLComboBox extends JComboBox {
 
     /**
-     * Constructor for UMLComboBox2.
-     * @deprecated As of ArgoUml version unknown (before 0.13.5),
-     * replaced by {...@link #UMLComboBox2(UMLComboBoxModel2, Action, boolean)}
-     * @param model the ComboBoxModel
+     * The class uid
      */
-    @Deprecated
-    protected UMLComboBox(UMLComboBoxModel model) {
-        super(model);
-        setFont(LookAndFeelMgr.getInstance().getStandardFont());
-        addActionListener(this);
-        addPopupMenuListener(model);
-    }
-
+    private static final long serialVersionUID = -7556056847962715552L;
+    
+    // TODO: Need to document what this is for
+    private Action action;
+    
     /**
-     * Constructor for UMLComboBox2. Via the given action, the
+     * Constructor for UMLComboBox. Via the given action, the
      * action for this combobox is done.
      * @param model the ComboBoxModel
-     * @param action the action
+     * @param action the action // TODO used for what/when?
      * @param showIcon true if an icon should be shown in front of the items
      */
     public UMLComboBox(UMLComboBoxModel model, Action action,
                        boolean showIcon) {
         super(model);
-        //setFont(LookAndFeelMgr.getInstance().getStandardFont());
-        addActionListener(action);
-        // setDoubleBuffered(true);
+        this.action = action;
+        if (action != null) {
+            addActionListener(action);
+        }
         setRenderer(new UMLListCellRenderer2(showIcon));
         addPopupMenuListener(model);
     }
@@ -77,11 +67,11 @@
     /**
      * The constructor.
      *
-     * @param arg0 the ComboBoxModel
-     * @param action the action
+     * @param model the ComboBoxModel
+     * @param action the action // TODO used for what/when?
      */
-    public UMLComboBox(UMLComboBoxModel arg0, Action action) {
-        this(arg0, action, true);
+    public UMLComboBox(UMLComboBoxModel model, Action action) {
+        this(model, action, true);
     }
 
     @Override
@@ -112,5 +102,9 @@
     @Override
     public void removeNotify() {
         ((UMLComboBoxModel) getModel()).removeModelEventListener();
+        if (action != null) {
+            removeActionListener(action);
+        }
+        removePopupMenuListener((UMLComboBoxModel) getModel());
     }
 }

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLComboBoxModel.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLComboBoxModel.java?view=diff&pathrev=17666&r1=17665&r2=17666
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLComboBoxModel.java
       (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLComboBoxModel.java
       2009-12-18 07:47:02-0800
@@ -184,24 +184,7 @@
      */
     public void modelChanged(UmlChangeEvent evt) {
         buildingModel = true;
-        if (evt instanceof AttributeChangeEvent) {
-            if (evt.getPropertyName().equals(propertySetName)) {
-                if (evt.getSource() == getTarget()
-                        && (isClearable || getChangedElement(evt) != null)) {
-                    Object elem = getChangedElement(evt);
-                    if (elem != null && !contains(elem)) {
-                        addElement(elem);
-                    }
-                    /* MVW: for this case, I had to move the 
-                     * call to setSelectedItem() outside the "buildingModel", 
-                     * otherwise the combo does not update 
-                     * with the new selection. See issue 5418. 
-                     **/
-                    buildingModel = false;
-                    setSelectedItem(elem);
-                }
-            }
-        } else if (evt instanceof DeleteInstanceEvent) {
+        if (evt instanceof DeleteInstanceEvent) {
             if (contains(getChangedElement(evt))) {
                 Object o = getChangedElement(evt);
                 removeElement(o);
@@ -211,7 +194,15 @@
                 if (evt.getPropertyName().equals(propertySetName) 
                     && (evt.getSource() == getTarget())) {
                     Object elem = evt.getNewValue();
-                    /* TODO: Here too? */
+                    if (elem != null && !contains(elem)) {
+                        addElement(elem);
+                    }
+                    /* MVW: for this case, I had to move the 
+                     * call to setSelectedItem() outside the "buildingModel", 
+                     * otherwise the combo does not update 
+                     * with the new selection. See issue 5418. 
+                     **/
+                    buildingModel = false;
                     setSelectedItem(elem);
                 } else {
                     Object o = getChangedElement(evt);

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLMessageActivatorComboBox.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLMessageActivatorComboBox.java?view=diff&pathrev=17666&r1=17665&r2=17666
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLMessageActivatorComboBox.java
    (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLMessageActivatorComboBox.java
    2009-12-18 07:47:02-0800
@@ -42,12 +42,11 @@
     /**
      * Constructor for UMLMessageActivatorComboBox.
      * @param container the UI container
-     * @param arg0 the model
+     * @param model the model
      */
     public UMLMessageActivatorComboBox(
-        UMLComboBoxModel arg0) {
-        // TODO: This super constructor has been deprecated
-        super(arg0);
+        final UMLComboBoxModel model) {
+        super(model, null, false);
         setRenderer(new UMLListCellRenderer2(true));
     }
 

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStructuralFeatureTypeComboBoxModel.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStructuralFeatureTypeComboBoxModel.java?view=diff&pathrev=17666&r1=17665&r2=17666
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStructuralFeatureTypeComboBoxModel.java
  (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStructuralFeatureTypeComboBoxModel.java
  2009-12-18 07:47:02-0800
@@ -32,7 +32,6 @@
 import org.argouml.kernel.Project;
 import org.argouml.kernel.ProjectManager;
 import org.argouml.model.Model;
-import org.argouml.model.UmlChangeEvent;
 import org.argouml.uml.util.PathComparator;
 
 /**

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

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

Reply via email to