|
@@ -0,0 +1,192 @@
|
|
|
+package Model;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+
|
|
|
+import org.eclipse.elk.graph.ElkEdge;
|
|
|
+import org.eclipse.elk.graph.ElkNode;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Ein Interface, welches die Methoden eines Knotens aus einem gelayerten Graphen beschreibt (Ein Knoten kann dabei auch einen weiteren Graphen beinhalten)
|
|
|
+ * @author kolja
|
|
|
+ *
|
|
|
+ */
|
|
|
+public interface LayeredGraphNode {
|
|
|
+
|
|
|
+ // for this node
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Gibt den originalen Elk Knoten zurück
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ ElkNode getOriginalNode();
|
|
|
+
|
|
|
+ public void setName( String n );
|
|
|
+ public String getName();
|
|
|
+ /**
|
|
|
+ * 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
|
|
|
+ * @return Der Index des Layers mit 0 beginnend
|
|
|
+ */
|
|
|
+ int getLayer();
|
|
|
+ /**
|
|
|
+ * Entfernt den Knoten aus dem Graphen
|
|
|
+ */
|
|
|
+ void remove();
|
|
|
+ /**
|
|
|
+ * Ermittelt eine Liste von Kanten, die an diesem Knoten beginnen
|
|
|
+ * @return Liste mit Kanten
|
|
|
+ */
|
|
|
+ ArrayList< LayeredGraphEdge > getOutgoingEdges();
|
|
|
+ /**
|
|
|
+ * Ermittelt eine Liste von Kanten, die an diesem Knoten enden
|
|
|
+ * @return Liste mit Kanten
|
|
|
+ */
|
|
|
+ ArrayList< LayeredGraphEdge > getIncomingEdges();
|
|
|
+ /**
|
|
|
+ * 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
|
|
|
+ * @param parent Der Elternknoten
|
|
|
+ */
|
|
|
+ void setParent( LayeredGraphNode parent );
|
|
|
+ /**
|
|
|
+ * Legt die X Koordinate des Knotens fest
|
|
|
+ * @param x die X Koordinate in Pixeln
|
|
|
+ */
|
|
|
+ void setX( double x );
|
|
|
+ /**
|
|
|
+ * Legt die Y Koordinate des Knotens Fest
|
|
|
+ * @param y die Y Koordinate in Pixeln
|
|
|
+ */
|
|
|
+ void setY( double y );
|
|
|
+ /**
|
|
|
+ * 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
|
|
|
+ */
|
|
|
+ double getY();
|
|
|
+ /**
|
|
|
+ * 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
|
|
|
+ */
|
|
|
+ double getHeight();
|
|
|
+
|
|
|
+ // for subgraph
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 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
|
|
|
+ * @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
|
|
|
+ * @param n Der Knoten
|
|
|
+ * @param index Der Index des Layers
|
|
|
+ */
|
|
|
+ void setNodeLayer( LayeredGraphNode n, int index );
|
|
|
+ /**
|
|
|
+ * @return Eine Liste mit allen Kanten des Subgraphen
|
|
|
+ */
|
|
|
+ ArrayList< LayeredGraphEdge > getContainedEdges();
|
|
|
+ /**
|
|
|
+ * @return Eine Liste mit allen Knoten des Subgraphen
|
|
|
+ */
|
|
|
+ ArrayList< LayeredGraphNode > getContainedNodes();
|
|
|
+ /**
|
|
|
+ * @return Eine Liste mit allen Layern des Subgraphen
|
|
|
+ */
|
|
|
+ ArrayList< ArrayList< LayeredGraphNode > > getContainedLayers();
|
|
|
+ /**
|
|
|
+ * Entfernt eine Kante aus dem Subgraph
|
|
|
+ * @param e die Kante, die entfernt werden soll
|
|
|
+ */
|
|
|
+ void removeEdge( LayeredGraphEdge e );
|
|
|
+ /**
|
|
|
+ * Entfernt einen Knoten aus dem Subgraph
|
|
|
+ * @param n der Knoten, die entfernt werden soll
|
|
|
+ */
|
|
|
+ void removeNode( LayeredGraphNode n );
|
|
|
+ /**
|
|
|
+ * Ermittelt eine Liste von ausgehenden Kanten eines Knotens
|
|
|
+ * @param n Der Knoten
|
|
|
+ * @return Die Liste mit Kanten
|
|
|
+ */
|
|
|
+ ArrayList< LayeredGraphEdge > getOutgoingEdges( LayeredGraphNode n );
|
|
|
+ /**
|
|
|
+ * Ermittelt eine Liste von eingehenden Kanten eines Knotens
|
|
|
+ * @param n Der Knoten
|
|
|
+ * @return Die Liste mit Kanten
|
|
|
+ */
|
|
|
+ ArrayList< LayeredGraphEdge > getIncomingEdges( LayeredGraphNode n );
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 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
|
|
|
+ * @param original Die Originale Elk Kante
|
|
|
+ * @param sources Eine Liste mit Startknoten
|
|
|
+ * @param targets Eine Liste mit Endknoten
|
|
|
+ * @return Die neue Kante
|
|
|
+ */
|
|
|
+ LayeredGraphEdge createEdge( ElkEdge original, ArrayList< LayeredGraphNode > sources, ArrayList< LayeredGraphNode > targets );
|
|
|
+ /**
|
|
|
+ * Fügt eine neue Kante zum Subgraph hinzu
|
|
|
+ * @param original Die Originale Elk Kante
|
|
|
+ * @param sources Der Startknoten
|
|
|
+ * @param targets Der Endknoten
|
|
|
+ * @return Die neue Kante
|
|
|
+ */
|
|
|
+ LayeredGraphEdge createSimpleEdge( ElkEdge original, LayeredGraphNode source, LayeredGraphNode target );
|
|
|
+ /**
|
|
|
+ * Findet zu einer Originalen Kante eine Layered Kante
|
|
|
+ * @param original die originale Kante
|
|
|
+ * @return die layered Kante
|
|
|
+ */
|
|
|
+ LayeredGraphEdge findEdgeFromOriginal( Object original );
|
|
|
+ /**
|
|
|
+ * Findet zu einem Originalen Knoten einen Layered Knoten
|
|
|
+ * @param original der originale Knoten
|
|
|
+ * @return der layered Knoten
|
|
|
+ */
|
|
|
+ LayeredGraphNode findNodeFromOriginal( Object original );
|
|
|
+
|
|
|
+ LayeredGraphNode findNodeByName( String name );
|
|
|
+ /**
|
|
|
+ * Fügt einen Knoten zum Subgraphen hinzu
|
|
|
+ * @param n Der neue Knoten
|
|
|
+ */
|
|
|
+ void addNode( LayeredGraphNode n );
|
|
|
+ /**
|
|
|
+ * Fügt eine Kante zum Subgraphen hinzu
|
|
|
+ * @param e Die neue Kante
|
|
|
+ */
|
|
|
+ void addEdge( LayeredGraphEdge e );
|
|
|
+}
|