svn commit: r18102 - trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels: meta model ui
Bob Tarling <[email protected]>
| Newsgroups | gmane.comp.lang.uml.argouml.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: bobtarling
Date: 2010-03-16 13:31:06-0700
New Revision: 18102
Modified:
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/meta/panels.xml
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/meta/panels2.xml
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/model/GetterSetterManagerImpl.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
Log:
provide a button to add new reception for class
Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/meta/panels.xml
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/meta/panels.xml?view=diff&pathrev=18102&r1=18101&r2=18102
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/meta/panels.xml (original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/meta/panels.xml 2010-03-16 13:31:06-0700
@@ -174,7 +174,7 @@
<separator />
<list name="specialization" type="GeneralizableElement" />
<list name="ownedElement" type="ModelElement" label="label.owned-elements"/>
- <list name="feature" type="Feature" />
+ <list name="feature" type="org.omg.uml.foundation.core.Operation,org.omg.uml.behavioralelements.commonbehavior.Reception" />
<list name="powertypeRange" type="Generalization" />
<list name="typedFeature" type="Classifier" />
<list name="typedParameter" type="Classifier" />
@@ -205,7 +205,7 @@
<list name="specialization" type="GeneralizableElement" />
<separator />
<list name="feature" type="org.omg.uml.foundation.core.Attribute" label="label.attributes" />
- <list name="feature" type="org.omg.uml.foundation.core.Operation" label="label.operations" />
+ <list name="feature" type="org.omg.uml.foundation.core.Operation,org.omg.uml.behavioralelements.commonbehavior.Reception" label="label.operations" />
<list name="association" type="Classifier" />
<list name="ownedElement" type="ModelElement" label="label.owned-elements"/>
@@ -1167,7 +1167,7 @@
<separator />
<list name="specialization" type="GeneralizableElement" />
<list name="ownedElement" type="ModelElement" label="label.owned-elements"/>
- <list name="feature" type="Feature" />
+ <list name="feature" type="org.omg.uml.foundation.core.Operation,org.omg.uml.behavioralelements.commonbehavior.Reception" />
<list name="powertypeRange" type="Generalization" />
<list name="typedFeature" type="Classifier" />
<list name="typedParameter" type="Classifier" />
@@ -1388,7 +1388,7 @@
<separator />
<list name="specialization" type="GeneralizableElement" />
<list name="ownedElement" type="ModelElement" label="label.owned-elements"/>
- <list name="feature" type="Feature" />
+ <list name="feature" type="org.omg.uml.foundation.core.Operation,org.omg.uml.behavioralelements.commonbehavior.Reception" />
<list name="powertypeRange" type="Generalization" />
<list name="typedFeature" type="Classifier" />
<list name="typedParameter" type="Classifier" />
@@ -1435,7 +1435,7 @@
<separator />
<list name="specialization" type="GeneralizableElement" />
<list name="ownedElement" type="ModelElement" label="label.owned-elements"/>
- <list name="feature" type="Feature" />
+ <list name="feature" type="org.omg.uml.foundation.core.Operation,org.omg.uml.behavioralelements.commonbehavior.Reception" />
<list name="powertypeRange" type="Generalization" />
<list name="typedFeature" type="Classifier" />
<list name="typedParameter" type="Classifier" />
@@ -3790,7 +3790,7 @@
<separator />
<list name="specialization" type="GeneralizableElement" />
<list name="ownedElement" type="ModelElement" label="label.owned-elements"/>
- <list name="feature" type="Feature" />
+ <list name="feature" type="org.omg.uml.foundation.core.Operation,org.omg.uml.behavioralelements.commonbehavior.Reception" />
<list name="powertypeRange" type="Generalization" />
<list name="typedFeature" type="Classifier" />
<list name="typedParameter" type="Classifier" />
@@ -3908,7 +3908,7 @@
<separator />
<list name="specialization" type="GeneralizableElement" />
<list name="ownedElement" type="ModelElement" label="label.owned-elements"/>
- <list name="feature" type="Feature" />
+ <list name="feature" type="org.omg.uml.foundation.core.Operation,org.omg.uml.behavioralelements.commonbehavior.Reception" />
<list name="powertypeRange" type="Generalization" />
<list name="typedFeature" type="Classifier" />
<list name="typedParameter" type="Classifier" />
Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/meta/panels2.xml
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/meta/panels2.xml?view=diff&pathrev=18102&r1=18101&r2=18102
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/meta/panels2.xml (original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/meta/panels2.xml 2010-03-16 13:31:06-0700
@@ -205,7 +205,7 @@
<list name="specialization" type="GeneralizableElement" />
<separator />
<list name="feature" type="org.eclipse.uml2.uml.Property" label="label.attributes" />
- <list name="feature" type="org.eclipse.uml2.uml.Operation" label="label.operations" />
+ <list name="feature" type="org.eclipse.uml2.uml.Operation,org.eclipse.uml2.uml.Reception" label="label.operations" />
<list name="association" type="Classifier" />
<list name="ownedElement" type="ModelElement" label="label.owned-elements"/>
<debug />
Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/model/GetterSetterManagerImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/model/GetterSetterManagerImpl.java?view=diff&pathrev=18102&r1=18101&r2=18102
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/model/GetterSetterManagerImpl.java (original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/model/GetterSetterManagerImpl.java 2010-03-16 13:31:06-0700
@@ -16,6 +16,7 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import java.util.StringTokenizer;
import org.apache.log4j.Logger;
import org.argouml.model.Model;
@@ -58,7 +59,7 @@
addGetterSetter("kind", new ParameterDirectionGetterSetter());
addGetterSetter("changeability", new ChangeabilityGetterSetter());
addGetterSetter("concurrency", new ConcurrencyGetterSetter());
- addGetterSetter("feature", new FeatureGetterSetter(type));
+ addGetterSetter("feature", new FeatureGetterSetter());
addGetterSetter("parameter", new ParameterGetterSetter());
addGetterSetter("receiver", new ReceiverGetterSetter());
addGetterSetter("sender", new SenderGetterSetter());
@@ -102,7 +103,10 @@
return null;
}
- public Collection getOptions(Object umlElement, String propertyName, String type) {
+ public Collection getOptions(
+ final Object umlElement,
+ final String propertyName,
+ final String type) {
BaseGetterSetter bgs = getterSetterByPropertyName.get(propertyName);
if (bgs instanceof OptionGetterSetter) {
return ((OptionGetterSetter) bgs).getOptions(umlElement, type);
@@ -121,7 +125,10 @@
return null;
}
- public boolean isValidElement(String propertyName, String type, Object element) {
+ public boolean isValidElement(
+ final String propertyName,
+ final String type,
+ final Object element) {
BaseGetterSetter bgs = getterSetterByPropertyName.get(propertyName);
if (bgs instanceof ListGetterSetter) {
return ((ListGetterSetter) bgs).isValidElement(element, type);
@@ -559,24 +566,32 @@
}
}
}
-
+
private class FeatureGetterSetter extends ListGetterSetter {
- private Class metaType;
-
- public FeatureGetterSetter(String type) {
+ /**
+ * Get all the features for the model
+ * @param modelElement
+ * @param type
+ * @return
+ * @see org.argouml.core.propertypanels.model.GetterSetterManager.OptionGetterSetter#getOptions(java.lang.Object, java.lang.String)
+ */
+ public Collection getOptions(
+ final Object modelElement,
+ final String type /* TODO: change this to a metatype */ ) {
+
+ StringTokenizer st = new StringTokenizer(type, ",");
try {
- metaType = Class.forName(type);
+ Class metaType = Class.forName(st.nextToken());
+ if (Model.getMetaTypes().getAttribute().equals(metaType)) {
+ return Model.getFacade().getAttributes(modelElement);
+ } else if (Model.getMetaTypes().getOperation().equals(metaType)) {
+ return Model.getFacade().getOperationsAndReceptions(modelElement);
+ } else {
+ return Collections.EMPTY_LIST;
+ }
} catch (ClassNotFoundException e) {
- // ignore
- }
- }
- public Collection getOptions(Object modelElement, String type) {
- if (Model.getMetaTypes().getAttribute().equals(metaType)) {
- return Model.getFacade().getAttributes(modelElement);
- } else if (Model.getMetaTypes().getOperation().equals(metaType)) {
- return Model.getFacade().getOperationsAndReceptions(modelElement);
- } else {
+ LOG.error("Exception", e);
return Collections.EMPTY_LIST;
}
}
@@ -590,12 +605,14 @@
// not needed
}
- protected boolean isValidElement(Object element, String type) {
+ protected boolean isValidElement(
+ final Object element,
+ final String type) {
return getOptions(element, type).contains(element);
}
public Object getMetaType() {
- return metaType;
+ return Model.getMetaTypes().getOperation();
}
}
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=18102&r1=18101&r2=18102
==============================================================================
--- 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-03-16 13:31:06-0700
@@ -47,6 +47,7 @@
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
import javax.swing.Action;
import javax.swing.DefaultListModel;
@@ -237,6 +238,7 @@
this.expandable = expandable;
Object metaType = null;
+ List metaTypes = null;
if (model instanceof UMLModelElementListModel) {
// Temporary until SimpleListModel is used for all
@@ -247,6 +249,7 @@
} else if (model instanceof org.argouml.core.propertypanels.ui.SimpleListModel) {
target = ((org.argouml.core.propertypanels.ui.SimpleListModel) model).getUmlElement();
metaType = ((org.argouml.core.propertypanels.ui.SimpleListModel) model).getMetaType();
+ metaTypes = ((org.argouml.core.propertypanels.ui.SimpleListModel) model).getMetaTypes();
scroll = new ScrollListImpl(model, 1);
readonly = Model.getModelManagementHelper().isReadOnly(target);
} else {
@@ -257,6 +260,11 @@
assert (target != null);
+ if (metaTypes == null) {
+ metaTypes = new ArrayList();
+ metaTypes.add(metaType);
+ }
+
LOG.info("Creating list for " + target);
LOG.info("model = " + model.getClass().getName());
@@ -290,18 +298,20 @@
moveTopAction = null;
moveBottomAction = null;
} else {
- if (!readonly) {
+ if (!readonly) {
// TODO: Lets build this into a separate buildToolbar method
// Create actions and expander if we have multiple rows
final ArrayList<Action> actions = new ArrayList<Action>(6);
- if (Model.getUmlFactory().isContainmentValid(metaType, target)) {
- final Action createAction = new ActionCreateContainedModelElement(
- metaType,
- target,
- "button.new-" + Model.getMetaTypes().getName(metaType).toLowerCase());
- actions.add(createAction);
+ for (Object meta : metaTypes) {
+ if (Model.getUmlFactory().isContainmentValid(meta, target)) {
+ final Action createAction = new ActionCreateContainedModelElement(
+ meta,
+ target,
+ "button.new-" + Model.getMetaTypes().getName(meta).toLowerCase());
+ actions.add(createAction);
+ }
}
deleteAction = new DeleteAction();
actions.add(deleteAction);
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=18102&r1=18101&r2=18102
==============================================================================
--- 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-03-16 13:31:06-0700
@@ -15,8 +15,10 @@
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.StringTokenizer;
import javax.swing.DefaultListModel;
import javax.swing.SwingUtilities;
@@ -47,6 +49,11 @@
*/
private final String type;
+ /**
+ * The metatypes to provide buttons to create
+ */
+ private final ArrayList metaTypes;
+
private final Object umlElement;
private final String propertyName;
@@ -60,6 +67,15 @@
super();
this.getterSetterManager = getterSetterManager;
this.type = type;
+ metaTypes = new ArrayList(2);
+ try {
+ final StringTokenizer st = new StringTokenizer(type, ",");
+ while (st.hasMoreTokens()) {
+ metaTypes.add(Class.forName(st.nextToken()));
+ }
+ } catch (ClassNotFoundException e) {
+ LOG.warn("Exception", e);
+ }
this.propertyName = propertyName;
this.umlElement = umlElement;
@@ -73,9 +89,16 @@
}
public Object getMetaType() {
+ if (metaTypes.size() > 0) {
+ return metaTypes.get(0);
+ }
return getterSetterManager.getMetaType(propertyName);
}
+ public List getMetaTypes() {
+ return metaTypes;
+ }
+
/*
* @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
*/
------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2460721
To unsubscribe from this discussion, e-mail: [[email protected]].