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]].
