|
@@ -1,6 +1,7 @@
|
|
|
package bk;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Collections;
|
|
|
|
|
|
import javax.swing.JTree;
|
|
|
|
|
@@ -74,12 +75,21 @@ public class Compaction implements AlgorithmStage{
|
|
|
|
|
|
private LayeredGraphNode getNodeFromIndex( int index )
|
|
|
{
|
|
|
- for( ArrayList< LayeredGraphNode > l : graph.getContainedLayers() )
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ ArrayList<ArrayList<LayeredGraphNode>> layer = (ArrayList<ArrayList<LayeredGraphNode>>) graph.getContainedLayers().clone();
|
|
|
+ if( layout == LayoutType.BOTTOM_TOP_LEFT || layout == LayoutType.BOTTOM_TOP_RIGHT )
|
|
|
+ Collections.reverse( layer );
|
|
|
+ for( ArrayList< LayeredGraphNode > l : layer )
|
|
|
{
|
|
|
if( index >= l.size() )
|
|
|
index -= l.size();
|
|
|
else
|
|
|
- return l.get( index );
|
|
|
+ {
|
|
|
+ if( layout == LayoutType.BOTTOM_TOP_LEFT || layout == LayoutType.TOP_BOTTOM_LEFT )
|
|
|
+ return l.get( index );
|
|
|
+ else
|
|
|
+ return l.get( l.size() - index - 1 );
|
|
|
+ }
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
@@ -395,7 +405,7 @@ public class Compaction implements AlgorithmStage{
|
|
|
applyLoopNode.setSelected( false );
|
|
|
return StageStatus.FINISHED;
|
|
|
}
|
|
|
- LayeredGraphNode v = graph.getContainedNodes().get( vIndex );
|
|
|
+ LayeredGraphNode v = getNodeFromIndex( vIndex );
|
|
|
double oldX = v.getX( layout );
|
|
|
boolean oldDef = !v.isXUndefined( layout );
|
|
|
|