Przeglądaj źródła

initialisierung der knotenpositionen hinzugefügt

Kolja Strohm 6 lat temu
rodzic
commit
ca231c40b8

BIN
bin/inputReader/Reader.class


+ 39 - 0
src/Algorithms/InitializeNodePositions.java

@@ -0,0 +1,39 @@
+package Algorithms;
+
+import java.util.ArrayList;
+
+import Model.LayeredGraphNode;
+
+
+/**
+ * Ein simpler Algorithmus zum Setzen der Knotenkoordinaten
+ * Die Knoten werden in einem Raster ausgerichtet, so dass alle Knoten den gleichen Abstand zwischen sich haben (wenn sie gleich groß sind)
+ * @author kolja
+ *
+ */
+public class InitializeNodePositions {
+
+    public static void placeNodes( LayeredGraphNode graph ) {
+        
+        for( LayeredGraphNode n : graph.getContainedNodes() )
+            placeNodes( n );
+        int curY = 0;
+        double maxWidth = 0, maxHeight = 0;
+        
+        for (LayeredGraphNode node : graph.getContainedNodes()) { // Suche die maximale Knotengröße
+            maxWidth = Math.max(node.getWidth(), maxWidth);
+            maxHeight = Math.max(node.getHeight(), maxHeight);
+        }
+        
+        ArrayList< ArrayList< LayeredGraphNode > > layers = graph.getContainedLayers();
+        for (ArrayList<LayeredGraphNode> layer : layers) { // Gehe alle Layer durch
+            int curX = 0;
+            for (LayeredGraphNode node : layer) { // Gehe alle Knoten durch
+                node.setX(curX + maxWidth / 2 - node.getWidth() / 2);
+                node.setY(curY + maxHeight / 2 - node.getHeight() / 2); // Position setzen
+                curX += maxWidth + 10;
+            }
+            curY += maxHeight + 10;
+        }
+    }
+}

+ 2 - 0
src/Main.java

@@ -1,3 +1,4 @@
+import Algorithms.InitializeNodePositions;
 import Model.LayeredGraphNode;
 import View.MainView;
 import inputReader.Reader;
@@ -8,6 +9,7 @@ public class Main {
 		// TODO Auto-generated method stub
 		Reader r = new Reader( "test.graph" );
 		LayeredGraphNode graph = r.readInputGraph();
+		InitializeNodePositions.placeNodes( graph );
 		new MainView( graph );
 	}
 

+ 0 - 4
src/inputReader/Reader.java

@@ -56,10 +56,6 @@ public class Reader {
             newNode.setWidth( node.getInt( "width" ) );
         if( node.has( "height" ) )
             newNode.setHeight( node.getInt( "height" ) );
-        if( node.has( "x" ) )
-            newNode.setX( node.getInt( "x" ) );
-        if( node.has( "y" ) )
-            newNode.setY( node.getInt( "y" ) );
 		if( node.has( "layers" ) )
 		{
 			JSONArray layers = node.getJSONArray( "layers" );

+ 1 - 1
test.graph

@@ -1 +1 @@
-{"layers": [[{"name": "n1","width":10,"height":10,"x":0,"y":0},{"name":"n2","width":10,"height":10,"x":20,"y":0}],[{"name":"n3","width":10,"height":10,"x":0,"y":20},{"layers": [[{"name": "n1","width":10,"height":10,"x":0,"y":0},{"name":"n2","width":10,"height":10,"x":20,"y":0}],[{"name":"n3","width":10,"height":10,"x":0,"y":20}]],"edges":[{"source":"n1","target":"n3"},{"source":"n2","target":"n3"}],"name":"n0","x":20,"y":20,"width":10,"height":10}]],"edges":[{"source":"n1","target":"n3"},{"source":"n2","target":"n0"},{"source":"n2","target":"n3"}],"name":"n0"}
+{"layers": [[{"name": "n1","width":10,"height":10},{"name":"n2","width":10,"height":10}],[{"name":"n3","width":10,"height":10},{"layers": [[{"name": "n1","width":10,"height":10},{"name":"n2","width":10,"height":10}],[{"name":"n3","width":10,"height":10}]],"edges":[{"source":"n1","target":"n3"},{"source":"n2","target":"n3"}],"name":"n0","width":10,"height":10}]],"edges":[{"source":"n1","target":"n3"},{"source":"n2","target":"n0"},{"source":"n2","target":"n3"}],"name":"n0"}

+ 1 - 1
test2.graph

@@ -1 +1 @@
-{"layers": [[{"name":"n2","width":10,"height":10,"x":0,"y":0,"layers": [[{"name":"n2","width":10,"height":10,"x":0,"y":0}]]}]],"name":"n0"}
+{"layers": [[{"name":"n2","width":10,"height":10,"layers": [[{"name":"n2","width":10,"height":10}]]}]],"name":"n0"}

+ 1 - 1
test3.graph

@@ -1 +1 @@
-{"layers": [[{"name":"n2","width":10,"height":10,"x":0,"y":0},{"name":"n2","width":10,"height":10,"x":20,"y":0,"layers": [[{"name":"n2","width":10,"height":10,"x":0,"y":0,}]]}]],"name":"n0"}
+{"layers": [[{"name":"n2","width":10,"height":10},{"name":"n1","width":10,"height":10,"layers": [[{"name":"n2","width":10,"height":10}]]}]],"name":"n0"}