Author: bobtarling
Date: 2010-05-18 13:14:01-0700
New Revision: 18397

Modified:
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ComponentFactory.java
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ExpressionModel.java
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ListFactory.java
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SimpleListModel.java
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SingleListFactory.java
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SwingUIFactory.java
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLStructuralFeatureTypeComboBoxModel.java
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/XMLPropPanelFactory.java

Log:


Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ComponentFactory.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ComponentFactory.java?view=diff&pathrev=18397&r1=18396&r2=18397
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ComponentFactory.java
       (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ComponentFactory.java
       2010-05-18 13:14:01-0700
@@ -38,6 +38,8 @@
 
 package org.argouml.core.propertypanels.ui;
 
+import java.util.List;
+
 import javax.swing.JComponent;
 
 /**
@@ -56,5 +58,5 @@
     JComponent createComponent(
             final Object modelElement,
             final String propName,
-            final String type);
+            final List<Class<?>> types);
 }

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ExpressionModel.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ExpressionModel.java?view=diff&pathrev=18397&r1=18396&r2=18397
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ExpressionModel.java
        (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ExpressionModel.java
        2010-05-18 13:14:01-0700
@@ -75,7 +75,7 @@
 
     private final GetterSetterManager getterSetterManager;
     
-    private final String type;
+    private final Class<?> type;
     
     private static final String EMPTYSTRING = "";
 
@@ -89,15 +89,9 @@
      */
     protected transient ChangeEvent changeEvent = null;
 
-    /**
-     * The constructor.
-     *
-     * @param target the UML element
-     * @param name the name of the property
-     */
     public ExpressionModel(
             final String propertyName,
-            final String type,
+            final Class<?> type,
             final Object umlElement,
             final GetterSetterManager getterSetterManager) {
         this.target = umlElement;
@@ -106,6 +100,7 @@
         this.type = type;
         addModelEventListener();
     }
+    
 
     public void addModelEventListener() {
         Model.getPump().addModelEventListener(this, target, propertyName);

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ListFactory.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ListFactory.java?view=diff&pathrev=18397&r1=18396&r2=18397
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ListFactory.java
    (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ListFactory.java
    2010-05-18 13:14:01-0700
@@ -38,6 +38,8 @@
 
 package org.argouml.core.propertypanels.ui;
 
+import java.util.List;
+
 import javax.swing.DefaultListModel;
 import javax.swing.JComponent;
 
@@ -55,7 +57,7 @@
     public JComponent createComponent(
             final Object modelElement,
             final String propName,
-            final String type) {
+            final List<Class<?>> types) {
         JComponent list = null;
         DefaultListModel model = null;
         
@@ -137,9 +139,9 @@
         
         if (model == null) {
             final GetterSetterManager getterSetterManager =
-                GetterSetterManager.getGetterSetter(type);
+                GetterSetterManager.getGetterSetter(types.get(0));
             if (getterSetterManager.contains(propName)) {
-                model = new SimpleListModel(propName, type, modelElement, 
getterSetterManager);
+                model = new SimpleListModel(propName, types, modelElement, 
getterSetterManager);
             }
         }
         

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java?view=diff&pathrev=18397&r1=18396&r2=18397
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java
    (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java
    2010-05-18 13:14:01-0700
@@ -72,8 +72,8 @@
 
 import org.apache.log4j.Logger;
 import org.argouml.application.helpers.ResourceLoaderWrapper;
-import org.argouml.core.propertypanels.meta.IconIdentifiable;
-import org.argouml.core.propertypanels.meta.Named;
+import org.argouml.core.propertypanels.model.IconIdentifiable;
+import org.argouml.core.propertypanels.model.Named;
 import org.argouml.i18n.Translator;
 import org.argouml.kernel.Command;
 import org.argouml.kernel.Project;
@@ -345,35 +345,19 @@
                 }
                 
                 if (additionalNewCommands != null && 
!additionalNewCommands.isEmpty()) {
-                       for (Command cmd : additionalNewCommands) {
-                               if (cmd instanceof IconIdentifiable && cmd 
instanceof Named) {
+                    for (Command cmd : additionalNewCommands) {
+                       if (cmd instanceof IconIdentifiable && cmd instanceof 
Named) {
                             actions.add(new CommandAction(cmd, 
((Named)cmd).getName(), ((IconIdentifiable)cmd).getIcon()));
-                               } else {
+                       } else {
                             actions.add(new CommandAction(cmd));
-                               }
-                       }
+                       }
+                    }
                 }
                 
                 if (!actions.isEmpty()) {
                     final JPanel buttonPanel =
                        createSingleButtonPanel(actions);
                        
-//                        new JPanel(new FlexiGridLayout(2, 1, 
FlexiGridLayout.ROWCOLPREFERRED));
-//                     final ToolButton tb;
-//                     if (actions.size() == 1) {
-//                             tb = new ToolButton(actions.get(0));
-//                     } else {
-//                        PopupToolBoxButton ptb = new 
PopupToolBoxButton(actions.get(0), actions.size(), 1, true);
-//                        for (Action action : actions) {
-//                            ptb.add(action);
-//                        }
-//                        tb = ptb;
-//                     }
-//                    final ToolBarFactory tbf = new ToolBarFactory(new 
Object[] {});
-//                    JToolBar toolbar = tbf.createToolBar();
-//                    toolbar.setRollover(true);
-//                     toolbar.add(tb);
-//                    buttonPanel.add(toolbar);
                     add(buttonPanel, BorderLayout.WEST);
                 }
             }

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SimpleListModel.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SimpleListModel.java?view=diff&pathrev=18397&r1=18396&r2=18397
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SimpleListModel.java
        (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SimpleListModel.java
        2010-05-18 13:14:01-0700
@@ -47,14 +47,9 @@
     private static final Logger LOG = Logger.getLogger(SimpleListModel.class);
     
     /**
-     * A string indicator of the type of model element this control is to hold
-     */
-    private final String type;
-    
-    /**
      * The metatypes to provide buttons to create
      */
-    private final ArrayList metaTypes;
+    private final List<Class<?>> metaTypes;
     
     private final Object umlElement;
     private final String propertyName;
@@ -63,26 +58,12 @@
     
     SimpleListModel(
             final String propertyName,
-            final String type,
+            final List<Class<?>> types,
             final Object umlElement,
             final GetterSetterManager getterSetterManager) {
         super();
         this.getterSetterManager = getterSetterManager;
-        this.type = type;
-        metaTypes = new ArrayList(4);
-        try {
-            final StringTokenizer st = new StringTokenizer(type, ",");
-            while (st.hasMoreTokens()) {
-                String className = st.nextToken();
-                if (className.contains(".")) {
-                    metaTypes.add(Class.forName(className));
-                } else {
-                    //LOG.debug(className + " is not recognised as a class 
name");
-                }
-            }
-        } catch (ClassNotFoundException e) {
-            LOG.warn("Exception building model for " + propertyName, e);
-        }
+        metaTypes = types;
         this.propertyName = propertyName;
         this.umlElement = umlElement;
 
@@ -148,7 +129,7 @@
                                                (Collection) 
getterSetterManager.getOptions( 
                                                    umlElement, 
                                                    propertyName, 
-                                                   type);
+                                                   metaTypes.get(0));
                                            final int index =
                                                CollectionUtil.indexOf(c, 
newElement);
                                            if (index < 0 || index > getSize() 
- 1) {
@@ -192,10 +173,12 @@
      */
     private void build() {
         try {
+            final Class<?> metaType = metaTypes.get(0);
+            LOG.info("Getting options for " + umlElement + " " + propertyName 
+ " " + metaType);
             final Collection c = (Collection) getterSetterManager.getOptions( 
                     umlElement, 
                     propertyName, 
-                    type);
+                    metaType);
             for (Object o : c) {
                 addElement(o);
             }

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SingleListFactory.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SingleListFactory.java?view=diff&pathrev=18397&r1=18396&r2=18397
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SingleListFactory.java
      (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SingleListFactory.java
      2010-05-18 13:14:01-0700
@@ -37,6 +37,8 @@
 
 package org.argouml.core.propertypanels.ui;
 
+import java.util.List;
+
 import javax.swing.DefaultListModel;
 import javax.swing.JComponent;
 import org.argouml.core.propertypanels.model.GetterSetterManager;
@@ -51,7 +53,7 @@
     public JComponent createComponent(
             final Object modelElement,
             final String propName,
-            final String type) {
+            final List<Class<?>> types) {
         
         DefaultListModel model = null;
         
@@ -121,9 +123,9 @@
         
         if (model == null) {
             final GetterSetterManager getterSetterManager =
-                GetterSetterManager.getGetterSetter(type);
+                GetterSetterManager.getGetterSetter(types.get(0));
             if (getterSetterManager.contains(propName)) {
-                model = new SimpleListModel(propName, type, modelElement, 
getterSetterManager);
+                model = new SimpleListModel(propName, types, modelElement, 
getterSetterManager);
             }
         }
         

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=18397&r1=18396&r2=18397
==============================================================================
--- 
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
 2010-05-18 13:14:01-0700
@@ -51,10 +51,10 @@
 
 import org.apache.log4j.Logger;
 import org.argouml.application.helpers.ResourceLoaderWrapper;
-import org.argouml.core.propertypanels.meta.CheckBoxMeta;
-import org.argouml.core.propertypanels.meta.PanelMeta;
-import org.argouml.core.propertypanels.meta.PropertyMeta;
+import org.argouml.core.propertypanels.model.CheckBoxData;
+import org.argouml.core.propertypanels.model.ControlData;
 import org.argouml.core.propertypanels.model.GetterSetterManager;
+import org.argouml.core.propertypanels.model.PanelData;
 import org.argouml.i18n.Translator;
 import org.argouml.model.Model;
 import org.argouml.uml.ui.ActionDeleteModelElements;
@@ -82,14 +82,14 @@
     public void createGUI (
             final Object target,
             final JPanel panel) throws Exception {
-            PanelMeta data = 
-                XMLPropPanelFactory.getInstance().getPropertyPanelsData(
-                        Model.getMetaTypes().getName(target));
+        PanelData data = 
+            XMLPropPanelFactory.getInstance().getPropertyPanelsData(
+               target.getClass());
             
-            createLabel(target, panel);
+        createLabel(target, panel);
             
-            for (PropertyMeta prop : data.getProperties()) {
-               try {
+        for (ControlData prop : data.getProperties()) {
+            try {
                 if ("text".equals(prop.getControlType())) {
                     buildTextboxPanel(panel, target, prop);
                 } else if ("combo".equals(prop.getControlType())) {
@@ -107,13 +107,13 @@
                 } else if ("separator".equals(prop.getControlType())) {
                     panel.add(LabelledLayout.getSeparator());
                 }
-               } catch (Exception e) {
-                       throw new IllegalStateException(
-                                       "Exception caught building control " + 
prop.getControlType()
-                                       + " for property " + prop.getName() + " 
on panel for "
-                                       + target, e);
-               }
+            } catch (Exception e) {
+                throw new IllegalStateException(
+                       "Exception caught building control " + 
prop.getControlType()
+                       + " for property " + prop.getName() + " on panel for "
+                       + target, e);
             }
+        }
     }
 
     /**
@@ -161,7 +161,7 @@
     private void buildTextArea(
             final JPanel panel,
             final Object target, 
-            final PropertyMeta prop) {
+            final ControlData prop) {
         
         // TODO: Why do we need this as well as control? Why is it
         // instantiated when its not always needed.
@@ -242,7 +242,7 @@
 
             if (getterSetter.contains(propertyName)) {
                 ExpressionModel model =
-                       new ExpressionModel(propertyName, prop.getType(), 
target, getterSetter);
+                       new ExpressionModel(propertyName, 
prop.getTypes().get(0), target, getterSetter);
                 final JTextField languageField = 
                     new ExpressionLanguageField(model);
                 addControl(
@@ -256,11 +256,11 @@
     }
 
     private void buildSingleRow(JPanel panel, Object target,
-            PropertyMeta prop) {
+            ControlData prop) {
         
         final SingleListFactory factory = new SingleListFactory();
         final JComponent pane =
-            factory.createComponent(target, prop.getName(), prop.getType());
+            factory.createComponent(target, prop.getName(), prop.getTypes());
         
         if (pane != null) {
             addControl(panel, Translator.localize(prop.getLabel()), pane, 
target);
@@ -269,11 +269,11 @@
 
     private void buildList(
             final JPanel panel, Object target, 
-            final PropertyMeta prop) {
+            final ControlData prop) {
         
         final ListFactory factory = new ListFactory();
         final JComponent list =
-            factory.createComponent(target, prop.getName(), prop.getType());
+            factory.createComponent(target, prop.getName(), prop.getTypes());
 
         if (list != null) {
             addControl(panel, Translator.localize(prop.getLabel()), list, 
target);
@@ -287,7 +287,7 @@
      * @return a radio button panel with the options 
      */
     private void buildOptionBox(JPanel panel, Object target,
-            PropertyMeta prop) {
+            ControlData prop) {
         
         final String propertyName = prop.getName();
 
@@ -309,14 +309,16 @@
      *        of the checkboxes.
      * @return a panel that contains the checkboxes 
      */
-    private void buildCheckGroup(JPanel panel, Object target,
-            PropertyMeta prop) {
+    private void buildCheckGroup(
+           final JPanel panel,
+           final Object target,
+            final ControlData prop) {
         JPanel p = new JPanel(new GridLayout2());
         TitledBorder border = new TitledBorder(prop.getName());        
         p.setBorder(border);
         
         if ("modifiers".equals(prop.getName())) {  
-            for (CheckBoxMeta data : prop.getCheckboxes()) {
+            for (CheckBoxData data : prop.getCheckboxes()) {
                 buildCheckBox(p, target, data);
             }                            
         }
@@ -326,7 +328,7 @@
     private void buildCheckBox(
             final JPanel panel,
             final Object target,
-            final CheckBoxMeta prop) {
+            final CheckBoxData prop) {
         
         final String propertyName = prop.getName();
         
@@ -356,7 +358,7 @@
     private void buildComboPanel(
             final JPanel panel,
             final Object target,
-            final PropertyMeta prop) {
+            final ControlData prop) {
         
         JComponent comp = null;
         
@@ -539,13 +541,13 @@
      *        of the options.
      */
     private void buildTextboxPanel(JPanel panel, Object target,
-            PropertyMeta prop) {
+            ControlData prop) {
        
         UMLPlainTextDocument document = null;
         if ("name".equals(prop.getName())) {
             if (Model.getFacade().isATemplateParameter(target)) {
                 target = Model.getFacade().getParameter(target);
-            } 
+            }
             document = new UMLModelElementNameDocument(prop.getName(), target);
         } else if ("discriminator".equals(prop.getName())) {
             document = new UMLDiscriminatorNameDocument(prop.getName(), 
target);

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=18397&r1=18396&r2=18397
==============================================================================
--- 
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
  2010-05-18 13:14:01-0700
@@ -214,7 +214,6 @@
             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)) {
@@ -224,7 +223,6 @@
             }
             
             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/XMLPropPanelFactory.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/XMLPropPanelFactory.java?view=diff&pathrev=18397&r1=18396&r2=18397
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/XMLPropPanelFactory.java
    (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/XMLPropPanelFactory.java
    2010-05-18 13:14:01-0700
@@ -38,17 +38,11 @@
 
 package org.argouml.core.propertypanels.ui;
 
-import java.io.InputStream;
-import java.util.Dictionary;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Map;
-
 import javax.swing.JPanel;
 
 import org.apache.log4j.Logger;
-import org.argouml.core.propertypanels.meta.PanelMeta;
-import org.argouml.core.propertypanels.meta.PanelMetaCache;
+import org.argouml.core.propertypanels.model.MetaDataCache;
+import org.argouml.core.propertypanels.model.PanelData;
 import org.argouml.i18n.Translator;
 import org.argouml.model.Model;
 import org.argouml.uml.ui.PropPanelFactory;
@@ -62,8 +56,10 @@
     private static final Logger LOG =
         Logger.getLogger(XMLPropPanelFactory.class);
     
-    private final PanelMetaCache cache =
-        new PanelMetaCache();
+    /**
+     * new cache
+     */
+    private final MetaDataCache metaDataCache = new MetaDataCache();
     
     private static XMLPropPanelFactory instance;
     
@@ -113,8 +109,8 @@
         }        
     }
     
-    public PanelMeta getPropertyPanelsData (String forType) {
-        return cache.get(forType);
+    public PanelData getPropertyPanelsData (Class<?> clazz) {
+        return metaDataCache.get(clazz);
     }
     
     /**

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

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

Reply via email to