Author: thn
Date: 2011-02-17 08:39:35-0800
New Revision: 19041

Modified:
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStructuralFeatureTypeComboBoxModel.java

Log:
UML2: only primitive types for tagged values are offered

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=19041&r1=19040&r2=19041
==============================================================================
--- 
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
  2011-02-17 08:39:35-0800
@@ -55,13 +55,12 @@
 
 /**
  * The combobox model for the type belonging to some attribute.
- *
+ * 
  * @since Nov 2, 2002
  * @author [email protected]
  */
 class UMLStructuralFeatureTypeComboBoxModel extends UMLComboBoxModel {
 
-
     /**
      * The class uid
      */
@@ -70,22 +69,21 @@
     /**
      * Constructor for UMLStructuralFeatureTypeComboBoxModel.
      */
-    public UMLStructuralFeatureTypeComboBoxModel(
-            final String propertyName,
-            final Object target) {
-        super(target, propertyName, true); // Allow null
+    public UMLStructuralFeatureTypeComboBoxModel(final String propertyName,
+           final Object target) {
+       super(target, propertyName, true); // Allow null
     }
 
     /*
-     * This is explained by WFR 2 of a StructuralFeature: 
-     * The type of a StructuralFeature must be a Class, DataType, or Interface.
+     * This is explained by WFR 2 of a StructuralFeature: The type of a
+     * StructuralFeature must be a Class, DataType, or Interface.
      * 
      * @see org.argouml.uml.ui.UMLComboBoxModel#isValidElement(Object)
      */
     protected boolean isValidElement(Object element) {
-        return Model.getFacade().isAClass(element)
-                || Model.getFacade().isAInterface(element)
-                || Model.getFacade().isADataType(element);
+       return Model.getFacade().isAClass(element)
+               || Model.getFacade().isAInterface(element)
+               || Model.getFacade().isADataType(element);
     }
 
     /*
@@ -93,137 +91,145 @@
      */
     @SuppressWarnings("unchecked")
     protected void buildModelList() {
-        Set<Object> elements = new TreeSet<Object>(new PathComparator());
-
-        Project p = ProjectManager.getManager().getCurrentProject();
-        if (p == null) {
-            return;
-        }
-        
-        for (Object model : p.getUserDefinedModelList()) {
-            elements.addAll(Model.getModelManagementHelper()
-                    .getAllModelElementsOfKind(
-                            model, Model.getMetaTypes().getUMLClass()));
-            elements.addAll(Model.getModelManagementHelper()
-                    .getAllModelElementsOfKind(
-                            model, Model.getMetaTypes().getInterface()));
-            elements.addAll(Model.getModelManagementHelper()
-                    .getAllModelElementsOfKind(
-                            model, Model.getMetaTypes().getDataType()));
-        }
+       Set<Object> elements = new TreeSet<Object>(new PathComparator());
 
-        elements.addAll(p.getProfileConfiguration().findByMetaType(
-                        Model.getMetaTypes().getClassifier()));
+       Project p = ProjectManager.getManager().getCurrentProject();
+       if (p == null) {
+           return;
+       }
+
+       if (Model.getFacade().getUmlVersion().charAt(0) != '1'
+               && Model.getFacade().isAStereotype(
+                       Model.getFacade().getOwner(getTarget()))) {
+           // restricting types for tagged values
+           elements.addAll(Model.getExtensionMechanismsHelper()
+                   .getCommonTaggedValueTypes());
+       } else {
+           for (Object model : p.getUserDefinedModelList()) {
+               elements.addAll(Model.getModelManagementHelper()
+                       .getAllModelElementsOfKind(model,
+                               Model.getMetaTypes().getUMLClass()));
+               elements.addAll(Model.getModelManagementHelper()
+                       .getAllModelElementsOfKind(model,
+                               Model.getMetaTypes().getInterface()));
+               elements.addAll(Model.getModelManagementHelper()
+                       .getAllModelElementsOfKind(model,
+                               Model.getMetaTypes().getDataType()));
+           }
+           elements.addAll(p.getProfileConfiguration().findByMetaType(
+                   Model.getMetaTypes().getClassifier()));
+       }
 
-        setElements(elements);
+       setElements(elements);
     }
-    
+
     @SuppressWarnings("unchecked")
     @Override
     protected void buildMinimalModelList() {
-        Collection list = new ArrayList(1);
-        Object element = getSelectedModelElement();
-        if (element != null) {
-            list.add(element);
-        }
-        setElements(list);
+       Collection list = new ArrayList(1);
+       Object element = getSelectedModelElement();
+       if (element != null) {
+           list.add(element);
+       }
+       setElements(list);
     }
-    
+
     @Override
     protected boolean isLazy() {
-        return true;
+       return true;
     }
-    
+
     /*
      * @see org.argouml.uml.ui.UMLComboBoxModel#getSelectedModelElement()
      */
     protected Object getSelectedModelElement() {
-        Object o = null;
-        if (getTarget() != null) {
-            o = Model.getFacade().getType(getTarget());
-        }
-        return o;
+       Object o = null;
+       if (getTarget() != null) {
+           o = Model.getFacade().getType(getTarget());
+       }
+       return o;
     }
 
     @Override
     protected void addOtherModelEventListeners(Object newTarget) {
-        super.addOtherModelEventListeners(newTarget);
-        
-        Model.getPump().addClassModelEventListener(this,
-              Model.getMetaTypes().getNamespace(), "ownedElement");
-        Model.getPump().addClassModelEventListener(this,
-                Model.getMetaTypes().getUMLClass(), "name");
-        Model.getPump().addClassModelEventListener(this,
-                Model.getMetaTypes().getInterface(), "name");
-        Model.getPump().addClassModelEventListener(this,
-                Model.getMetaTypes().getDataType(), "name");
+       super.addOtherModelEventListeners(newTarget);
+
+       Model.getPump().addClassModelEventListener(this,
+               Model.getMetaTypes().getNamespace(), "ownedElement");
+       Model.getPump().addClassModelEventListener(this,
+               Model.getMetaTypes().getUMLClass(), "name");
+       Model.getPump().addClassModelEventListener(this,
+               Model.getMetaTypes().getInterface(), "name");
+       Model.getPump().addClassModelEventListener(this,
+               Model.getMetaTypes().getDataType(), "name");
     }
 
     @Override
     protected void removeOtherModelEventListeners(Object oldTarget) {
-        super.removeOtherModelEventListeners(oldTarget);
+       super.removeOtherModelEventListeners(oldTarget);
 
-        Model.getPump().removeClassModelEventListener(this,
-                Model.getMetaTypes().getNamespace(), "ownedElement");
-        Model.getPump().removeClassModelEventListener(this,
-                Model.getMetaTypes().getUMLClass(), "name");
-        Model.getPump().removeClassModelEventListener(this,
-                Model.getMetaTypes().getInterface(), "name");
-        Model.getPump().removeClassModelEventListener(this,
-                Model.getMetaTypes().getDataType(), "name");
+       Model.getPump().removeClassModelEventListener(this,
+               Model.getMetaTypes().getNamespace(), "ownedElement");
+       Model.getPump().removeClassModelEventListener(this,
+               Model.getMetaTypes().getUMLClass(), "name");
+       Model.getPump().removeClassModelEventListener(this,
+               Model.getMetaTypes().getInterface(), "name");
+       Model.getPump().removeClassModelEventListener(this,
+               Model.getMetaTypes().getDataType(), "name");
     }
-    
+
     public Action getAction() {
-        return new ActionSetStructuralFeatureType();
+       return new ActionSetStructuralFeatureType();
     }
-    
+
     /**
      * @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();
-            
-            final Object newClassifier;
-            if (Model.getFacade().isAElement(selectedClassifier)) {
-                newClassifier = selectedClassifier;
-            } else {
-                newClassifier = null;
-            }
-            
-            if (newClassifier != oldClassifier) {
-                Model.getCoreHelper().setType(feature, newClassifier);
-            }
-        }
+       /**
+        * 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();
+
+           final Object newClassifier;
+           if (Model.getFacade().isAElement(selectedClassifier)) {
+               newClassifier = selectedClassifier;
+           } else {
+               newClassifier = null;
+           }
+
+           if (newClassifier != oldClassifier) {
+               Model.getCoreHelper().setType(feature, newClassifier);
+           }
+       }
     }
 }

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

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

Reply via email to