IBM® ILOG® Dojo Diagrammer fournit une prise en charge spéciale pour l'agencement d'un disconnected graph.
Si un graphe est constitué de plusieurs connected components ou contient des noeuds isolés (des noeuds sans liens), il peut être souhaitable d'appliquer l'algorithme d'agencement séparément à chaque composant connecté, puis de positionner les composants connectés à l'aide de d'un algorithme d'agencement spécialisé (généralement, ibm_ilog.graphlayout.grid.GridLayout). La figure ci-après illustre un exemple de graphe contenant quatre composants connectés. En activant l'agencement des composants connectés sur l'instance d'agencement normale (ici,
ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout), les composants connectés sont automatiquement identifiés et agencés individuellement. Finalement, les quatre composants connectés sont positionnés à l'aide d'un algorithme de positionnement hautement personnalisable (ibm_ilog.graphlayout.grid.GridLayout).

Agencement automatique de composants connectés dans un graphe déconnecté
Pour indiquer si une sous-classe de ibm_ilog.graphlayout.GraphLayout prend en charge cette fonction, utilisez sa méthode :
supportsLayoutOfConnectedComponents()
L'implémentation par défaut renvoie la valeur
false
.
Une sous-classe peut remplacer cette méthode pour renvoyer la valeur true
afin d'indiquer que cette fonction est prise en charge. Vous pouvez activer l'agencement des composants connectés à l'aide de la méthode setLayoutOfConnectedComponentsEnabled(true).
Pour obtenir le paramètre actuel :
var enabled = layout.isLayoutOfConnectedComponentsEnabled();
La valeur par défaut est la valeur renvoyée par la méthode suivante :
isLayoutOfConnectedComponentsEnabledByDefault()
L'implémentation par défaut de cette méthode dans ibm_ilog.graphlayout.GraphLayout renvoie la valeur
false
.
Pour certaines classes d'agencement, il convient d'activer cette fonction par défaut et que ces classes remplacent cette méthode pour renvoyer true
.
Si elle est activée sur une classe d'agencement qui prend en charge cette fonction,
la méthode
performLayout
de la classe ibm_ilog.graphlayout.GraphLayout
découpe le modèle de graphe attaché en composants connectés et agence chaque composant connecté séparément. Comment l'agencement de la fonction de composants connectés fonctionne-t-elle lorsque ce mécanisme est activé dans les classes d'agencement qui prennent en charge cette fonction ? Au lieu d'effectuer l'agencement sur l'ensemble du graphe,
la méthode performLayout découpe d'abord le graphe en composants connectés.
Ensuite, chaque composant connecté est agencé séparément par un appel de la méthode
layout
. Pour ce faire, le graphe attaché est modifié temporairement en graphes générés en interne correspondant à chaque composant connecté du graphe d'origine. Enfin, l'instance d'agencement spécifiée par la méthode setLayoutOfConnectedComponents :
layout.setLayoutOfConnectedComponents(connectedComponentsLayout);
est utilisée pour positionner les composants connectés. Pour spécifier l'instance d'agencement qui positionne les composants connectés, appelez la méthode
setLayoutOfConnectedComponents.
Si aucune instance d'agencement n'est spécifiée à l'aide de cette méthode,
la méthode
getLayoutOfConnectedComponents
renvoie une instance de ibm_ilog.graphlayout.grid.GridLayout. Son paramètre de région d'agencement est défini par défaut sur le rectangle (0
, 0
, 800
, 800
).
Son paramètre de mode d'agencement est défini sur ibm_ilog.graphlayout.grid.GridLayout.TILE_TO_ROWS. Note
Les agencements arborescents et hiérarchiques comprennent une prise en charge intégrée pour les graphes déconnectés. Pour les agencements arborescents et hiérarchiques, le résultat peut être différent de celui du mécanisme générique (l'agencement des composants connectés) fourni par la classe de base ibm_ilog.graphlayout.GraphLayout. En fonction de vos besoins, vous pouvez utiliser le mécanisme générique ou la prise en charge intégrée.