|
@@ -83,11 +83,13 @@ public class Compaction implements AlgorithmStage{
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public StageStatus forwardStep() {
|
|
public StageStatus forwardStep() {
|
|
|
|
+ breakPoint = false;
|
|
int acSize = actions.size();
|
|
int acSize = actions.size();
|
|
if( state == CompactionState.PLACE_BLOCKS ) // blöcke platzieren
|
|
if( state == CompactionState.PLACE_BLOCKS ) // blöcke platzieren
|
|
{
|
|
{
|
|
inside = true;
|
|
inside = true;
|
|
- breakPoint = !placeNode.setSelected( true );
|
|
|
|
|
|
+ if( !placeNode.isSelected() )
|
|
|
|
+ breakPoint = !placeNode.setSelected( true );
|
|
breakPoint |= !placeLoopNode.setSelected( true );
|
|
breakPoint |= !placeLoopNode.setSelected( true );
|
|
if( stack.size() == 0 ) // äußere schleife, placeblocks bisher nicht aufgerufen
|
|
if( stack.size() == 0 ) // äußere schleife, placeblocks bisher nicht aufgerufen
|
|
{
|
|
{
|
|
@@ -111,7 +113,8 @@ public class Compaction implements AlgorithmStage{
|
|
// wechsele in die phase des Blöckeshiftens
|
|
// wechsele in die phase des Blöckeshiftens
|
|
placeNode.setSelected( false );
|
|
placeNode.setSelected( false );
|
|
placeLoopNode.setSelected( false );
|
|
placeLoopNode.setSelected( false );
|
|
- breakPoint |= !applyNode.setSelected( true );
|
|
|
|
|
|
+ if( !applyNode.isSelected() )
|
|
|
|
+ breakPoint |= !applyNode.setSelected( true );
|
|
breakPoint |= !applyLoopNode.setSelected( true );
|
|
breakPoint |= !applyLoopNode.setSelected( true );
|
|
state = CompactionState.APPLY_SHIFT;
|
|
state = CompactionState.APPLY_SHIFT;
|
|
inside = false;
|
|
inside = false;
|
|
@@ -119,7 +122,9 @@ public class Compaction implements AlgorithmStage{
|
|
actions.add( 0, ()-> {
|
|
actions.add( 0, ()-> {
|
|
applyNode.setSelected( false );
|
|
applyNode.setSelected( false );
|
|
applyLoopNode.setSelected( false );
|
|
applyLoopNode.setSelected( false );
|
|
- breakPoint = !placeNode.setSelected( true );
|
|
|
|
|
|
+ breakPoint = false;
|
|
|
|
+ if( !placeNode.isSelected() )
|
|
|
|
+ breakPoint |= !placeNode.setSelected( true );
|
|
breakPoint |= !placeLoopNode.setSelected( true );
|
|
breakPoint |= !placeLoopNode.setSelected( true );
|
|
vIndex = oldVIndex;
|
|
vIndex = oldVIndex;
|
|
inside = false;
|
|
inside = false;
|
|
@@ -139,7 +144,9 @@ public class Compaction implements AlgorithmStage{
|
|
|
|
|
|
// die "undo"-action
|
|
// die "undo"-action
|
|
actions.add( 0, ()-> {
|
|
actions.add( 0, ()-> {
|
|
- breakPoint = !placeNode.setSelected( true );
|
|
|
|
|
|
+ breakPoint = false;
|
|
|
|
+ if( !placeNode.isSelected() )
|
|
|
|
+ breakPoint |= !placeNode.setSelected( true );
|
|
breakPoint |= !placeLoopNode.setSelected( true );
|
|
breakPoint |= !placeLoopNode.setSelected( true );
|
|
inside = true;
|
|
inside = true;
|
|
stack.get( 0 ).v.setX( oldX, false, layout );
|
|
stack.get( 0 ).v.setX( oldX, false, layout );
|
|
@@ -176,7 +183,9 @@ public class Compaction implements AlgorithmStage{
|
|
|
|
|
|
// die "undo"-action
|
|
// die "undo"-action
|
|
actions.add( 0, ()-> {
|
|
actions.add( 0, ()-> {
|
|
- breakPoint = !placeNode.setSelected( true );
|
|
|
|
|
|
+ breakPoint = false;
|
|
|
|
+ if( !placeNode.isSelected() )
|
|
|
|
+ breakPoint |= !placeNode.setSelected( true );
|
|
breakPoint |= !placeLoopNode.setSelected( true );
|
|
breakPoint |= !placeLoopNode.setSelected( true );
|
|
inside = true;
|
|
inside = true;
|
|
stack.get( 0 ).v.setX( oldX, false, layout );
|
|
stack.get( 0 ).v.setX( oldX, false, layout );
|
|
@@ -190,7 +199,9 @@ public class Compaction implements AlgorithmStage{
|
|
// tue nix
|
|
// tue nix
|
|
sf.w.setSelected( layout );
|
|
sf.w.setSelected( layout );
|
|
actions.add( 0, ()-> {
|
|
actions.add( 0, ()-> {
|
|
- breakPoint = !placeNode.setSelected( true );
|
|
|
|
|
|
+ breakPoint = false;
|
|
|
|
+ if( !placeNode.isSelected() )
|
|
|
|
+ breakPoint |= !placeNode.setSelected( true );
|
|
breakPoint |= !placeLoopNode.setSelected( true );
|
|
breakPoint |= !placeLoopNode.setSelected( true );
|
|
inside = true;
|
|
inside = true;
|
|
stack.get( 0 ).u = null;
|
|
stack.get( 0 ).u = null;
|
|
@@ -207,7 +218,9 @@ public class Compaction implements AlgorithmStage{
|
|
System.out.println( "return place_block( " + sf.v + " )" );
|
|
System.out.println( "return place_block( " + sf.v + " )" );
|
|
stack.remove( 0 );
|
|
stack.remove( 0 );
|
|
actions.add( 0, ()-> {
|
|
actions.add( 0, ()-> {
|
|
- breakPoint = !placeNode.setSelected( true );
|
|
|
|
|
|
+ breakPoint = false;
|
|
|
|
+ if( !placeNode.isSelected() )
|
|
|
|
+ breakPoint |= !placeNode.setSelected( true );
|
|
breakPoint |= !placeLoopNode.setSelected( true );
|
|
breakPoint |= !placeLoopNode.setSelected( true );
|
|
inside = true;
|
|
inside = true;
|
|
stack.add( 0, sf );
|
|
stack.add( 0, sf );
|
|
@@ -218,7 +231,9 @@ public class Compaction implements AlgorithmStage{
|
|
else
|
|
else
|
|
{ //nur "undo aktion" hinzufügen
|
|
{ //nur "undo aktion" hinzufügen
|
|
actions.add( 0, ()-> {
|
|
actions.add( 0, ()-> {
|
|
- breakPoint = !placeNode.setSelected( true );
|
|
|
|
|
|
+ breakPoint = false;
|
|
|
|
+ if( !placeNode.isSelected() )
|
|
|
|
+ breakPoint |= !placeNode.setSelected( true );
|
|
breakPoint |= !placeLoopNode.setSelected( true );
|
|
breakPoint |= !placeLoopNode.setSelected( true );
|
|
inside = true;
|
|
inside = true;
|
|
sf.w = oldW;
|
|
sf.w = oldW;
|
|
@@ -266,7 +281,9 @@ public class Compaction implements AlgorithmStage{
|
|
System.out.println( "return place_block( " + sf.v + " )" );
|
|
System.out.println( "return place_block( " + sf.v + " )" );
|
|
stack.remove( 0 );
|
|
stack.remove( 0 );
|
|
actions.add( 0, ()-> {
|
|
actions.add( 0, ()-> {
|
|
- breakPoint = !placeNode.setSelected( true );
|
|
|
|
|
|
+ breakPoint = false;
|
|
|
|
+ if( !placeNode.isSelected() )
|
|
|
|
+ breakPoint |= !placeNode.setSelected( true );
|
|
breakPoint |= !placeLoopNode.setSelected( true );
|
|
breakPoint |= !placeLoopNode.setSelected( true );
|
|
inside = true;
|
|
inside = true;
|
|
stack.add( 0, sf );
|
|
stack.add( 0, sf );
|
|
@@ -281,7 +298,9 @@ public class Compaction implements AlgorithmStage{
|
|
else
|
|
else
|
|
{ //nur "undo aktion" hinzufügen
|
|
{ //nur "undo aktion" hinzufügen
|
|
actions.add( 0, ()-> {
|
|
actions.add( 0, ()-> {
|
|
- breakPoint = !placeNode.setSelected( true );
|
|
|
|
|
|
+ breakPoint = false;
|
|
|
|
+ if( !placeNode.isSelected() )
|
|
|
|
+ breakPoint |= !placeNode.setSelected( true );
|
|
breakPoint |= !placeLoopNode.setSelected( true );
|
|
breakPoint |= !placeLoopNode.setSelected( true );
|
|
inside = true;
|
|
inside = true;
|
|
stack.get( 0 ).v.setSink( oldSink, layout );
|
|
stack.get( 0 ).v.setSink( oldSink, layout );
|
|
@@ -298,7 +317,8 @@ public class Compaction implements AlgorithmStage{
|
|
else if( state == CompactionState.APPLY_SHIFT )// "Compute absolute coordinates"
|
|
else if( state == CompactionState.APPLY_SHIFT )// "Compute absolute coordinates"
|
|
{
|
|
{
|
|
inside = true;
|
|
inside = true;
|
|
- breakPoint = !applyNode.setSelected( true );
|
|
|
|
|
|
+ if( !applyNode.isSelected() )
|
|
|
|
+ breakPoint |= !applyNode.setSelected( true );
|
|
breakPoint |= !applyLoopNode.setSelected( true );
|
|
breakPoint |= !applyLoopNode.setSelected( true );
|
|
if( vIndex >= graph.getContainedNodes().size() )
|
|
if( vIndex >= graph.getContainedNodes().size() )
|
|
{
|
|
{
|
|
@@ -317,7 +337,9 @@ public class Compaction implements AlgorithmStage{
|
|
v.setX( v.getX( layout ) + v.getSink( layout ).getShift( layout ), true, layout );
|
|
v.setX( v.getX( layout ) + v.getSink( layout ).getShift( layout ), true, layout );
|
|
actions.add( 0, ()-> {
|
|
actions.add( 0, ()-> {
|
|
inside = true;
|
|
inside = true;
|
|
- breakPoint = !applyNode.setSelected( true );
|
|
|
|
|
|
+ breakPoint = false;
|
|
|
|
+ if( !applyNode.isSelected() )
|
|
|
|
+ breakPoint |= !applyNode.setSelected( true );
|
|
breakPoint |= !applyLoopNode.setSelected( true );
|
|
breakPoint |= !applyLoopNode.setSelected( true );
|
|
v.setX( oldX, oldDef, layout );
|
|
v.setX( oldX, oldDef, layout );
|
|
v.setSelected( layout );
|
|
v.setSelected( layout );
|