/** * Connects or disconnects the edge and port in this model based on * <code>remove</code>. Subclassers should override this to update * connectivity datastructures. */ protected void connect(Object edge, Object port, boolean isSource, boolean insert) { if (port instanceof Port) if (insert) ((Port) port).addEdge(edge); // Only removes if opposite is not // connected to same port else if ((isSource) ? getTarget(edge) != port : getSource(edge) != port) ((Port) port).removeEdge(edge); if (!insert) port = null; if (edge instanceof Edge) { if (isSource) ((Edge) edge).setSource(port); else ((Edge) edge).setTarget(port); } }