1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| ISelection selection = myTreeViewer.getSelection();
if (selection instanceof IStructuredSelection) {
MyNode selectedNode = (MyNode) ((IStructuredSelection) selection).getFirstElement();
MyNode nextLeafNode = getNextLeaf(selectedNode);
}
...
public MyNode getNextLeaf(MyNode currentNode) {
MyNode resultNode = null;
if (!currentNode.isRoot()) {
MyNode parentNode = currentNode.getParentNode();
// Il faut regarder dans les frères du noeud courant, ou dans les frères de son père.
// On cherche d'abord chez les frères:
List < MyNode > children = parentNode.getChildren();
if (children != null && !children.isEmpty()) {
MyNode node;
MyNode currentResult = null;
int currentIndex = children.indexOf(currentNode);
for (int i = currentIndex + 1; i < children.size() && currentResult == null; i++) {
node = children.get(i);
currentResult = getFirstLeaf(node);
}
if (currentResult != null) {
resultNode = currentResult;
} else {
// On cherche chez les frères du père.
resultNode = getNextLeaf(parentNode);
}
}
}
return resultNode;
} |
Partager