|
@@ -11,8 +11,11 @@ import animation.Memory;
|
|
import animation.PseudoCodeNode;
|
|
import animation.PseudoCodeNode;
|
|
import animation.PseudoCodeProcessor;
|
|
import animation.PseudoCodeProcessor;
|
|
import animation.Memory.MemoryType;
|
|
import animation.Memory.MemoryType;
|
|
|
|
+import codelines.DeclareVariable;
|
|
import codelines.FunctionCall;
|
|
import codelines.FunctionCall;
|
|
import codelines.FunctionDefinition;
|
|
import codelines.FunctionDefinition;
|
|
|
|
+import codelines.Kommentar;
|
|
|
|
+import codelines.SetVariable;
|
|
import graph.LayeredGraphNode;
|
|
import graph.LayeredGraphNode;
|
|
import lib.TextLayoutHelper;
|
|
import lib.TextLayoutHelper;
|
|
|
|
|
|
@@ -53,7 +56,7 @@ public class BKNodePlacement extends AnimatedAlgorithm {
|
|
@Override
|
|
@Override
|
|
public PseudoCodeNode createPseudocodeTree( JTree tree )
|
|
public PseudoCodeNode createPseudocodeTree( JTree tree )
|
|
{
|
|
{
|
|
- String[] vars = { "graph" };
|
|
|
|
|
|
+ String[] vars = { "layout", "graph" };
|
|
PseudoCodeNode mainFunction = new PseudoCodeNode( TextLayoutHelper.setupPseudoCode("function bkNodePlacement( graph )", vars ), tree, new FunctionDefinition( new String[]{"graph"} ) );
|
|
PseudoCodeNode mainFunction = new PseudoCodeNode( TextLayoutHelper.setupPseudoCode("function bkNodePlacement( graph )", vars ), tree, new FunctionDefinition( new String[]{"graph"} ) );
|
|
root = new PseudoCodeNode( TextLayoutHelper.setupPseudoCodeStage("-- BK Node Placement Algorithm --" ), tree, new CodeLine() {
|
|
root = new PseudoCodeNode( TextLayoutHelper.setupPseudoCodeStage("-- BK Node Placement Algorithm --" ), tree, new CodeLine() {
|
|
|
|
|
|
@@ -79,10 +82,53 @@ public class BKNodePlacement extends AnimatedAlgorithm {
|
|
root.setSelected( true );
|
|
root.setSelected( true );
|
|
|
|
|
|
PseudoCodeNode conflictDetectionFunction = new ConflictDetection( this ).createPseudocodeTree( tree );
|
|
PseudoCodeNode conflictDetectionFunction = new ConflictDetection( this ).createPseudocodeTree( tree );
|
|
- PseudoCodeNode node1 = new PseudoCodeNode( TextLayoutHelper.setupPseudoCode( "call detectConflicts( graph )", vars ), tree, new FunctionCall( conflictDetectionFunction, new String[]{ "graph" } ) );
|
|
|
|
|
|
+ PseudoCodeNode calcLayout = new PseudoCodeNode( TextLayoutHelper.setupPseudoCode( "function calcLayout( layout, graph )", vars ), tree, new FunctionDefinition( vars ) );
|
|
|
|
+ PseudoCodeNode combine = new Combine().createPseudocodeTree( tree );
|
|
root.add( mainFunction );
|
|
root.add( mainFunction );
|
|
- mainFunction.add( node1 );
|
|
|
|
|
|
+ mainFunction.add( new PseudoCodeNode( TextLayoutHelper.setupPseudoCode( "call detectConflicts( graph )", vars ), tree, new FunctionCall( conflictDetectionFunction, new String[]{ "graph" } ) ) );
|
|
|
|
+ mainFunction.add( new PseudoCodeNode( TextLayoutHelper.setupPseudoCode( "layout = TOP_LEFT", vars ), tree, new DeclareVariable<String>( "layout" ) {
|
|
|
|
+ @Override
|
|
|
|
+ protected String value(Memory m) {
|
|
|
|
+ return "TOP_LEFT";
|
|
|
|
+ }
|
|
|
|
+ }) );
|
|
|
|
+ mainFunction.add( new PseudoCodeNode( TextLayoutHelper.setupPseudoCode( "call calcLayout( layout, graph )", vars ), tree, new FunctionCall( calcLayout, new String[]{ "layout", "graph" } ) ) );
|
|
|
|
+ mainFunction.add( new PseudoCodeNode( TextLayoutHelper.setupPseudoCode( "layout = TOP_RIGHT", vars ), tree, new SetVariable<String>( "layout" ) {
|
|
|
|
+ @Override
|
|
|
|
+ protected String value(Memory m) {
|
|
|
|
+ return "TOP_RIGHT";
|
|
|
|
+ }
|
|
|
|
+ }) );
|
|
|
|
+ mainFunction.add( new PseudoCodeNode( TextLayoutHelper.setupPseudoCode( "call calcLayout( layout, graph )", vars ), tree, new FunctionCall( calcLayout, new String[]{ "layout", "graph" } ) ) );
|
|
|
|
+ mainFunction.add( new PseudoCodeNode( TextLayoutHelper.setupPseudoCode( "layout = BOTTOM_LEFT", vars ), tree, new SetVariable<String>( "layout" ) {
|
|
|
|
+ @Override
|
|
|
|
+ protected String value(Memory m) {
|
|
|
|
+ return "BOTTOM_LEFT";
|
|
|
|
+ }
|
|
|
|
+ }) );
|
|
|
|
+ mainFunction.add( new PseudoCodeNode( TextLayoutHelper.setupPseudoCode( "call calcLayout( layout, graph )", vars ), tree, new FunctionCall( calcLayout, new String[]{ "layout", "graph" } ) ) );
|
|
|
|
+ mainFunction.add( new PseudoCodeNode( TextLayoutHelper.setupPseudoCode( "layout = BOTTOM_RIGHT", vars ), tree, new SetVariable<String>( "layout" ) {
|
|
|
|
+ @Override
|
|
|
|
+ protected String value(Memory m) {
|
|
|
|
+ return "BOTTOM_RIGHT";
|
|
|
|
+ }
|
|
|
|
+ }) );
|
|
|
|
+ mainFunction.add( new PseudoCodeNode( TextLayoutHelper.setupPseudoCode( "call calcLayout( layout, graph )", vars ), tree, new FunctionCall( calcLayout, new String[]{ "layout", "graph" } ) ) );
|
|
|
|
+ mainFunction.add( new PseudoCodeNode( TextLayoutHelper.setupPseudoCode( "call combine( graph )", vars ), tree, new FunctionCall( combine, new String[]{ "graph" } ) ) );
|
|
|
|
+ root.add( new PseudoCodeNode( TextLayoutHelper.setupPseudoCodeStage( "-- Markiert alle Typ 1 konflikte im Graphen --" ), tree, new Kommentar() ) );
|
|
root.add( conflictDetectionFunction );
|
|
root.add( conflictDetectionFunction );
|
|
|
|
+ PseudoCodeNode blockCalc = new BlockCalc().createPseudocodeTree( tree );
|
|
|
|
+ PseudoCodeNode horizontalCompaction = new Compaction().createPseudocodeTree( tree );
|
|
|
|
+ calcLayout.add( new PseudoCodeNode( TextLayoutHelper.setupPseudoCode( "call calculateBlockGraph( layout, graph )", vars ), tree, new FunctionCall( blockCalc, vars ) ) );
|
|
|
|
+ calcLayout.add( new PseudoCodeNode( TextLayoutHelper.setupPseudoCode( "call horizontalCompaction( layout, graph )", vars ), tree, new FunctionCall( horizontalCompaction, vars ) ) );
|
|
|
|
+ root.add( new PseudoCodeNode( TextLayoutHelper.setupPseudoCodeStage( "-- Berechnet ein bestimmtes extremes layout --" ), tree, new Kommentar() ) );
|
|
|
|
+ root.add( calcLayout );
|
|
|
|
+ root.add( new PseudoCodeNode( TextLayoutHelper.setupPseudoCodeStage( "-- Berechnet den Blockgraphen eines layouts --" ), tree, new Kommentar() ) );
|
|
|
|
+ root.add( blockCalc );
|
|
|
|
+ root.add( new PseudoCodeNode( TextLayoutHelper.setupPseudoCodeStage( "-- Berechnet die Positionen der Knoten eines Layouts --" ), tree, new Kommentar() ) );
|
|
|
|
+ root.add( horizontalCompaction );
|
|
|
|
+ root.add( new PseudoCodeNode( TextLayoutHelper.setupPseudoCodeStage( "-- Kombiniert die 4 Layouts zum Ergebnis --" ), tree, new Kommentar() ) );
|
|
|
|
+ root.add( combine );
|
|
processor = new PseudoCodeProcessor( root );
|
|
processor = new PseudoCodeProcessor( root );
|
|
return root;
|
|
return root;
|
|
}
|
|
}
|