package org.jbpm.gd.pf.notation; import java.beans.PropertyChangeEvent; import java.util.ArrayList; import org.jbpm.gd.common.model.NamedElement; import org.jbpm.gd.common.notation.Edge; import org.jbpm.gd.common.notation.Node; import org.jbpm.gd.common.notation.RootContainer; import org.jbpm.gd.pf.model.NodeElement; import org.jbpm.gd.pf.model.Transition; public class PageFlowRootContainer extends RootContainer { public void propertyChange(PropertyChangeEvent evt) { String eventName = evt.getPropertyName(); if (eventName.equals("startPageAdd") || eventName.equals("nodeElementAdd")) { addNode(evt); } else if (eventName.equals("startPageRemove") || eventName.equals("nodeElementRemove")) { removeNode(evt); } else { super.propertyChange(evt); } } protected void addArrivingEdges(Node node) { ArrayList list = new ArrayList(); for (int i = 0; i < danglingEdges.size(); i++) { String name= ((NamedElement)node.getSemanticElement()).getName(); Edge edge = (Edge)danglingEdges.get(i); String to = ((Transition)edge.getSemanticElement()).getTo(); if (name != null && name.equals(to)) { list.add(edge); node.addArrivingEdge(edge); } } danglingEdges.removeAll(list); } protected void addLeavingEdges(Node node) { NodeElement nodeElement = (NodeElement)node.getSemanticElement(); Transition[] transitions = nodeElement.getTransitions(); for (int i = 0; i < transitions.length; i++) { PropertyChangeEvent evt = new PropertyChangeEvent(nodeElement, "transitionAdd", null, transitions[i]); node.propertyChange(evt); } } }