Für Experten: Weitere Merkmale des Link-Layouts

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 Eingabelink 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.