Author: thn Date: 2010-06-05 06:54:28-0700 New Revision: 18434 Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ExpressionModel.java
Log: UML2: enable property panel for Method bodies 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=18434&r1=18433&r2=18434 ============================================================================== --- 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-06-05 06:54:28-0700 @@ -8,6 +8,7 @@ * * Contributors: * Bob Tarling + * Thomas Neustupny ******************************************************************************* */ @@ -49,7 +50,8 @@ import org.argouml.model.Model; /** - * The model for Expressions. + * The model for entities with body and language attributes (Expression in + * UML1, OpaqueExpression/OpaqueBehavior in UML2). * The target is the UML element to which this Expression is attached. * * The ChangeEvent/ChangeListener handling is inspired by @@ -57,7 +59,7 @@ * It listens to UML model changes not caused by us, * which need to trigger an update of the UI rendering. * - * @author mkl, penyaskito, mvw + * @author mkl, penyaskito, mvw, thn */ class ExpressionModel implements PropertyChangeListener { @@ -126,7 +128,14 @@ * @return the expression */ public Object getExpression() { - return getterSetterManager.get(target, propertyName, type); + Object expression = null; + if (Model.getFacade().getUmlVersion().charAt(0) == '1') { + expression = getterSetterManager.get(target, propertyName, type); + } else { + // in UML2, the target is already the "expression" (Opaque...) + expression = target; + } + return expression; } /** @@ -147,7 +156,7 @@ * @return the language of the expression */ public String getLanguage() { - Object expression = getExpression(); + Object expression = getExpression(); if (expression == null) { return EMPTYSTRING; } @@ -223,22 +232,28 @@ * @param body the body text of the expression */ private void setExpression(String lang, String body) { - - // Expressions are DataTypes, not independent model elements - // be careful not to reuse them - final Object currentExpression = getExpression(); - removeModelEventListener(); - if (currentExpression != null) { - Model.getUmlFactory().delete(currentExpression); - } - final Object newExpression; - if (lang.length() == 0 && body.length()==0) { - newExpression = null; + if (Model.getFacade().getUmlVersion().charAt(0) == '1') { + // Expressions are DataTypes, not independent model elements + // be careful not to reuse them + final Object currentExpression = getExpression(); + removeModelEventListener(); + if (currentExpression != null) { + Model.getUmlFactory().delete(currentExpression); + } + final Object newExpression; + if (lang.length() == 0 && body.length()==0) { + newExpression = null; + } else { + newExpression = newExpression(lang, body); + } + setExpression(newExpression); + addModelEventListener(); } else { - newExpression = newExpression(lang, body); + // reuse Opaque..., just set it's attributes + Object expression = getExpression(); + Model.getDataTypesHelper().setBody(expression, body); + Model.getDataTypesHelper().setLanguage(expression, lang); } - setExpression(newExpression); - addModelEventListener(); } /** ------------------------------------------------------ http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2617268 To unsubscribe from this discussion, e-mail: [[email protected]].
