Il peut arriver qu'un graphe comporte des liens multiples entre la même paire de noeuds. Lorsque ces liens sont droits et utilisent le même point de connexion aux noeuds, ils se chevauchent et ne peuvent pas être distingués.
Pour éviter de tels chevauchements, les agencements spécifiés comportent un noeud multilien qui est appliqué uniquement lorsque le style de lien est STRAIGHT_LINE_STYLE.
Ce mode n'a aucun effet si le style de lien est NO_RESHAPE_STYLE.
Exemple de spécification de routage de liens multiples
Pour spécifier le mode multilien, utilisez la méthode suivante :
layout.setMultiLinkMode(mode);
Les valeurs valides pour le mode sont fournies avec l'exemple de l'agencement Force-directed :
- ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.NO_BUNDLE : Les liens multiples entre la même paire de noeuds ne font l'objet d'aucun traitement spécial. Ils ne sont pas étendus et sont susceptibles de se chevaucher.
- ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.STRAIGHT_LINE_BUNDLE : Les liens multiples entre la même paire de noeuds sont routés comme des lignes droites, mais décalés les uns par rapport aux autres pour éviter les chevauchements. Contrairement au mode étroit, le décalage n'est pas limité par la taille du noeud.
- ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.NARROW_STRAIGHT_LINE_BUNDLE : Semblable au mode faisceau de ligne droite, mais le décalage est limité par la taille des deux noeuds de fin du faisceau de lien ; par conséquent, il peut apparaître plus étroit. Lorsque le nombre de liens multiples entre la même paire de noeuds est trop élevé, ce mode évite un écart de décalage trop important car, dans ce cas, les liens n'apparaîtraient plus comme étant connectés aux noeuds. Ce mode est défini par défaut.
- ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.CONNECTED_ONE_BEND_BUNDLE : Les liens multiples entre la même paire de noeuds sont routés avec un coude pour éviter les chevauchements. Tous les liens du faisceau débutent au même point de connexion et se terminent au point de connexion.
- ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.FREE_ONE_BEND_BUNDLE : Les liens multiples entre la même paire de noeuds sont routés avec un coude pour éviter les chevauchements. Contrairement au mode de faisceau de connexion avec un coude, le point de connexion de lien n'est pas imposé ; ce qui signifie que le noeud et le lien sont libres de se positionner le point de connexion. Il n'est pas garanti que tous les liens du faisceau démarreront et se termineront au même point.
Si le mode multilien n'est pas NO_BUNDLE, le décalage entre les liens décalés ou entre les coudes des liens n'est pas spécifié :
Utilisez les méthodes suivantes :
layout.setMultiLinkOffset(offset); layout.setMultiLinkMaxSpread(maxSpread);
Le décalage des liens multiples est le décalage entre deux liens voisins (ou leurs coudes). La valeur de maxSpread limite ce décalage pour éviter que trop d'espace soit utilisé lorsque le nombre de liens multiples est trop élevé. Si le décalage des liens multiples est égal à 10 et que la valeur de maxSpread est égale à 60, le décalage effectif est égal à 10, si le nombre de liens multiples est inférieur à six.
Si le nombre de liens multiples est plus élevé, le décalage effectif est réduit. Par exemple, si le nombre de liens multiples est égal à 15, le décalage effectif n'est plus égal à 10, mais il passe à 4, pour faire en sorte que les liens soient décalés les uns des autres de 60 unités maximum. Si le mode multilien est NARROW_STRAIGHT_LINE_BUNDLE, le décalage effectif est limité davantage en fonction de la taille du cadre de délimitation des deux noeuds de fin d'un faisceau de liens.
Exemples d'utilisation du mode et du décalage | Résultat graphique |
---|---|
NO_BUNDLE | ![]() |
STRAIGHT_LINE_BUNDLE lorsque la valeur définie pour maxSpread est trop élevée. | ![]() |
NARROW_STRAIGHT_LINE_BUNDLE : Le même résultat peut être obtenu avec STRAIGHT_LINE_BUNDLE en réduisant la valeur de maxSpread. | ![]() |
CONNECTED_ONE_BEND_BUNDLE | ![]() |
FREE_ONE_BEND_BUNDLE lorsque les liens sont connectés initialement à des centres de noeuds. Le même résultat peut être obtenu avec CONNECTED_ONE_BEND_BUNDLE, utilisé conjointement avec la valeur true définie pour le paramètre connectLinksToNodeCenters. Par exemple, voir ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.setConnectLinksToNodeCenters
|
![]() |