Author: bobtarling
Date: 2010-12-18 04:19:08-0800
New Revision: 18924
Modified:
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/model/GetterSetterManagerImpl.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ExpressionBodyField.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ExpressionLanguageField.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ExpressionModel.java
Log:
Issue 6174: Make sure all old links to the previous expression model are removed before attaching the body and loguage controls to the new expression model
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=18924&r1=18923&r2=18924
==============================================================================
--- 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-12-18 04:19:08-0800
@@ -1895,6 +1895,7 @@
@Override
public void set(Object modelElement, Object value) {
+ LOG.info("About to call setBody " + modelElement + " / " + value);
Model.getCoreHelper().setBody(modelElement, value);
}
Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ExpressionBodyField.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ExpressionBodyField.java?view=diff&pathrev=18924&r1=18923&r2=18924
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ExpressionBodyField.java (original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ExpressionBodyField.java 2010-12-18 04:19:08-0800
@@ -73,10 +73,6 @@
setFont(LookAndFeelMgr.getInstance().getStandardFont());
setRows(2); // make it stretch vertically
- update();
- }
-
- void update() {
String oldText = getText();
String newText = model.getBody();
Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ExpressionLanguageField.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ExpressionLanguageField.java?view=diff&pathrev=18924&r1=18923&r2=18924
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ExpressionLanguageField.java (original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/ExpressionLanguageField.java 2010-12-18 04:19:08-0800
@@ -62,10 +62,6 @@
getDocument().addDocumentListener(this);
setToolTipText(Translator.localize("label.language.tooltip"));
setFont(LookAndFeelMgr.getInstance().getStandardFont());
- update();
- }
-
- void update() {
String oldText = getText();
String newText = model.getLanguage();
if (oldText == null || newText == null || !oldText.equals(newText)) {
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=18924&r1=18923&r2=18924
==============================================================================
--- 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-12-18 04:19:08-0800
@@ -38,9 +38,6 @@
package org.argouml.core.propertypanels.ui;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.EventListenerList;
@@ -61,20 +58,21 @@
*
* @author mkl, penyaskito, mvw, thn
*/
-class ExpressionModel implements PropertyChangeListener {
+class ExpressionModel {
private static final Logger LOG =
Logger.getLogger(ExpressionModel.class);
+ /**
+ * The target model element
+ * In UML1.x this is the element that owns the expression.
+ * In UML2.x this is the expression itself
+ * TODO: This makes behaviour different enough that separate subclasses
+ * should be considered.
+ */
private Object target;
private String propertyName;
- /** This member is only used when we set the expression ourselves.
- * In this case, we do not wish to receive UML model change events
- * for this self-inflicted change.
- * So, this member is used to detect this situation. */
- private Object rememberExpression;
-
private final GetterSetterManager getterSetterManager;
private final Class<?> type;
@@ -97,40 +95,20 @@
final Object umlElement,
final GetterSetterManager getterSetterManager) {
this.target = umlElement;
+ LOG.info("Creating ExpressionModel with target " + target);
this.propertyName = propertyName;
this.getterSetterManager = getterSetterManager;
this.type = type;
- addModelEventListener();
}
-
- public void addModelEventListener() {
- Model.getPump().addModelEventListener(this, target, propertyName);
- }
-
- public void removeModelEventListener() {
- Model.getPump().removeModelEventListener(this, target, propertyName);
- }
-
- public void propertyChange(PropertyChangeEvent e) {
- if (propertyName.equals(e.getPropertyName())) {
- if (rememberExpression != e.getNewValue()) {
- fireStateChanged();
- }
- }
- }
-
- protected Object getTarget() {
- return target;
- }
-
/**
* @return the expression
*/
- public Object getExpression() {
+ private Object getExpression() {
Object expression = null;
if (Model.getFacade().getUmlVersion().charAt(0) == '1') {
expression = getterSetterManager.get(target, propertyName, type);
+ LOG.info("Got the expression " + expression);
} else {
// in UML2, the target is already the "expression" (Opaque...)
expression = target;
@@ -142,6 +120,7 @@
* @param expr the expression
*/
public void setExpression(Object expr) {
+ LOG.info("Setting the expression to " + expr);
getterSetterManager.set(target, expr, propertyName);
}
@@ -236,8 +215,8 @@
// Expressions are DataTypes, not independent model elements
// be careful not to reuse them
final Object currentExpression = getExpression();
- removeModelEventListener();
if (currentExpression != null) {
+ LOG.info("Deleting the current expression " + currentExpression);
Model.getUmlFactory().delete(currentExpression);
}
final Object newExpression;
@@ -247,7 +226,6 @@
newExpression = newExpression(lang, body);
}
setExpression(newExpression);
- addModelEventListener();
} else {
// reuse Opaque..., just set it's attributes
Object expression = getExpression();
@@ -270,16 +248,6 @@
}
/**
- * Removes a <code>ChangeListener</code>.
- *
- * @param l the <code>ChangeListener</code> to remove
- * @see #addChangeListener
- */
- public void removeChangeListener(ChangeListener l) {
- listenerList.remove(ChangeListener.class, l);
- }
-
- /**
* Runs each <code>ChangeListener</code>'s
* <code>stateChanged</code> method.
*
------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2691634
To unsubscribe from this discussion, e-mail: [[email protected]].
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.