Kolja Strohm 6 anni fa
parent
commit
4d311cbb20

BIN
bin/Model/LayeredGraphNode.class


BIN
bin/Model/LayeredNode.class


BIN
bin/View/MainView.class


BIN
bin/View/NodeView.class


BIN
bin/inputReader/Reader.class


+ 24 - 21
src/Model/LayeredGraphNode.java

@@ -15,7 +15,7 @@ public interface LayeredGraphNode {
     // for this node
     
     /**
-     * Gibt den originalen Elk Knoten zurück
+     * Gibt den originalen Elk Knoten zur�ck
      * @return
      */
     ElkNode getOriginalNode();
@@ -23,12 +23,12 @@ public interface LayeredGraphNode {
     public void setName( String n );
     public String getName();
     /**
-     * Setzt den Index des Layers, zu dem der Knoten gehören soll
+     * Setzt den Index des Layers, zu dem der Knoten geh�ren soll
      * @param index Der Index mit 0 beginnend
      */
     void setLayer( int index );
     /**
-     * Gibt den Index des Layers zurück, dem dieser Knoten angehört
+     * Gibt den Index des Layers zur�ck, dem dieser Knoten angeh�rt
      * @return Der Index des Layers mit 0 beginnend
      */
     int getLayer();
@@ -47,12 +47,12 @@ public interface LayeredGraphNode {
      */
     ArrayList< LayeredGraphEdge > getIncomingEdges();
     /**
-     * Gibt den Knoten zurück, zu dessen Subgraph dieser Knoten gehört
+     * Gibt den Knoten zur�ck, zu dessen Subgraph dieser Knoten geh�rt
      * @return Der Elternknoten
      */
     LayeredGraphNode parent();
     /**
-     * Legt den Knoten fest, zu dessen Subgraph dieser Knoten gehört
+     * Legt den Knoten fest, zu dessen Subgraph dieser Knoten geh�rt
      * @param parent Der Elternknoten
      */
     void setParent( LayeredGraphNode parent );
@@ -67,43 +67,46 @@ public interface LayeredGraphNode {
      */
     void setY( double y );
     /**
-     * Gibt die X Koordinate zurück
-     * @return die X Koordinate in Pixeln zurück
+     * Gibt die X Koordinate zur�ck
+     * @return die X Koordinate in Pixeln zur�ck
      */
     double getX();
     /**
-     * Gibt die Y Koordinate zurück
-     * @return die Y Koordinate in Pixeln zurück
+     * Gibt die Y Koordinate zur�ck
+     * @return die Y Koordinate in Pixeln zur�ck
      */
     double getY();
     /**
-     * Gibt die Breite des Knotens zurück
+     * Gibt die Breite des Knotens zur�ck
      * @return die Breite in Pixeln
      */
     double getWidth();
     /**
-     * Gibt die Höhe des Knotens zurück
-     * @return die Höhe in Pixeln
+     * Gibt die H�he des Knotens zur�ck
+     * @return die H�he in Pixeln
      */
     double getHeight();
     
+    void setWidth( double w );
+    void setHeight( double h );
+    
     // for subgraph
     
     /**
-     * Ermittelt den Index des Layers, dem ein Knoten angehört
+     * Ermittelt den Index des Layers, dem ein Knoten angeh�rt
      * @param n der Knoten, zu dem der Layerindex gesucht wird
      * @return der Index des Layers mit 0 beginnend
      */
     int getNodeLayer( LayeredGraphNode n );
     /**
      * Sortiert einen Layer nach bestimmten Gewichten
-     * Die Knoten mit dem geringsten Gewicht kommen vor den Knoten mit größerem Gewicht
-     * @param indizes Eine Liste mit einem Gewicht für jeden Knoten
+     * Die Knoten mit dem geringsten Gewicht kommen vor den Knoten mit gr��erem Gewicht
+     * @param indizes Eine Liste mit einem Gewicht f�r jeden Knoten
      * @param layerIndex Der Index des Layers, der sortiert werden soll
      */
     void setOrderedLayer( ArrayList< Double > indizes, int layerIndex );
     /**
-     * Legt fest zu welchem Layer ein bestimmter Knoten gehört
+     * Legt fest zu welchem Layer ein bestimmter Knoten geh�rt
      * @param n Der Knoten
      * @param index Der Index des Layers
      */
@@ -144,13 +147,13 @@ public interface LayeredGraphNode {
     ArrayList< LayeredGraphEdge > getIncomingEdges( LayeredGraphNode n );
     
     /**
-     * Fügt einen neuen Knoten zum Subgraph hinzu
+     * F�gt einen neuen Knoten zum Subgraph hinzu
      * @param original Der originale Elk Knoten
      * @return Der neu erzeugte Knoten
      */
     LayeredGraphNode createNode( ElkNode original );
     /**
-     * Fügt eine neue Kante zum Subgraph hinzu
+     * F�gt eine neue Kante zum Subgraph hinzu
      * @param original Die Originale Elk Kante
      * @param sources Eine Liste mit Startknoten
      * @param targets Eine Liste mit Endknoten
@@ -158,7 +161,7 @@ public interface LayeredGraphNode {
      */
     LayeredGraphEdge createEdge( ElkEdge original, ArrayList< LayeredGraphNode > sources, ArrayList< LayeredGraphNode > targets );
     /**
-     * Fügt eine neue Kante zum Subgraph hinzu
+     * F�gt eine neue Kante zum Subgraph hinzu
      * @param original Die Originale Elk Kante
      * @param sources Der Startknoten
      * @param targets Der Endknoten
@@ -180,12 +183,12 @@ public interface LayeredGraphNode {
     
     LayeredGraphNode findNodeByName( String name );
     /**
-     * Fügt einen Knoten zum Subgraphen hinzu
+     * F�gt einen Knoten zum Subgraphen hinzu
      * @param n Der neue Knoten
      */
     void addNode( LayeredGraphNode n );
     /**
-     * Fügt eine Kante zum Subgraphen hinzu
+     * F�gt eine Kante zum Subgraphen hinzu
      * @param e Die neue Kante
      */
     void addEdge( LayeredGraphEdge e );

+ 16 - 6
src/Model/LayeredNode.java

@@ -37,8 +37,6 @@ public class LayeredNode implements LayeredGraphNode {
         edges = new ArrayList<>();
         nodes = new ArrayList<>();
         layers = new ArrayList<>();
-        w = 10;
-        h = 10;
     }
     
     @Override
@@ -110,8 +108,8 @@ public class LayeredNode implements LayeredGraphNode {
         	double max = 0;
         	for( LayeredGraphNode n : nodes )
         	{
-        		if( max < n.getX() + n.getWidth() )
-        			max = n.getX() + n.getWidth();
+        		if( max < n.getX() + n.getWidth() + 20 )
+        			max = n.getX() + n.getWidth() + 20;
         	}
         	return Math.max( max, w );
         }
@@ -127,13 +125,25 @@ public class LayeredNode implements LayeredGraphNode {
         	double max = 0;
         	for( LayeredGraphNode n : nodes )
         	{
-        		if( max < n.getY() + n.getHeight() )
-        			max = n.getY() + n.getHeight();
+        		if( max < n.getY() + n.getHeight() + 20 )
+        			max = n.getY() + n.getHeight() + 20;
         	}
         	return Math.max( max, h );
         }
         return h;
     }
+    
+    @Override
+    public void setWidth( double w )
+    {
+        this.w = w;
+    }
+    
+    @Override
+    public void setHeight( double h )
+    {
+        this.h = h;
+    }
 
     @Override
     public void removeEdge(LayeredGraphEdge e) {

+ 5 - 7
src/View/MainView.java

@@ -11,13 +11,15 @@ public class MainView {
 	public MainView( LayeredGraphNode graph )
 	{
 		frame = new JFrame();
-		frame.setSize( (int)graph.getWidth() + 100, (int)graph.getHeight() + 100 );
+        frame.setSize( (int)graph.getWidth() + 200, (int)graph.getHeight() + 200 );
 		frame.setLocation( 100, 100 );
 		frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
 		frame.setVisible( true );
-		frame.getContentPane().setLayout( null );
 		
-		frame.getContentPane().add( createNodeView( graph ) );
+		NodeView view = createNodeView( graph );
+		graph.setX( 40 );
+		graph.setY( 40 );
+		frame.add( view );
 		
 		frame.repaint();
 	}
@@ -25,12 +27,8 @@ public class MainView {
 	private NodeView createNodeView( LayeredGraphNode gNode )
 	{
 		NodeView graphView = new NodeView( gNode );
-		int x = 0;
 		for( LayeredGraphNode n : gNode.getContainedNodes() )
-		{
-			n.setX( x += 20 );
 			graphView.add( createNodeView( n ) );
-		}
 		return graphView;
 	}
 }

+ 43 - 3
src/View/NodeView.java

@@ -1,9 +1,13 @@
 package View;
 
 import java.awt.Color;
+import java.awt.Component;
 import java.awt.Graphics;
+import java.awt.Insets;
 
 import javax.swing.*;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.EtchedBorder;
 
 import Model.LayeredGraphNode;
 
@@ -17,15 +21,51 @@ public class NodeView extends JPanel {
 	
 	public NodeView( LayeredGraphNode model ) {
 		this.model = model;
-		setLocation( (int)model.getX(), (int)model.getY() );
-		setSize( (int)model.getWidth(), (int)model.getHeight() );
 	}
 	
+	@Override
+	public int getX()
+	{
+	    return (int)model.getX();
+	}
+    
+    @Override
+    public int getY()
+    {
+        return (int)model.getY();
+    }
+    
+    @Override
+    public int getWidth()
+    {
+        return (int)model.getWidth();
+    }
+    
+    @Override
+    public int getHeight()
+    {
+        return (int)model.getHeight();
+    }
+    
+    
+    @Override
+    public void paint( Graphics g )
+    {
+        paintComponent( g );
+        for( Component c : getComponents() )
+            c.paint( g.create( 
+                    c.getX() + 10, 
+                    c.getY() + 10, 
+                    Math.min( getWidth() - 10, c.getWidth() + c.getX() + 10 ), 
+                    Math.min( getHeight() - 10, c.getHeight() + c.getY() + 10 ) ) );
+    }
+
 	@Override
 	public void paintComponent( Graphics g )
 	{
+	    super.paintComponent(g);
 		System.out.print( "Drawing: Node " + model.getName() + " Position (" + model.getX() + "," + model.getY() + ") Size (" + model.getWidth() + "," + model.getHeight() + ")\n" );
 		g.setColor( Color.RED );
-		g.drawRect( (int)model.getX(), (int)model.getY(), (int)model.getWidth(), (int)model.getHeight() );
+		g.drawRect( 0, 0, getWidth()-1, getHeight()-1 );
 	}
 }

+ 8 - 0
src/inputReader/Reader.java

@@ -66,6 +66,14 @@ public class Reader {
 		}
 		if( node.has( "name" ) )
 			newNode.setName( node.getString( "name" ) );
+        if( node.has( "width" ) )
+            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" ) );
 		return newNode;
 	}
 	

+ 1 - 1
test.graph

@@ -1 +1 @@
-{"layers": [[{"name": "n1"},{"name":"n2"}],[{"name":"n3"}]],"edges":[{"source":"n1","target":"n3"},{"source":"n2","target":"n3"}],"name":"n0"}
+{"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":"n3"}],"name":"n0"}

+ 1 - 0
test2.graph

@@ -0,0 +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"}

+ 1 - 0
test3.graph

@@ -0,0 +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"}