package org.jbpm.gd.common.notation;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.draw2d.geometry.Dimension;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.draw2d.geometry.Rectangle;
public abstract class AbstractNodeContainer extends Node implements NodeContainer {
List nodes = new ArrayList();
protected List danglingEdges = new ArrayList();
public AbstractNodeContainer() {
setConstraint(new Rectangle(new Point(0, 0), new Dimension(300, 150)));
}
public void addNode(Node node) {
nodes.add(node);
node.setContainer(this);
addArrivingEdges(node);
firePropertyChange("nodeAdd", null, node);
}
public void removeNode(Node node) {
removeArrivingEdges(node);
nodes.remove(node);
node.setContainer(null);
firePropertyChange("nodeRemove", node, null);
}
public List getNodes() {
return nodes;
}
protected void addArrivingEdges(Node node) {
}
protected void removeArrivingEdges(Node node) {
List list = node.getArrivingEdges();
for (int i = 0; i < list.size(); i++) {
Edge edge = (Edge)list.get(i);
node.removeArrivingEdge(edge);
danglingEdges.add(edge);
}
}
}