svn commit: r18397 - trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
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]].
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.