@@ -0,0 +1,1657 @@
+package timeBench.action.layout;%0D%0A%0D%0Aimport java.util.Iterator;%0D%0A%0D%0Aimport prefuse.data.expression.ColumnExpression;%0D%0Aimport prefuse.data.expression.ComparisonPredicate;%0D%0Aimport prefuse.data.expression.NumericLiteral;%0D%0Aimport prefuse.visual.NodeItem;%0D%0Aimport prefuse.visual.VisualGraph;%0D%0Aimport prefuse.visual.VisualTable;%0D%0Aimport timeBench.data.GranularityAggregationTree;%0D%0Aimport ieg.prefuse.action.LinePlotAction;%0D%0A%0D%0A/**%0D%0A * Creates a group with line segments that connect the nodes at a given level%0D%0A * with their immediate siblings.%0D%0A * %0D%0A * @author Rind%0D%0A */%0D%0Apublic class CyclePlotLineAction extends LinePlotAction %7B%0D%0A%0D%0A    private int depth;%0D%0A%0D%0A    public CyclePlotLineAction(String group, String source, int depth) %7B%0D%0A        super(group, source);%0D%0A        this.depth = depth;%0D%0A    %7D%0D%0A%0D%0A    @Override%0D%0A    public void run(double frac) %7B%0D%0A        // get a visual table for line segments%0D%0A        VisualTable lines = getTable();%0D%0A%0D%0A        // get all nodes at depth-1%0D%0A        VisualGraph graph = (VisualGraph) m_vis.getGroup(m_src);%0D%0A        @SuppressWarnings(%22rawtypes%22)%0D%0A        Iterator nodeIterator = graph.getNodeTable().tuples(%0D%0A                new ComparisonPredicate(ComparisonPredicate.EQ,%0D%0A                        new ColumnExpression(GranularityAggregationTree.DEPTH),%0D%0A                        new NumericLiteral(depth - 1)));%0D%0A%0D%0A        // connect children of these nodes%0D%0A        while (nodeIterator.hasNext()) %7B%0D%0A            NodeItem node = (NodeItem) nodeIterator.next();%0D%0A            // TODO assumption that children are ordered or reversely ordered%0D%0A            super.connectPoints(lines, node.inNeighbors());%0D%0A        %7D%0D%0A    %7D%0D%0A%0D%0A%7D%0D%0A

add line segments for cycle plot