Dans une application qui ne fonctionne pas directement sur des graphes, les opérations telles que l'attachement ou le détachement d'une instance d'agencement de graphe doivent être effectuées explicitement.
Classe de base
La classe ibm_ilog.graphlayout.GraphLayout est la classe de base de tous les algorithmes d'agencement.
Il s'agit d'une classe abstraite et, par conséquent, elle ne peut pas être utilisée directement. Vous devez
utiliser une de ses sous-classes : ibm_ilog.graphlayout.hierarchical.HierarchicalLayout, ibm_ilog.graphlayout.tree.TreeLayout, ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout, ibm_ilog.graphlayout.shortlink.ShortLinkLayout, ibm_ilog.graphlayout.longlink.LongLinkLayout, ibm_ilog.graphlayout.random.RandomLayout, ibm_ilog.graphlayout.circular.CircularLayout, ibm_ilog.graphlayout.grid.GridLayout. Vous pouvez également créer vos propres sous-classes pour implémenter d'autres algorithmes d'agencement. Voir Définition de votre propre type d'agencement.
Même si les sous-classes de
GraphLayout
sont les seules à être utilisées directement pour obtenir les agencements, vous devez vous initier à cette classe car elle contient des méthodes héritées (ou substituées) par les sous-classes. Vous devez être familiarisé avec cette classe pour pouvoir créer vos propres sous-classes. 
Classe GraphLayout et ses sous-classes et ses relations avec les rapports d'agencement
Instanciation d'une sous-classe de la classe de base
La classe ibm_ilog.graphlayout.GraphLayout est une classe abstraite. Elle ne comporte aucun constructeur. Pour instancier une sous-classe, procédez comme indiqué dans l'exemple suivant :
var layout = new ibm_ilog.graphlayout.tree.TreeLayout();
Attachement ou détachement de l'agencement sur un graphe ou un diagramme
Dans IBM® ILOG® Dojo Diagrammer, vous devez attacher l'agencement à une instance de widget ibm_ilog.diagram.widget.Diagram ou à une instance ibm_ilog.diagram.Graph.
Si vous utilisez le widget Diagram, attachez l'agencement à l'aide des attributs nodeLayout ou linkLayout du widget Diagram. L'exemple suivant montre comment effectuer cela dans le balisage HTML du widget Diagram :
<div jsId="linkLayout" dojoType="ibm_ilog.graphlayout.shortlink.ShortLinkLayout"/> <div id="diagram" dojoType="ibm_ilog.diagram.widget.Diagram" nodeLayout="treeLayout"/>
L'attribut nodeLayout permet de définir le principal algorithme d'agencement de graphe qui placera les noeuds et les liens du Diagram. Vous pouvez également utiliser l'attribut linkLayout pour définir un second agencement qui routera uniquement les liens du Diagram.
Consultez l'exemple suivant :
<div jsId="linkLayout" dojoType="ibm_ilog.graphlayout.shortlink.ShortLinkLayout"/> <div id="diagram" dojoType="ibm_ilog.diagram.widget.Diagram" linkLayout="linkLayout"/>
Vous pouvez également définir l'agencement de noeud ou de lien d'un Diagram en JavaScript :
var diagram = dijit.byId("diagram"); var treeLayout = new ibm_ilog.graphlayout.tree.TreeLayout(); var linkLayout = new ibm_ilog.graphlayout.shortlink.ShortLinkLayout(); diagram.attr("nodeLayout", treeLayout); diagram.attr("linkLayout", linkLayout);
Si vous travaillez directement avec l'objet Graph (autrement dit, vous n'utilisez pas le widget Diagram, mais vous travaillez directement avec les API GFX), vous devez utiliser les méthodes setNodeLayout ou setLinkLayout pour attacher l'agencement au Graph:
var graph = surface.createGraph(); var treeLayout = new ibm_ilog.graphlayout.tree.TreeLayout(); var linkLayout = new ibm_ilog.graphlayout.shortlink.ShortLinkLayout(); graph.setNodeLayout(treeLayout); graph.setLinkLayout(linkLayout);
Exécution d'un agencement
Une fois l'algorithme d'agencement attaché à une instance Diagram ou Graph, utilisez la méthode performGraphLayout de l'instance Diagram ou Graph pour lancer l'agencement.
diagram.performGraphLayout();
ou
graph.performGraphLayout();
La méthode abstraite protégée,
layout(boolean
redraw)
, de la sous-classe GraphLayout, est alors appelée. Cela signifie que les sous-classes qui implémentent cette méthode prennent le contrôle. L'implémentation calcule l'agencement et déplace les noeuds vers de nouveaux emplacements ou remodèle les liens, ou déplace les noeuds et remodèle les liens. La méthode
getLayoutReport
de l'agencement de graphe renvoie une instance de ibm_ilog.graphlayout.GraphLayoutReport (ou d'une sous-classe) qui contient des informations sur le comportement de l'algorithme d'agencement. Elle vous indique si l'algorithme a été exécuté normalement ou si un cas prédéfini particulier s'est produit.
(Pour obtenir une description plus détaillée du rapport d'agencement, voir Utilisation d'un rapport d'agencement de graphe.) Autres informations
Vous trouverez des informations supplémentaires sur la classe ibm_ilog.graphlayout.GraphLayout dans les sections suivantes :
- Paramètres et fonctions de la classe de base contient les méthodes liées à la personnalisation des algorithmes d'agencement.
- Utilisation des programmes d'écoute d'événement décrit le mécanisme d'écoute des événements d'agencement.
- Définition de votre propre type d'agencement explique comment implémenter les nouvelles sous-classes.
Pour obtenir des détails sur ibm_ilog.graphlayout.GraphLayout et sur d'autres classes d'agencement de graphe, voir la IBM® ILOG® Dojo Diagrammer documentation de référence sur les API.