svn commit: r17689 - trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui
Bob Tarling <[email protected]>
| Newsgroups | gmane.comp.lang.uml.argouml.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: bobtarling
Date: 2009-12-20 07:07:21-0800
New Revision: 17689
Modified:
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
Log:
Improve design pattern for checkbox
Modified: 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=diff&pathrev=17689&r1=17688&r2=17689
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/CheckBox.java (original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/CheckBox.java 2009-12-20 07:07:21-0800
@@ -64,6 +64,9 @@
action = new SetAction(getterSetter, modelElement, propertyName);
setActionCommand((String) action.getValue(Action.ACTION_COMMAND_KEY));
+ addActionListener(action);
+ Model.getPump().addModelEventListener(
+ this, modelElement, propertyName);
}
private String propertyToLabel(String propertyName) {
@@ -75,18 +78,10 @@
}
/**
- * Add listeners when the component is placed on its parent
- */
- public void addNotify() {
- addActionListener(action);
- Model.getPump().addModelEventListener(
- this, modelElement, propertyName);
- }
-
- /**
* Remove all listeners when the component is removed from its parent
*/
public void removeNotify() {
+ super.removeNotify();
removeActionListener(action);
Model.getPump().removeModelEventListener(
this, modelElement, propertyName);
@@ -142,7 +137,7 @@
public void actionPerformed(ActionEvent e) {
super.actionPerformed(e);
CheckBox source = (CheckBox) e.getSource();
- this.getterSetter.set(modelElement, source.isSelected(), propertyName);
+ getterSetter.set(modelElement, source.isSelected(), propertyName);
}
}
}
Modified: 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=diff&pathrev=17689&r1=17688&r2=17689
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/GetterSetter.java (original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/GetterSetter.java 2009-12-20 07:07:21-0800
@@ -1,8 +1,17 @@
package org.argouml.core.propertypanels.ui;
+import java.util.HashMap;
+import java.util.Map;
+
abstract class GetterSetter {
/**
+ * The list of boolean property getter/setters
+ */
+ protected final Map<String, BooleanGetterSetter> getterSetterByPropertyName =
+ new HashMap<String, BooleanGetterSetter>();
+
+ /**
* Set a UML property by property name
* @param handle the element to which a property must be set
* @param value the new property value
@@ -18,7 +27,19 @@
*/
abstract Object get(Object handle, String propertyName);
+ boolean contains(String propertyName) {
+ return getterSetterByPropertyName.containsKey(propertyName);
+ }
+
static GetterSetter getGetterSetter() {
return new GetterSetterImpl();
}
+
+ protected abstract class BooleanGetterSetter {
+
+ abstract String getPropertyName();
+ abstract Boolean get(Object modelElement);
+ abstract void set(Object modelElement, Boolean value);
+ }
+
}
\ No newline at end of file
Modified: 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=diff&pathrev=17689&r1=17688&r2=17689
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/GetterSetterImpl.java (original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/GetterSetterImpl.java 2009-12-20 07:07:21-0800
@@ -10,6 +10,23 @@
*/
class GetterSetterImpl extends GetterSetter {
+ public GetterSetterImpl() {
+ addGetterSetter(new AbstractGetterSetter());
+ addGetterSetter(new LeafGetterSetter());
+ addGetterSetter(new RootGetterSetter());
+ addGetterSetter(new ActiveGetterSetter());
+ addGetterSetter(new OwnerScopeGetterSetter());
+ addGetterSetter(new TargetScopeGetterSetter());
+ addGetterSetter(new QueryGetterSetter());
+ addGetterSetter(new NavigableGetterSetter());
+ addGetterSetter(new AsynchronousGetterSetter());
+ addGetterSetter(new SynchGetterSetter());
+ addGetterSetter(new OrderingGetterSetter());
+ }
+
+ private void addGetterSetter(BooleanGetterSetter bgs) {
+ getterSetterByPropertyName.put(bgs.getPropertyName(), bgs);
+ }
/**
* Set a UML property by property name
* @param handle the element to which a property must be set
@@ -17,53 +34,9 @@
* @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");
- }
+ BooleanGetterSetter bgs = getterSetterByPropertyName.get(propertyName);
+ if (bgs != null) {
+ bgs.set(handle, (Boolean) value);
}
}
@@ -74,37 +47,180 @@
* @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);
+ BooleanGetterSetter bgs = getterSetterByPropertyName.get(propertyName);
+ if (bgs != null) {
+ return bgs.get(handle);
+ }
+
+ return null;
+ }
+
+ private class AbstractGetterSetter extends BooleanGetterSetter {
+ public String getPropertyName() {
+ return "isAbstract";
+ }
+ public Boolean get(Object modelElement) {
+ return Model.getFacade().isAbstract(modelElement);
+ }
+ public void set(Object modelElement, Boolean value) {
+ Model.getCoreHelper().setAbstract(modelElement, value);
+ }
+ }
+
+ private class LeafGetterSetter extends BooleanGetterSetter {
+ public String getPropertyName() {
+ return "isLeaf";
+ }
+ public Boolean get(Object modelElement) {
+ return Model.getFacade().isLeaf(modelElement);
+ }
+ public void set(Object modelElement, Boolean value) {
+ Model.getCoreHelper().setLeaf(modelElement, value);
+ }
+ }
+
+ private class RootGetterSetter extends BooleanGetterSetter {
+ public String getPropertyName() {
+ return "isRoot";
+ }
+ public Boolean get(Object modelElement) {
+ return Model.getFacade().isRoot(modelElement);
+ }
+ public void set(Object modelElement, Boolean value) {
+ Model.getCoreHelper().setRoot(modelElement, value);
+ }
+ }
+
+ private class ActiveGetterSetter extends BooleanGetterSetter {
+ public String getPropertyName() {
+ return "isActive";
+ }
+ public Boolean get(Object modelElement) {
+ return Model.getFacade().isActive(modelElement);
+ }
+ public void set(Object modelElement, Boolean value) {
+ Model.getCoreHelper().setActive(modelElement, value);
+ }
+ }
+
+ private class OwnerScopeGetterSetter extends BooleanGetterSetter {
+ public String getPropertyName() {
+ return "ownerScope";
+ }
+ public Boolean get(Object modelElement) {
+ return Model.getFacade().isStatic(modelElement);
+ }
+ public void set(Object modelElement, Boolean value) {
+ Model.getCoreHelper().setStatic(modelElement, value);
+ }
+ }
+
+ private class TargetScopeGetterSetter extends BooleanGetterSetter {
+ // Have we handled UML2 here?
+ public String getPropertyName() {
+ return "targetScope";
+ }
+ public Boolean get(Object modelElement) {
+ return Model.getFacade().isStatic(modelElement);
+ }
+ public void set(Object modelElement, Boolean value) {
+ Model.getCoreHelper().setStatic(modelElement, value);
+ }
+ }
+
+ private class QueryGetterSetter extends BooleanGetterSetter {
+ public String getPropertyName() {
+ return "isQuery";
+ }
+ public Boolean get(Object modelElement) {
+ return Model.getFacade().isQuery(modelElement);
+ }
+ public void set(Object modelElement, Boolean value) {
+ Model.getCoreHelper().setQuery(modelElement, value);
+ }
+ }
+
+ private class NavigableGetterSetter extends BooleanGetterSetter {
+ public String getPropertyName() {
+ return "navigable";
+ }
+ public Boolean get(Object modelElement) {
+ return Model.getFacade().isNavigable(modelElement);
+ }
+ public void set(Object modelElement, Boolean value) {
+ Model.getCoreHelper().setNavigable(modelElement, value);
+ }
+ }
+
+ private class AsynchronousGetterSetter extends BooleanGetterSetter {
+ public String getPropertyName() {
+ return "isSynchronous";
+ }
+ public Boolean get(Object modelElement) {
+ return Model.getFacade().isAsynchronous(modelElement);
+ }
+ public void set(Object modelElement, Boolean value) {
+ Model.getCommonBehaviorHelper().setAsynchronous(modelElement, value);
+ }
+ }
+
+ private class SynchGetterSetter extends BooleanGetterSetter {
+ public String getPropertyName() {
+ return "isSynch";
+ }
+ public Boolean get(Object modelElement) {
+ return Model.getFacade().isSynch(modelElement);
+ }
+ public void set(Object modelElement, Boolean value) {
+ Model.getActivityGraphsHelper().setSynch(modelElement, value);
+ }
+ }
+
+ private class OrderingGetterSetter extends BooleanGetterSetter {
+ public String getPropertyName() {
+ return "ordering";
+ }
+ public Boolean get(Object modelElement) {
+ return Model.getFacade().getOrdering(modelElement) ==
+ Model.getOrderingKind().getOrdered();
+ }
+ public void set(Object modelElement, Boolean value) {
+ if ((Boolean) value) {
+ Model.getCoreHelper().setOrdering(modelElement,
+ Model.getOrderingKind().getOrdered());
+ } else {
+ Model.getCoreHelper().setOrdering(modelElement,
+ Model.getOrderingKind().getUnordered());
+ }
+ }
+ }
+
+ private class DerivedGetterSetter extends BooleanGetterSetter {
+ public String getPropertyName() {
+ return "derived";
+ }
+ public Boolean get(Object modelElement) {
+ Object tv = Model.getFacade().getTaggedValue(modelElement, getPropertyName());
if (tv != null) {
String tag = Model.getFacade().getValueOfTag(tv);
return ("true".equals(tag));
}
return false;
}
- return null;
+ public void set(Object modelElement, Boolean value) {
+ Object taggedValue = Model.getFacade().getTaggedValue(modelElement, (String) getPropertyName());
+ if (taggedValue == null) {
+ taggedValue =
+ Model.getExtensionMechanismsFactory().buildTaggedValue(
+ (String) getPropertyName(), "");
+ Model.getExtensionMechanismsHelper().addTaggedValue(
+ modelElement, taggedValue);
+ }
+ if ((Boolean) value) {
+ Model.getCommonBehaviorHelper().setValue(taggedValue, "true");
+ } else {
+ Model.getCommonBehaviorHelper().setValue(taggedValue, "false");
+ }
+ }
}
}
------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2431811
To unsubscribe from this discussion, e-mail: [[email protected]].