Author: bobtarling Date: 2009-12-19 08:32:51-0800 New Revision: 17687 Added: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/CheckBox.java trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/GetterSetter.java trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/GetterSetterImpl.java Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLActionAsynchronousCheckBox.java trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLActionSynchCheckBox.java trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLAssociationEndNavigableCheckBox.java trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLAssociationEndOrderingCheckBox.java trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLAssociationEndTargetScopeCheckbox.java trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLBehavioralFeatureQueryCheckBox.java trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLCheckBox.java trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassActiveCheckBox.java trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLDerivedCheckBox.java trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLFeatureOwnerScopeCheckBox.java trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLGeneralizableElementAbstractCheckBox.java trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLGeneralizableElementLeafCheckBox.java trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLGeneralizableElementRootCheckBox.java trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLTaggedValueCheckBox.java Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SwingUIFactory.java
Log: Replace entire UMLComboBox hierarchy with ComboBox and GetterSetter Added: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/CheckBox.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/CheckBox.java?view=markup&pathrev=17687 ============================================================================== --- (empty file) +++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/CheckBox.java 2009-12-19 08:32:51-0800 @@ -0,0 +1,127 @@ +// $Id: Checkbox.java 15920 2008-10-14 18:03:33Z bobtarling $ + +package org.argouml.core.propertypanels.ui; + +import java.awt.event.ActionEvent; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; + +import javax.swing.Action; +import javax.swing.JCheckBox; + +import org.argouml.i18n.Translator; +import org.argouml.model.Model; +import org.argouml.ui.LookAndFeelMgr; +import org.argouml.ui.UndoableAction; + +class CheckBox extends JCheckBox + implements PropertyChangeListener { + + /** + * The class uid + */ + private static final long serialVersionUID = 2654856740168885592L; + + private Object target; + private String propertyName; + + /** + * The action that will be called when the checkbox changes + */ + private Action action; + + private final GetterSetter getterSetter; + + /** + * Constructor for UMLCheckBox. + * @param text the text of the check box + * @param a the action we're going to listen to + * @param name the property set name + */ + public CheckBox(final String propertyName, final Object target, GetterSetter getterSetter) { + super(Translator.localize("label." + propertyName)); + + this.getterSetter = getterSetter; + this.propertyName = propertyName; + this.target = target; + + setFont(LookAndFeelMgr.getInstance().getStandardFont()); + + build(); + + action = new SetAction(getterSetter, target, propertyName); + setActionCommand((String) action.getValue(Action.ACTION_COMMAND_KEY)); + } + + /** + * Add listeners when the component is placed on its parent + */ + public void addNotify() { + addActionListener(action); + Model.getPump().addModelEventListener( + this, target, propertyName); + } + + /** + * Remove all listeners when the component is removed from its parent + */ + public void removeNotify() { + removeActionListener(action); + Model.getPump().removeModelEventListener( + this, target, propertyName); + } + + /* + * The property value has changed so rebuild our view. + * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent) + */ + public void propertyChange(PropertyChangeEvent evt) { + build(); + } + + /* + * @see org.argouml.uml.ui.UMLCheckBox#buildModel() + */ + private void build() { + if (getterSetter != null) { + setSelected((Boolean) getterSetter.get(target, propertyName)); + } + } + + private static class SetAction extends UndoableAction { + + /** + * The class uid + */ + private static final long serialVersionUID = -2708077474004286682L; + + private final GetterSetter getterSetter; + private final String propertyName; + private Object target; + + /** + * Constructor for ActionSetElementOwnershipSpecification. + */ + protected SetAction( + final GetterSetter getterSetter, + final Object target, + final String propertyName) { + super(Translator.localize("Set"), null); + this.target = target; + this.getterSetter = getterSetter; + this.propertyName = propertyName; + // Set the tooltip string: + putValue(Action.SHORT_DESCRIPTION, + Translator.localize("Set")); + } + + /* + * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) + */ + public void actionPerformed(ActionEvent e) { + super.actionPerformed(e); + CheckBox source = (CheckBox) e.getSource(); + this.getterSetter.set(target, source.isSelected(), propertyName); + } + } +} Added: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/GetterSetter.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/GetterSetter.java?view=markup&pathrev=17687 ============================================================================== --- (empty file) +++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/GetterSetter.java 2009-12-19 08:32:51-0800 @@ -0,0 +1,24 @@ +package org.argouml.core.propertypanels.ui; + +abstract class GetterSetter { + + /** + * Set a UML property by property name + * @param handle the element to which a property must be set + * @param value the new property value + * @param propertyName the property name + */ + abstract void set(Object handle, Object value, String propertyName); + + /** + * Get a UML property by property name + * @param handle the element from which a property must be return + * @param value the new property value + * @param propertyName the property name + */ + abstract Object get(Object handle, String propertyName); + + static GetterSetter getGetterSetter() { + return new GetterSetterImpl(); + } +} \ No newline at end of file Added: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/GetterSetterImpl.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/GetterSetterImpl.java?view=markup&pathrev=17687 ============================================================================== --- (empty file) +++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/GetterSetterImpl.java 2009-12-19 08:32:51-0800 @@ -0,0 +1,110 @@ +// $Id: PopupMenuNewEvent.java 15918 2008-10-14 06:40:41Z mvw $ + +package org.argouml.core.propertypanels.ui; + +import org.argouml.model.Model; + +/** + * Property getters and setters + * @author Bob Tarling + */ +class GetterSetterImpl extends GetterSetter { + + /** + * Set a UML property by property name + * @param handle the element to which a property must be set + * @param value the new property value + * @param propertyName the property name + */ + public void set(Object handle, Object value, String propertyName) { + if ("isAbstract".equals(propertyName)) { + Model.getCoreHelper().setAbstract(handle, (Boolean) value); + } else if ("isLeaf".equals(propertyName)) { + Model.getCoreHelper().setLeaf(handle, (Boolean) value); + } else if ("isRoot".equals(propertyName)) { + Model.getCoreHelper().setRoot(handle, (Boolean) value); + } else if ("isActive".equals(propertyName)) { + Model.getCoreHelper().setActive(handle, (Boolean) value); + } else if ("ownerScope".equals(propertyName)) { + Model.getCoreHelper().setStatic(handle, (Boolean) value); + } else if ("targetScope".equals(propertyName)) { + // Have we handled UML2 here? + Model.getCoreHelper().setStatic(handle, (Boolean) value); + } else if ("isQuery".equals(propertyName)) { + Model.getCoreHelper().setQuery(handle, (Boolean) value); + } else if ("isNavigable".equals(propertyName)) { + Model.getCoreHelper().setNavigable(handle, (Boolean) value); + } else if ("ordering".equals(propertyName)) { + if ((Boolean) value) { + Model.getCoreHelper().setOrdering(handle, + Model.getOrderingKind().getOrdered()); + } else { + Model.getCoreHelper().setOrdering(handle, + Model.getOrderingKind().getUnordered()); + } + } else if ("isAsynchronous".equals(propertyName)) { + Model.getCommonBehaviorHelper().setAsynchronous( + handle, + (Boolean) value); + } else if ("isSynch".equals(propertyName)) { + Model.getActivityGraphsHelper().setSynch( + handle, + (Boolean) value); + } else if ("derived".equals(propertyName)) { + Object taggedValue = Model.getFacade().getTaggedValue(handle, (String) propertyName); + if (taggedValue == null) { + taggedValue = + Model.getExtensionMechanismsFactory().buildTaggedValue( + (String) propertyName, ""); + Model.getExtensionMechanismsHelper().addTaggedValue( + handle, taggedValue); + } + if ((Boolean) value) { + Model.getCommonBehaviorHelper().setValue(taggedValue, "true"); + } else { + Model.getCommonBehaviorHelper().setValue(taggedValue, "false"); + } + } + } + + /** + * Get a UML property by property name + * @param handle the element from which a property must be return + * @param value the new property value + * @param propertyName the property name + */ + public Object get(Object handle, String propertyName) { + if ("isAbstract".equals(propertyName)) { + return Model.getFacade().isAbstract(handle); + } else if ("isLeaf".equals(propertyName)) { + return Model.getFacade().isLeaf(handle); + } else if ("isRoot".equals(propertyName)) { + return Model.getFacade().isRoot(handle); + } else if ("isActive".equals(propertyName)) { + return Model.getFacade().isActive(handle); + } else if ("ownerScope".equals(propertyName)) { + return Model.getFacade().isStatic(handle); + } else if ("targetScope".equals(propertyName)) { + // Have we handled UML2 here? + return Model.getFacade().isStatic(handle); + } else if ("isQuery".equals(propertyName)) { + return Model.getFacade().isQuery(handle); + } else if ("isNavigable".equals(propertyName)) { + return Model.getFacade().isNavigable(handle); + } else if ("ordering".equals(propertyName)) { + return Model.getFacade().getOrdering(handle) == Model.getOrderingKind().getOrdered(); + } else if ("isAsynchronous".equals(propertyName)) { + return Model.getFacade().isAsynchronous(handle); + } else if ("isSynch".equals(propertyName)) { + return Model.getFacade().isSynch(handle); + } else if ("derived".equals(propertyName)) { + Object tv = Model.getFacade().getTaggedValue(handle, propertyName); + if (tv != null) { + String tag = Model.getFacade().getValueOfTag(tv); + return ("true".equals(tag)); + } + return false; + } + return null; + } +} 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=17687&r1=17686&r2=17687 ============================================================================== --- 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-19 08:32:51-0800 @@ -275,40 +275,43 @@ final JPanel panel, final Object target, final CheckBoxMeta prop) { - UMLCheckBox checkbox = null; final String propertyName = prop.getName(); - if ("isAbstract".equals(propertyName)) { - checkbox = new UMLGeneralizableElementAbstractCheckBox(propertyName, target); + GetterSetter getterSetter = GetterSetter.getGetterSetter(); + + CheckBox checkbox = null; + if ("derived".equals(propertyName)) { + checkbox = new CheckBox(propertyName, target, getterSetter); + } else if ("isAbstract".equals(propertyName)) { + checkbox = new CheckBox(propertyName, target, getterSetter); } else if ("isLeaf".equals(propertyName)) { - checkbox = new UMLGeneralizableElementLeafCheckBox(propertyName, target); + checkbox = new CheckBox(propertyName, target, getterSetter); } else if ("isRoot".equals(propertyName)) { - checkbox = new UMLGeneralizableElementRootCheckBox(propertyName, target); - } else if ("derived".equals(propertyName)) { - checkbox = new UMLDerivedCheckBox(propertyName, target); + checkbox = new CheckBox(propertyName, target, getterSetter); } else if ("isActive".equals(propertyName)) { - checkbox = new UMLClassActiveCheckBox(propertyName, target); + checkbox = new CheckBox(propertyName, target, getterSetter); } else if ("ownerScope".equals(propertyName)) { - checkbox = new UMLFeatureOwnerScopeCheckBox(propertyName, target); + checkbox = new CheckBox(propertyName, target, getterSetter); } else if ("targetScope".equals(propertyName)) { // TODO: An alternative property name will need to be inserted for // UML 2.x - checkbox = new UMLAssociationEndTargetScopeCheckbox(propertyName, target); + checkbox = new CheckBox(propertyName, target, getterSetter); } else if ("isQuery".equals(propertyName)) { - checkbox = new UMLBehavioralFeatureQueryCheckBox(propertyName, target); + checkbox = new CheckBox(propertyName, target, getterSetter); } else if ("isNavigable".equals(propertyName)) { - checkbox = new UMLAssociationEndNavigableCheckBox(propertyName, target); + checkbox = new CheckBox(propertyName, target, getterSetter); } else if ("ordering".equals(propertyName)) { - checkbox = new UMLAssociationEndOrderingCheckBox(propertyName, target); + checkbox = new CheckBox(propertyName, target, getterSetter); } else if ("isAsynchronous".equals(propertyName)) { - checkbox = new UMLActionAsynchronousCheckBox(propertyName, target); + checkbox = new CheckBox(propertyName, target, getterSetter); } else if ("isSynch".equals(propertyName)) { - checkbox = new UMLActionSynchCheckBox(propertyName, target); + checkbox = new CheckBox(propertyName, target, getterSetter); + } else if ("derived".equals(propertyName)) { + checkbox = new CheckBox(propertyName, target, getterSetter); } if (checkbox != null) { - checkbox.setTarget(target); panel.add(checkbox); } } Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLActionAsynchronousCheckBox.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLActionAsynchronousCheckBox.java?view=markup&pathrev=17686 Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLActionSynchCheckBox.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLActionSynchCheckBox.java?view=markup&pathrev=17686 Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLAssociationEndNavigableCheckBox.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLAssociationEndNavigableCheckBox.java?view=markup&pathrev=17686 Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLAssociationEndOrderingCheckBox.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLAssociationEndOrderingCheckBox.java?view=markup&pathrev=17686 Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLAssociationEndTargetScopeCheckbox.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLAssociationEndTargetScopeCheckbox.java?view=markup&pathrev=17686 Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLBehavioralFeatureQueryCheckBox.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLBehavioralFeatureQueryCheckBox.java?view=markup&pathrev=17686 Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLCheckBox.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLCheckBox.java?view=markup&pathrev=17686 Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassActiveCheckBox.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLClassActiveCheckBox.java?view=markup&pathrev=17686 Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLDerivedCheckBox.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLDerivedCheckBox.java?view=markup&pathrev=17686 Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLFeatureOwnerScopeCheckBox.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLFeatureOwnerScopeCheckBox.java?view=markup&pathrev=17686 Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLGeneralizableElementAbstractCheckBox.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLGeneralizableElementAbstractCheckBox.java?view=markup&pathrev=17686 Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLGeneralizableElementLeafCheckBox.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLGeneralizableElementLeafCheckBox.java?view=markup&pathrev=17686 Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLGeneralizableElementRootCheckBox.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLGeneralizableElementRootCheckBox.java?view=markup&pathrev=17686 Removed: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLTaggedValueCheckBox.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLTaggedValueCheckBox.java?view=markup&pathrev=17686 ------------------------------------------------------ http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2431735 To unsubscribe from this discussion, e-mail: [[email protected]].
