Index: src/org/jbpm/gd/jpdl/xml/ForkDomAdapter.java =================================================================== --- src/org/jbpm/gd/jpdl/xml/ForkDomAdapter.java (revision 34435) +++ src/org/jbpm/gd/jpdl/xml/ForkDomAdapter.java (working copy) @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.Map; +import org.eclipse.swt.widgets.Display; import org.jbpm.gd.common.model.SemanticElement; import org.jbpm.gd.common.xml.XmlAdapter; import org.jbpm.gd.jpdl.model.Description; @@ -98,10 +99,15 @@ } } - protected void doModelUpdate(String name, String newValue) { - Fork fork = (Fork)getSemanticElement(); + protected void doModelUpdate(String name, final String newValue) { + final Fork fork = (Fork)getSemanticElement(); if ("name".equals(name)) { - fork.setName(newValue); + Display.getDefault().asyncExec(new Runnable() { + @Override + public void run() { + fork.setName(newValue); + } + }); } else if ("async".equals(name)) { fork.setAsync(newValue); } Index: src/org/jbpm/gd/jpdl/xml/NodeDomAdapter.java =================================================================== --- src/org/jbpm/gd/jpdl/xml/NodeDomAdapter.java (revision 34435) +++ src/org/jbpm/gd/jpdl/xml/NodeDomAdapter.java (working copy) @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.Map; +import org.eclipse.swt.widgets.Display; import org.jbpm.gd.common.model.SemanticElement; import org.jbpm.gd.common.xml.XmlAdapter; import org.jbpm.gd.jpdl.model.Action; @@ -116,10 +117,15 @@ } } - protected void doModelUpdate(String name, String newValue) { - Node node = (Node)getSemanticElement(); + protected void doModelUpdate(String name, final String newValue) { + final Node node = (Node)getSemanticElement(); if ("name".equals(name)) { - node.setName(newValue); + Display.getDefault().asyncExec(new Runnable() { + @Override + public void run() { + node.setName(newValue); + } + }); } else if ("async".equals(name)) { node.setAsync(newValue); } Index: src/org/jbpm/gd/jpdl/xml/ProcessStateDomAdapter.java =================================================================== --- src/org/jbpm/gd/jpdl/xml/ProcessStateDomAdapter.java (revision 34435) +++ src/org/jbpm/gd/jpdl/xml/ProcessStateDomAdapter.java (working copy) @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.Map; +import org.eclipse.swt.widgets.Display; import org.jbpm.gd.common.model.SemanticElement; import org.jbpm.gd.common.xml.XmlAdapter; import org.jbpm.gd.jpdl.model.Description; @@ -103,10 +104,15 @@ } } - protected void doModelUpdate(String name, String newValue) { - ProcessState processState = (ProcessState)getSemanticElement(); + protected void doModelUpdate(String name, final String newValue) { + final ProcessState processState = (ProcessState)getSemanticElement(); if ("name".equals(name)) { - processState.setName(newValue); + Display.getDefault().asyncExec(new Runnable() { + @Override + public void run() { + processState.setName(newValue); + } + }); } else if ("async".equals(name)) { processState.setAsync(newValue); } Index: src/org/jbpm/gd/jpdl/xml/TaskNodeDomAdapter.java =================================================================== --- src/org/jbpm/gd/jpdl/xml/TaskNodeDomAdapter.java (revision 34435) +++ src/org/jbpm/gd/jpdl/xml/TaskNodeDomAdapter.java (working copy) @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.Map; +import org.eclipse.swt.widgets.Display; import org.jbpm.gd.common.model.SemanticElement; import org.jbpm.gd.common.xml.XmlAdapter; import org.jbpm.gd.jpdl.model.Description; @@ -110,10 +111,15 @@ } } - protected void doModelUpdate(String name, String newValue) { - TaskNode taskNode = (TaskNode)getSemanticElement(); + protected void doModelUpdate(String name, final String newValue) { + final TaskNode taskNode = (TaskNode)getSemanticElement(); if ("name".equals(name)) { - taskNode.setName(newValue); + Display.getDefault().asyncExec(new Runnable() { + @Override + public void run() { + taskNode.setName(newValue); + } + }); } else if ("async".equals(name)) { taskNode.setAsync(newValue); } else if ("signal".equals(name)) { Index: src/org/jbpm/gd/jpdl/xml/StateDomAdapter.java =================================================================== --- src/org/jbpm/gd/jpdl/xml/StateDomAdapter.java (revision 34435) +++ src/org/jbpm/gd/jpdl/xml/StateDomAdapter.java (working copy) @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.Map; +import org.eclipse.swt.widgets.Display; import org.jbpm.gd.common.model.SemanticElement; import org.jbpm.gd.common.xml.XmlAdapter; import org.jbpm.gd.jpdl.model.Description; @@ -91,10 +92,15 @@ } } - protected void doModelUpdate(String name, String newValue) { - State state = (State)getSemanticElement(); - if ("name".equals(name)) { - state.setName(newValue); + protected void doModelUpdate(String name, final String newValue) { + final State state = (State)getSemanticElement(); + if ("name".equals(name)) { + Display.getDefault().asyncExec(new Runnable() { + @Override + public void run() { + state.setName(newValue); + } + }); } else if ("async".equals(name)) { state.setAsync(newValue); } Index: src/org/jbpm/gd/jpdl/xml/SuperStateDomAdapter.java =================================================================== --- src/org/jbpm/gd/jpdl/xml/SuperStateDomAdapter.java (revision 34435) +++ src/org/jbpm/gd/jpdl/xml/SuperStateDomAdapter.java (working copy) @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.Map; +import org.eclipse.swt.widgets.Display; import org.jbpm.gd.common.model.SemanticElement; import org.jbpm.gd.common.xml.XmlAdapter; import org.jbpm.gd.jpdl.model.Decision; @@ -115,10 +116,15 @@ } } - protected void doModelUpdate(String name, String newValue) { - SuperState superState = (SuperState)getSemanticElement(); + protected void doModelUpdate(String name, final String newValue) { + final SuperState superState = (SuperState)getSemanticElement(); if ("name".equals(name)) { - superState.setName(newValue); + Display.getDefault().asyncExec(new Runnable() { + @Override + public void run() { + superState.setName(newValue); + } + }); } else if ("async".equals(name)) { superState.setAsync(newValue); } Index: src/org/jbpm/gd/jpdl/xml/JoinDomAdapter.java =================================================================== --- src/org/jbpm/gd/jpdl/xml/JoinDomAdapter.java (revision 34435) +++ src/org/jbpm/gd/jpdl/xml/JoinDomAdapter.java (working copy) @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.Map; +import org.eclipse.swt.widgets.Display; import org.jbpm.gd.common.model.SemanticElement; import org.jbpm.gd.common.xml.XmlAdapter; import org.jbpm.gd.jpdl.model.Description; @@ -90,10 +91,15 @@ } } - protected void doModelUpdate(String name, String newValue) { - Join join = (Join)getSemanticElement(); + protected void doModelUpdate(String name, final String newValue) { + final Join join = (Join)getSemanticElement(); if ("name".equals(name)) { - join.setName(newValue); + Display.getDefault().asyncExec(new Runnable() { + @Override + public void run() { + join.setName(newValue); + } + }); } else if ("async".equals(name)) { join.setAsync(newValue); } Index: src/org/jbpm/gd/jpdl/xml/MailNodeDomAdapter.java =================================================================== --- src/org/jbpm/gd/jpdl/xml/MailNodeDomAdapter.java (revision 34435) +++ src/org/jbpm/gd/jpdl/xml/MailNodeDomAdapter.java (working copy) @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.Map; +import org.eclipse.swt.widgets.Display; import org.jbpm.gd.common.model.SemanticElement; import org.jbpm.gd.common.xml.XmlAdapter; import org.jbpm.gd.jpdl.model.Description; @@ -117,10 +118,15 @@ } } - protected void doModelUpdate(String name, String newValue) { - MailNode mailNode = (MailNode)getSemanticElement(); + protected void doModelUpdate(String name, final String newValue) { + final MailNode mailNode = (MailNode)getSemanticElement(); if ("name".equals(name)) { - mailNode.setName(newValue); + Display.getDefault().asyncExec(new Runnable() { + @Override + public void run() { + mailNode.setName(newValue); + } + }); } else if ("async".equals(name)) { mailNode.setAsync(newValue); } else if ("to".equals(name)) { Index: src/org/jbpm/gd/jpdl/xml/StartStateDomAdapter.java =================================================================== --- src/org/jbpm/gd/jpdl/xml/StartStateDomAdapter.java (revision 34435) +++ src/org/jbpm/gd/jpdl/xml/StartStateDomAdapter.java (working copy) @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.Map; +import org.eclipse.swt.widgets.Display; import org.jbpm.gd.common.model.SemanticElement; import org.jbpm.gd.common.xml.XmlAdapter; import org.jbpm.gd.jpdl.model.Description; @@ -79,10 +80,15 @@ } } - protected void doModelUpdate(String name, String newValue) { - StartState startState = (StartState)getSemanticElement(); + protected void doModelUpdate(String name, final String newValue) { + final StartState startState = (StartState)getSemanticElement(); if ("name".equals(name)) { - startState.setName(newValue); + Display.getDefault().asyncExec(new Runnable() { + @Override + public void run() { + startState.setName(newValue); + } + }); } } Index: src/org/jbpm/gd/jpdl/xml/DecisionDomAdapter.java =================================================================== --- src/org/jbpm/gd/jpdl/xml/DecisionDomAdapter.java (revision 34435) +++ src/org/jbpm/gd/jpdl/xml/DecisionDomAdapter.java (working copy) @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.Map; +import org.eclipse.swt.widgets.Display; import org.jbpm.gd.common.model.SemanticElement; import org.jbpm.gd.common.xml.XmlAdapter; import org.jbpm.gd.jpdl.model.Decision; @@ -95,10 +96,15 @@ } } - protected void doModelUpdate(String name, String newValue) { - Decision decision = (Decision)getSemanticElement(); + protected void doModelUpdate(String name, final String newValue) { + final Decision decision = (Decision)getSemanticElement(); if ("name".equals(name)) { - decision.setName(newValue); + Display.getDefault().asyncExec(new Runnable() { + @Override + public void run() { + decision.setName(newValue); + } + }); } else if ("async".equals(name)) { decision.setAsync(newValue); } else if ("expression".equals(name)) { Index: src/org/jbpm/gd/jpdl/xml/EndStateDomAdapter.java =================================================================== --- src/org/jbpm/gd/jpdl/xml/EndStateDomAdapter.java (revision 34435) +++ src/org/jbpm/gd/jpdl/xml/EndStateDomAdapter.java (working copy) @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.Map; +import org.eclipse.swt.widgets.Display; import org.jbpm.gd.common.model.SemanticElement; import org.jbpm.gd.common.xml.XmlAdapter; import org.jbpm.gd.jpdl.model.Description; @@ -64,10 +65,15 @@ } } - protected void doModelUpdate(String name, String newValue) { - EndState endState = (EndState)getSemanticElement(); + protected void doModelUpdate(String name, final String newValue) { + final EndState endState = (EndState)getSemanticElement(); if ("name".equals(name)) { - endState.setName(newValue); + Display.getDefault().asyncExec(new Runnable() { + @Override + public void run() { + endState.setName(newValue); + } + }); } } Index: src/org/jbpm/gd/jpdl/notation/JpdlNodeContainer.java =================================================================== --- src/org/jbpm/gd/jpdl/notation/JpdlNodeContainer.java (revision 34435) +++ src/org/jbpm/gd/jpdl/notation/JpdlNodeContainer.java (working copy) @@ -2,6 +2,7 @@ import java.beans.PropertyChangeEvent; import java.util.ArrayList; +import java.util.List; import java.util.StringTokenizer; import org.jbpm.gd.common.editor.CreationFactory; @@ -19,7 +20,10 @@ public void propertyChange(PropertyChangeEvent evt) { String eventName = evt.getPropertyName(); - if (eventName.equals("nodeElementAdd")) { + if (eventName.equals("name")) { + firePropertyChange(evt.getPropertyName(), evt.getOldValue(), evt.getNewValue()); + updateArrivingEdges((String)evt.getNewValue()); + } else if (eventName.equals("nodeElementAdd")) { SemanticElement jpdlElement = (SemanticElement)evt.getNewValue(); NotationElement notationElement = getRegisteredNotationElementFor(jpdlElement); if (notationElement == null) { @@ -114,4 +118,15 @@ } danglingEdges.removeAll(list); } + + private void updateArrivingEdges(String to) { + List edges = getArrivingEdges(); + for (int i = 0; i < edges.size(); i++) { + Edge edge = (Edge)edges.get(i); + ((SemanticElement)edge.getSemanticElement()).removePropertyChangeListener(edge); + ((Transition)edge.getSemanticElement()).setTo(to); + ((SemanticElement)edge.getSemanticElement()).addPropertyChangeListener(edge); + } + } + }