|
@@ -3,8 +3,10 @@ package graph;
|
|
|
import java.awt.Color;
|
|
|
import java.util.ArrayList;
|
|
|
|
|
|
+import org.eclipse.elk.graph.ElkConnectableShape;
|
|
|
import org.eclipse.elk.graph.ElkEdge;
|
|
|
import org.eclipse.elk.graph.ElkNode;
|
|
|
+import org.eclipse.emf.common.util.EList;
|
|
|
|
|
|
import bk.ExtremalLayoutCalc.LayoutType;
|
|
|
|
|
@@ -59,6 +61,31 @@ public class LayeredNode implements LayeredGraphNode {
|
|
|
private ArrayList< LayeredGraphNode > nodes;
|
|
|
private ArrayList< ArrayList< LayeredGraphNode > > layers;
|
|
|
|
|
|
+ /**
|
|
|
+ * Konvertiert einen Graph aus dem Elk format in einen Graph, der mehr Informationen enthält
|
|
|
+ * @param n Der Graph, welcher konvertiert werden soll
|
|
|
+ * @return Ein layered Graph, welcher im wesentlichen ein Wrapper für den ursprünglichen Graphen ist
|
|
|
+ */
|
|
|
+ public static LayeredGraphNode convertToLayeredGraph( ElkNode n )
|
|
|
+ {
|
|
|
+ LayeredNode ln = new LayeredNode( n, null );
|
|
|
+ for( ElkNode node : n.getChildren() )
|
|
|
+ ln.addNode( convertToLayeredGraph( node ) );
|
|
|
+ for( ElkEdge edge : n.getContainedEdges() )
|
|
|
+ {
|
|
|
+ ArrayList< LayeredGraphNode > sources = new ArrayList<>();
|
|
|
+ ArrayList< LayeredGraphNode > targets = new ArrayList<>();
|
|
|
+ EList<ElkConnectableShape> s = edge.getSources();
|
|
|
+ EList<ElkConnectableShape> t = edge.getTargets();
|
|
|
+ for( ElkConnectableShape shape : s )
|
|
|
+ sources.add( ln.findNodeFromOriginal( shape ) );
|
|
|
+ for( ElkConnectableShape shape : t )
|
|
|
+ targets.add( ln.findNodeFromOriginal( shape ) );
|
|
|
+ ln.createEdge( edge, sources, targets );
|
|
|
+ }
|
|
|
+ return ln;
|
|
|
+ }
|
|
|
+
|
|
|
public LayeredNode( ElkNode original, LayeredGraphNode parent )
|
|
|
{
|
|
|
this.original = original;
|