Parcourir la source

Merge remote-tracking branch 'origin/master'

Eren Yilmaz il y a 6 ans
Parent
commit
f4d7cf617c

+ 1 - 0
save.graph

@@ -0,0 +1 @@
+{"layers":[[{"layers":[],"edges":[],"name":"0"},{"layers":[],"edges":[],"name":"1"},{"layers":[],"edges":[],"name":"2"},{"layers":[],"edges":[],"name":"3"},{"layers":[],"edges":[],"name":"4"},{"layers":[],"edges":[],"name":"5"},{"layers":[],"edges":[],"name":"6"},{"layers":[],"edges":[],"name":"7"}],[{"layers":[],"edges":[],"name":"8"},{"layers":[],"edges":[],"name":"9"},{"layers":[],"edges":[],"name":"10"},{"layers":[],"edges":[],"name":"11"},{"layers":[],"edges":[],"name":"12"},{"layers":[],"edges":[],"name":"13"},{"layers":[],"edges":[],"name":"14"}],[{"layers":[],"edges":[],"name":"15"},{"layers":[],"edges":[],"name":"16"},{"layers":[],"edges":[],"name":"17"},{"layers":[],"edges":[],"name":"18"},{"layers":[],"edges":[],"name":"19"},{"layers":[],"edges":[],"name":"20"},{"layers":[],"edges":[],"name":"21"},{"layers":[],"edges":[],"name":"22"}],[{"layers":[],"edges":[],"name":"23"},{"layers":[],"edges":[],"name":"24"},{"layers":[],"edges":[],"name":"25"},{"layers":[],"edges":[],"name":"26"},{"layers":[],"edges":[],"name":"27"},{"layers":[],"edges":[],"name":"28"},{"layers":[],"edges":[],"name":"29"},{"layers":[],"edges":[],"name":"30"}],[{"layers":[],"edges":[],"name":"31"},{"layers":[],"edges":[],"name":"32"},{"layers":[],"edges":[],"name":"33"},{"layers":[],"edges":[],"name":"34"},{"layers":[],"edges":[],"name":"35"}],[{"layers":[],"edges":[],"name":"36"},{"layers":[],"edges":[],"name":"37"},{"layers":[],"edges":[],"name":"38"},{"layers":[],"edges":[],"name":"39"},{"layers":[],"edges":[],"name":"40"}],[{"layers":[],"edges":[],"name":"41"},{"layers":[],"edges":[],"name":"42"},{"layers":[],"edges":[],"name":"43"},{"layers":[],"edges":[],"name":"44"},{"layers":[],"edges":[],"name":"45"}],[{"layers":[],"edges":[],"name":"46"},{"layers":[],"edges":[],"name":"47"},{"layers":[],"edges":[],"name":"48"},{"layers":[],"edges":[],"name":"49"},{"layers":[],"edges":[],"name":"50"}],[{"layers":[],"edges":[],"name":"51"},{"layers":[],"edges":[],"name":"52"},{"layers":[],"edges":[],"name":"53"},{"layers":[],"edges":[],"name":"54"},{"layers":[],"edges":[],"name":"55"},{"layers":[],"edges":[],"name":"56"},{"layers":[],"edges":[],"name":"57"}]],"edges":[{"source":"4","target":"9"},{"source":"7","target":"12"},{"source":"5","target":"10"},{"source":"6","target":"11"},{"source":"7","target":"11"},{"source":"11","target":"16"},{"source":"11","target":"18"},{"source":"14","target":"22"},{"source":"13","target":"22"},{"source":"11","target":"19"},{"source":"13","target":"20"},{"source":"10","target":"17"},{"source":"20","target":"26"},{"source":"17","target":"26"},{"source":"15","target":"24"},{"source":"21","target":"27"},{"source":"16","target":"25"},{"source":"24","target":"31"},{"source":"24","target":"32"},{"source":"29","target":"33"},{"source":"34","target":"37"},{"source":"31","target":"36"},{"source":"40","target":"44"},{"source":"37","target":"43"},{"source":"47","target":"54"},{"source":"50","target":"54"}]}

+ 2 - 3
src/Algorithms/Animated/BK/BlockCalc.java

