Contraintes de plage de niveaux (HL)

A l'étape 1 de l'algorithme d'agencement (phase de nivellement), les noeuds sont partitionnés dans des niveaux. Ces niveaux sont indexés à partir de 0. Par exemple, lorsque la direction de flux est vers le bas, les noeuds de l'index de niveau 0 sont placés sur la ligne de niveau horizontal la plus élevée et les noeuds avec l'index de niveau le plus élevé sont placés à une position inférieure à celle des noeuds avec un index de niveau moins élevé (voir Index de niveau et de position). L'algorithme d'agencement calcule ces index de niveau automatiquement.
Vous pouvez choisir comment les niveaux sont partitionnés en indiquant la plage d'index de niveau pour certains noeuds. Les noeuds sont placés dans les niveaux dont l'index appartient à la plage spécifiée. Vous devez spécifier l'index minimum et maximum du niveau.
Pour indiquer l'index minimum et maximum du niveau :
Appelez :
layout.addConstraint(new ibm_ilog.graphlayout.hierarchical.HierarchicalLevelRangeConstraint(node, 5, 7));
Si vous voulez placer le noeud exactement au niveau 5, appelez :
layout.addConstraint(new ibm_ilog.graphlayout.hierarchical.HierarchicalLevelRangeConstraint(node, 5, 5));
Vous pouvez également :
layout.setSpecNodeLevelIndex(node, 5);
ce qui a la même signification.
Si vous voulez forcer le noeud au niveau 5 et au-dessus, définissez UNSPECIFIED comme niveau maximum.
Appelez :
layout.addConstraint(new ibm_ilog.graphlayout.hierarchical.HierarchicalLevelRangeConstraint(node, 5, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.UNSPECIFIED));
Si vous voulez forcer le noeud au niveau 5 et au-dessous (c'est-à-dire aux niveaux 0, ..., 5), définissez UNSPECIFIED en tant que niveau minimum. Par exemple :
layout.addConstraint(new ibm_ilog.graphlayout.hierarchical.HierarchicalLevelRangeConstraint(node, ibm_ilog.graphlayout.hierarchical.HierarchicalLayout.UNSPECIFIED, 5));
Dans ce cas particulier, vous pourriez aussi utiliser zéro (0) comme niveau minimum car les index de niveau commencent à 0.
Vous pouvez appliquer la contrainte à un groupe de plusieurs noeuds en une seule opération. Cela revient à indiquer la contrainte pour chaque noeud unique du groupe, mais c'est plus efficace au niveau de la mémoire et plus pratique. Par exemple, si vous voulez forcer le groupe de trois noeuds aux niveaux 5 à 7 :
Pour spécifier ces paramètres :
Créez un objet NodeGroup (voir Groupes de noeuds) des trois noeuds et ajoutez-le à la contrainte de la manière suivante :
layout.addConstraint(new ibm_ilog.graphlayout.hierarchical.HierarchicalLevelRangeConstraint(nodeGroup, 5, 7));