Filter für Knotenseite verwenden
Einige Anwendungen erfordern, dass Links nicht mit bestimmten Seiten bestimmter Knoten verbunden werden.
Mit dem Link-Layout-Algorithmus können Sie die Knotenseite festlegen, mit der ein Link verbunden werden kann. Hierfür verwenden Sie einen
Filter für die Knotenseite.
Ein Filter für die Knotenseite ist eine beliebige Klasse, die die Schnittstelle
ibm_ilog.graphlayout.INodeSideFilter implementiert. Diese Schnittstelle definiert die folgende Methode:
accept(graphModel, link, origin, node, side)
Diese Methode ermöglicht, dass der Eingabe
link
seinen origin
oder sein Ziel mit der Eingabeside
des Eingabenode
verbindet. Angenommen, die Anwendung erfordert, dass Links ihren Ursprung bei Endknoten des Typs
MyNode1 nur mit der oberen und der unteren Seite verbinden.
Bei Endknoten des Typs
MyNode2
können Links ihren Ursprung nur mit der rechten Seite und der linken Seite verbinden.
Sie erreichen dieses Ergebnis mit dem folgenden Filter für die Knotenseite:
dojo.declare('MyFilter', ibm_ilog.graphlayout.INodeSideFilter, { accept: function(graphModel, link, origin, node, side) { if (node instanceof MyNode1 && origin) return (side == ibm_ilog.graphlayout.Direction.TOP || side == ibm_ilog.graphlayout.Direction.BOTTOM); if (node instanceof MyNode2 && !origin) return (side == ibm_ilog.graphlayout.Direction.LEFT || side == ibm_ilog.graphlayout.Direction.RIGHT); return true; } });
Beispiel für die Definition des Filters für die Knotenseite (LL-Algorithmus)
Gehen Sie wie folgt vor, um diese Filter für die Knotenseite zu definieren:
Verwenden Sie die Methode nodeSideFilter:
layout.setNodeSideFilter(new MyFilter());
Zum Entfernen des Filters für die Knotenseite verwenden Sie Folgendes:
layout.nodeSideFilter(null);
Schnittstelle für Knotenrahmen verwenden
Einige Anwendungen erfordern, dass der effektive Bereich eines Knotens nicht exakt mit dem Zeichenrahmen übereinstimmt.
Wenn ein Knoten beispielsweise einen Schatten hat, ist der Schatten in den Zeichenrahmen eingeschlossen.
Der Schatten wird nichts als Hindernis für die Links betrachtet.
In diesem Fall ist der effektive Zeichenrahmen eines Knotens kleiner.
Beispiel für die Verwendung einer Schnittstelle für Knotenrahmen (Link-Layout-Algorithmus)
Sie können den effektiven Zeichenrahmen eines Knotens ändern, indem Sie eine Klasse
implementieren, die ibm_ilog.graphlayout.INodeBoxProvider implementiert.
Diese Schnittstelle definiert die folgende Methode:
getBox(graphModel, node)
Mit dieser Methode erhalten Sie den effektiven Zeichenrahmen.
Wenn Sie beispielsweise eine Schnittstelle für Knotenrahmen definieren möchten, die einen kleineren Zeichenrahmen
für alle Knoten des Typs
MyNode
zurückgibt, rufen Sie die folgende Methode auf:
dojo.declare('MyNodeBoxProvider', ibm_ilog.graphlayout.INodeBoxProvider, { getBox: function(graphModel, node) { var rect:Rectangle = graphModel.getBounds(node); if (node is MyNode) { // for example, the size of the bounding box is reduced: rect.x += 4; rect.y += 4; rect.width -= 8; rect.height -= 8; } return rect; } });
Schnittstelle für Linkverbindungsrahmen verwenden
Standardmäßig werden die Verbindungspunkte von Links auf dem Rand
des Zeichenrahmens der Knoten platziert.
Manchmal kann es erforderlich sein, die Verbindungspunkte auf einem Rechteck zu platzieren, das kleiner oder
größer ist als der Zeichenrahmen.
Dies kann beispielsweise passieren, wenn Beschriftungen oberhalb oder unterhalb der Knoten angezeigt werden.
Mit einer Schnittstelle für Linkverbindungsrahmen (Linkverbindungsrahmen) die Position von Verbindungspunkten ändern (Link-Layout-Algorithmus)
Sie können die Position der Verbindungspunkte der Links ändern, indem Sie eine Klasse implementieren, die
ibm_ilog.graphlayout.ILinkConnectionBoxProvider implementiert. Diese ist eine
Unterschnittstelle von INodeBoxProvider;
see Schnittstelle für Knotenrahmen verwenden. Auch sie definiert die folgende Methode:
getBox(graphModel, node)
Diese Methode ermöglicht Ihnen, das effektive Rechteck zurückzugeben, in dem die Verbindungspunkte der Links platziert werden.
Außerdem definiert die Schnittstelle ibm_ilog.graphlayout.ILinkConnectionBoxProvider eine zweite Methode:
getTangentialOffset(graphModel, node, nodeSide)
Diese Methode wird nur im Layout für kurze Links verwendet. Weitere Einzelheiten finden Sie unter
Schnittstelle für Linkverbindungsrahmen verwenden. Im Layout mit langen Links implementieren Sie die
Methode durch Rückgabe des Werts 0.