@@ -43,7 +43,6 @@ public class BlockCalc implements AlgorithmStage {
 	
 	
 	@Override
 	@Override
 	public StageStatus forwardStep() {
 	public StageStatus forwardStep() {
-		System.out.println( "test" );
 		LayeredGraphNode current = graph.getContainedLayers().get( layerIndex ).get( nodeIndex );
 		LayeredGraphNode current = graph.getContainedLayers().get( layerIndex ).get( nodeIndex );
 		current.setSelected();
 		current.setSelected();
 		if( current.getContainedNodes().size() > 0 )
 		if( current.getContainedNodes().size() > 0 )
@@ -56,7 +55,6 @@ public class BlockCalc implements AlgorithmStage {
 		ArrayList< LayeredGraphEdge > incommingEdges = current.getIncomingEdges();
 		ArrayList< LayeredGraphEdge > incommingEdges = current.getIncomingEdges();
 		if( incommingEdges.size() == 0 )
 		if( incommingEdges.size() == 0 )
 		{
 		{
-			//current.update();
 			backwards.add( 0, () -> {
 			backwards.add( 0, () -> {
 				System.out.println( "Performing Empty Backwards Step..." );
 				System.out.println( "Performing Empty Backwards Step..." );
 			});
 			});
@@ -70,8 +68,9 @@ public class BlockCalc implements AlgorithmStage {
 		    {
 		    {
                 LayeredGraphNode u = incommingEdges.get( m - 1 ).getSources().get( 0 );
                 LayeredGraphNode u = incommingEdges.get( m - 1 ).getSources().get( 0 );
                 ArrayList<LayeredGraphEdge> conflicts = incommingEdges.get( m - 1 ).calcConflictedEdges();
                 ArrayList<LayeredGraphEdge> conflicts = incommingEdges.get( m - 1 ).calcConflictedEdges();
-		        if( !incommingEdges.get( m - 1 ).isConflicted() && r < graph.getContainedLayers().get( layerIndex - 1 ).indexOf( u ) )
+		        if( !incommingEdges.get( m - 1 ).isConflicted() && r < graph.getContainedLayers().get( layerIndex - 1 ).indexOf( u ) + 1 )
 		        {
 		        {
+		        	System.out.println( "" );
 		        	ArrayList< Boolean > oldConflicts = new ArrayList<>();
 		        	ArrayList< Boolean > oldConflicts = new ArrayList<>();
 		        	for( LayeredGraphEdge e : conflicts )
 		        	for( LayeredGraphEdge e : conflicts )
 		        	{
 		        	{

+ 6 - 2
src/Algorithms/Animated/BK/Compaction.java

@@ -100,9 +100,9 @@ public class Compaction implements AlgorithmStage{
 				StackFrame sf = stack.get( 0 );
 				StackFrame sf = stack.get( 0 );
 				if( sf.u == null )
 				if( sf.u == null )
 				{
 				{
-					if( graph.getContainedLayers().get( sf.w.getLayer() ).indexOf( sf.w ) > 1 )
+					if( graph.getContainedLayers().get( sf.w.getLayer() ).indexOf( sf.w ) >= 1 )
 					{
 					{
-						sf.u = graph.getContainedLayers().get( sf.w.getLayer() ).get( graph.getContainedLayers().get( sf.w.getLayer() ).indexOf( sf.w ) - 1 );
+						sf.u = graph.getContainedLayers().get( sf.w.getLayer() ).get( graph.getContainedLayers().get( sf.w.getLayer() ).indexOf( sf.w ) - 1 ).getRoot();
 						if( sf.u.isXUndefined() )
 						if( sf.u.isXUndefined() )
 						{
 						{
 							StackFrame nsf = new StackFrame();
 							StackFrame nsf = new StackFrame();
@@ -166,6 +166,8 @@ public class Compaction implements AlgorithmStage{
 						sf.v.setX( Math.max( sf.v.getX(), sf.u.getX() + calcSpacing() ), true );
 						sf.v.setX( Math.max( sf.v.getX(), sf.u.getX() + calcSpacing() ), true );
 					LayeredGraphNode oldW = sf.w;
 					LayeredGraphNode oldW = sf.w;
 					sf.w = sf.w.getAlignedTo();
 					sf.w = sf.w.getAlignedTo();
+					LayeredGraphNode oldU = sf.u;
+					sf.u = null;
 					if( sf.w == sf.v )
 					if( sf.w == sf.v )
 					{
 					{
 						stack.remove( 0 );
 						stack.remove( 0 );
@@ -173,6 +175,7 @@ public class Compaction implements AlgorithmStage{
 							stack.add( 0, sf );
 							stack.add( 0, sf );
 							stack.get( 0 ).v.setSink(  oldSink );
 							stack.get( 0 ).v.setSink(  oldSink );
 							sinkOfU.setShift( oldShift );
 							sinkOfU.setShift( oldShift );
+							sf.u = oldU;
 							sf.v.setX( oldX, oldDef );
 							sf.v.setX( oldX, oldDef );
 							sf.v.setSelected();
 							sf.v.setSelected();
 							sf.w = oldW;
 							sf.w = oldW;
@@ -183,6 +186,7 @@ public class Compaction implements AlgorithmStage{
 						actions.add( 0, ()-> {
 						actions.add( 0, ()-> {
 							stack.get( 0 ).v.setSink(  oldSink );
 							stack.get( 0 ).v.setSink(  oldSink );
 							sinkOfU.setShift( oldShift );
 							sinkOfU.setShift( oldShift );
+							sf.u = oldU;
 							sf.v.setX( oldX, oldDef );
 							sf.v.setX( oldX, oldDef );
 							sf.v.setSelected();
 							sf.v.setSelected();
 							sf.w = oldW;
 							sf.w = oldW;

+ 2 - 1
src/Main.java

@@ -1,6 +1,7 @@
 import Algorithms.InitializeNodePositions;
 import Algorithms.InitializeNodePositions;
 import Algorithms.RandomGraphGenerator;
 import Algorithms.RandomGraphGenerator;
 import Algorithms.SweepCrossingMinimizer;
 import Algorithms.SweepCrossingMinimizer;
+import IO.Reader;
 import Model.LayeredGraphNode;
 import Model.LayeredGraphNode;
 import View.MainView;
 import View.MainView;
 
 
@@ -14,7 +15,7 @@ public class Main {
 	public static void main(String[] args) {
 	public static void main(String[] args) {
 		//Reader r = new Reader( "save.graph" );
 		//Reader r = new Reader( "save.graph" );
 		//LayeredGraphNode graph = r.readInputGraph();
 		//LayeredGraphNode graph = r.readInputGraph();
-	    RandomGraphGenerator r = new RandomGraphGenerator( 0.1, 0.1, 5, 10, 5, 10, 2 );
+	    RandomGraphGenerator r = new RandomGraphGenerator( 0.1, 0.1, 5, 10, 5, 10, 1 );
 	    LayeredGraphNode graph = r.createRandomNode( null, 0 );
 	    LayeredGraphNode graph = r.createRandomNode( null, 0 );
 	    SweepCrossingMinimizer cminzer = new SweepCrossingMinimizer();
 	    SweepCrossingMinimizer cminzer = new SweepCrossingMinimizer();
 	    for( int i = 0; i < 10; i++ )
 	    for( int i = 0; i < 10; i++ )

+ 9 - 2
src/View/EdgeView.java

@@ -3,6 +3,7 @@ package View;
 import java.awt.BasicStroke;
 import java.awt.BasicStroke;
 import java.awt.Color;
 import java.awt.Color;
 import java.awt.Component;
 import java.awt.Component;
+import java.awt.Dimension;
 import java.awt.Graphics;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
 import java.awt.Graphics2D;
 import java.awt.Point;
 import java.awt.Point;
@@ -66,17 +67,23 @@ public class EdgeView extends JPanel {
         return (int)max + 10;
         return (int)max + 10;
     }
     }
     
     
+    @Override
+    public Dimension getPreferredSize()
+    {
+    	return new Dimension( getWidth(), getHeight() );
+    }
+    
     @Override
     @Override
     public void paint( Graphics g )
     public void paint( Graphics g )
     {
     {
-        paintComponent( g );
+        paintComponent( g );/*
         for( Component c : getComponents() )
         for( Component c : getComponents() )
             c.paint( g.create( 
             c.paint( g.create( 
                     c.getX() + 10, 
                     c.getX() + 10, 
                     c.getY() + 10, 
                     c.getY() + 10, 
                     Math.min( getWidth() - 10, c.getWidth() + c.getX() + 10 ), 
                     Math.min( getWidth() - 10, c.getWidth() + c.getX() + 10 ), 
                     Math.min( getHeight() - 10, c.getHeight() + c.getY() + 10 ) ) );
                     Math.min( getHeight() - 10, c.getHeight() + c.getY() + 10 ) ) );
-    }
+    */}
 
 
     @Override
     @Override
     public void paintComponent( Graphics g )
     public void paintComponent( Graphics g )

+ 7 - 6
src/View/MainView.java

@@ -60,6 +60,7 @@ public class MainView {
                 	controller.setNextAction( Action.FORWARD );
                 	controller.setNextAction( Action.FORWARD );
                 if( e.getKeyCode() == KeyEvent.VK_P )
                 if( e.getKeyCode() == KeyEvent.VK_P )
                 	controller.setContinuous( !controller.isContinuous() );
                 	controller.setContinuous( !controller.isContinuous() );
+        		frame.validate();
             }
             }
 
 
             @Override
             @Override
@@ -84,18 +85,18 @@ public class MainView {
 		NodeView graphView = new NodeView( gNode );
 		NodeView graphView = new NodeView( gNode );
 		graphView.setLayout( null );
 		graphView.setLayout( null );
 		graphView.setOpaque( true );
 		graphView.setOpaque( true );
-        for( LayeredGraphEdge e : gNode.getContainedEdges() )
-        {
-            EdgeView ev = new EdgeView( e );
-            ev.setOpaque( true );
-            graphView.add( ev );
-        }
 		for( LayeredGraphNode n : gNode.getContainedNodes() )
 		for( LayeredGraphNode n : gNode.getContainedNodes() )
 		{
 		{
 		    NodeView nv = createNodeView( n );
 		    NodeView nv = createNodeView( n );
 		    nv.setBounds( nv.getX(), nv.getY(), nv.getWidth(), nv.getHeight() );
 		    nv.setBounds( nv.getX(), nv.getY(), nv.getWidth(), nv.getHeight() );
 			graphView.add( nv );
 			graphView.add( nv );
 		}
 		}
+        for( LayeredGraphEdge e : gNode.getContainedEdges() )
+        {
+            EdgeView ev = new EdgeView( e );
+            ev.setOpaque( true );
+            graphView.add( ev );
+        }
 		return graphView;
 		return graphView;
 	}
 	}
 }
 }

+ 15 - 14
src/View/NodeView.java

@@ -3,6 +3,7 @@ package View;
 import java.awt.BasicStroke;
 import java.awt.BasicStroke;
 import java.awt.Color;
 import java.awt.Color;
 import java.awt.Component;
 import java.awt.Component;
+import java.awt.Dimension;
 import java.awt.Graphics;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
 import java.awt.Graphics2D;
 
 
@@ -22,6 +23,7 @@ public class NodeView extends JPanel {
 	public NodeView( LayeredGraphNode model ) {
 	public NodeView( LayeredGraphNode model ) {
 		this.model = model;
 		this.model = model;
 		model.setView( this );
 		model.setView( this );
+		setSize( (int)model.getWidth(), (int)model.getHeight() );
 	}
 	}
 	
 	
 	@Override
 	@Override
@@ -37,29 +39,28 @@ public class NodeView extends JPanel {
     }
     }
     
     
     @Override
     @Override
-    public int getWidth()
+    public Dimension getPreferredSize()
     {
     {
-        return (int)model.getWidth();
-    }
-    
-    @Override
-    public int getHeight()
-    {
-        return (int)model.getHeight();
+    	return new Dimension( (int)model.getWidth(), (int)model.getHeight() );
     }
     }
     
     
     @Override
     @Override
     public void paint( Graphics g )
     public void paint( Graphics g )
     {
     {
-        double scale = Math.min( super.getWidth() / (double)getWidth(), super.getHeight() / (double)getHeight());
+    	System.out.println( super.getWidth() + " " + super.getHeight() );
+        double scale = Math.min( (double)super.getWidth() / (int)model.getWidth(), (double)super.getHeight() / (int)model.getHeight());
+        System.out.println( scale );
         ((Graphics2D)g).scale( scale, scale );
         ((Graphics2D)g).scale( scale, scale );
         paintComponent( g );
         paintComponent( g );
         for( Component c : getComponents() )
         for( Component c : getComponents() )
+        {
             c.paint( g.create( 
             c.paint( g.create( 
                     c.getX() + 25, 
                     c.getX() + 25, 
                     c.getY() + 25, 
                     c.getY() + 25, 
-                    Math.min( getWidth() - 25, c.getWidth() + c.getX() + 25 ), 
-                    Math.min( getHeight() - 25, c.getHeight() + c.getY() + 25 ) ) );
+                    Math.min( (int)model.getWidth() - 25, c.getPreferredSize().width + c.getX() + 25 ), 
+                    Math.min( (int)model.getHeight() - 25, c.getPreferredSize().height + c.getY() + 25 ) ) );
+            System.out.println( c.getX() + " " + c.getY() + "   " + c.getPreferredSize() + " " + scale );
+        }
     }
     }
 
 
 	@Override
 	@Override
@@ -74,13 +75,13 @@ public class NodeView extends JPanel {
 		g2.setColor( model.getColor() );
 		g2.setColor( model.getColor() );
 		g2.setStroke(new BasicStroke(5));
 		g2.setStroke(new BasicStroke(5));
 		if( model.getContainedNodes().size() == 0 )
 		if( model.getContainedNodes().size() == 0 )
-			g2.fillRect( 0, 0, getWidth()-1, getHeight()-1 );
+			g2.fillRect( 0, 0, (int)model.getWidth()-1, (int)model.getHeight()-1 );
 		if( model.isSelected() )
 		if( model.isSelected() )
 		{
 		{
 			g.setColor( Color.GRAY );
 			g.setColor( Color.GRAY );
-			g.fillRect( 0, 0, getWidth()-1, getHeight()-1 );
+			g.fillRect( 0, 0, (int)model.getWidth()-1, (int)model.getHeight()-1 );
 		}
 		}
 		g2.setColor( model.getColor() );
 		g2.setColor( model.getColor() );
-		g2.drawRect( 0, 0, getWidth()-1, getHeight()-1 );
+		g2.drawRect( 0, 0, (int)model.getWidth()-1, (int)model.getHeight()-1 );
 	}
 	}
 }
 }