/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package automenta.spacenet.space.geom.graph.arrange; import automenta.spacenet.space.Space; import automenta.spacenet.space.geom.Box; import automenta.spacenet.space.geom.graph.GraphBox; import automenta.spacenet.space.geom.graph.GraphBoxModel; import java.util.LinkedList; import java.util.List; /** * * arranges a list of objects parametrically (ex: a curve or line) */ public abstract class CurveListing<N, E> implements GraphBoxModel<N, E> { private GraphBox<N, E> graphBox; private List<Object> objects = new LinkedList(); private final boolean includeNodes; private final boolean includeEdges; public CurveListing(boolean includeNodes, boolean includeEdges) { super(); this.includeNodes = includeNodes; this.includeEdges = includeEdges; } @Override public void start(GraphBox<N, E> graphBox) { this.graphBox = graphBox; } @Override public void stop() { objects.clear(); } @Override public void addedNode(N v, Box b) { if (includeNodes) { objects.add(v); refresh(); } } @Override public void removedNode(N v) { if (includeNodes) { objects.remove(v); refresh(); } } @Override public void addedEdge(E e, Space s, Box from, Box to) { if (includeEdges) { objects.add(e); refresh(); } } @Override public void removedEdge(E e) { if (includeEdges) { objects.remove(e); refresh(); } } public List<Object> getObjects() { return objects; } public GraphBox<N, E> getBox() { return graphBox; } abstract protected void refresh(); }