package org.jbpm.gd.pf.notation;
import java.beans.PropertyChangeEvent;
import org.jbpm.gd.common.notation.Edge;
import org.jbpm.gd.common.notation.Node;
import org.jbpm.gd.pf.model.NodeElement;
import org.jbpm.gd.pf.model.PageFlowDefinition;
public class PageFlowEdge extends Edge {
// public Label getLabel() {
// Label result = super.getLabel();
// if (result == null) {
// result = (Label)getFactory().create("org.jbpm.gd.jpdl.label");
// addPropertyChangeListener(result);
// setLabel(result);
// }
// return result;
// }
//
// public void setSemanticElement(SemanticElement semanticElement) {
// super.setSemanticElement(semanticElement);
// getLabel().setSemanticElement(semanticElement);
// }
//
public void propertyChange(PropertyChangeEvent evt) {
String eventName = evt.getPropertyName();
if (eventName.equals("to")) {
if (getSource() == null) return;
PageFlowDefinition pageFlowDefinition = (PageFlowDefinition)((Node)getSource()).getContainer().getSemanticElement();
NodeElement newTarget = pageFlowDefinition.getNodeElementByName((String)evt.getNewValue());
NodeElement oldTarget = pageFlowDefinition.getNodeElementByName((String)evt.getOldValue());
if (oldTarget != null) {
Node oldTargetNode = (Node)getRegisteredNotationElementFor(oldTarget);
if (oldTargetNode != null) {
oldTargetNode.removeArrivingEdge(this);
}
}
if (newTarget != null) {
Node targetNode = (Node)getRegisteredNotationElementFor(newTarget);
if (targetNode != null) {
targetNode.addArrivingEdge(this);
}
}
getSource().propertyChange(new PropertyChangeEvent(this, "leavingEdgeRefresh", null, null));
} else {
super.propertyChange(evt);
}
}
}