Skip to content
Snippets Groups Projects
Commit 92e12b11 authored by Sylvain Mainguy's avatar Sylvain Mainguy
Browse files

- refactor node's creation

- add search method to find ITreeNode from TreeItem
parent a3d93679
No related branches found
No related tags found
No related merge requests found
......@@ -3,6 +3,7 @@ package fr.soleil.comete.swt.util;
import java.util.List;
import java.util.ListIterator;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
......@@ -13,42 +14,113 @@ public class TreeNodeTool {
public static TreeItem createRootTreeNode(Tree parent, ITreeNode cometeTreeNode) {
TreeItem treeItem = null;
if (cometeTreeNode != null) {
treeItem = new TreeItem(parent, SWT.NONE);
fillTreeNode(treeItem, cometeTreeNode);
}
return treeItem;
}
public static TreeItem createChildTreeNode(TreeItem parent, ITreeNode cometeTreeNode) {
TreeItem treeItem = null;
if (cometeTreeNode != null) {
treeItem = new TreeItem(parent, SWT.NONE);
fillTreeNode(treeItem, cometeTreeNode);
}
return treeItem;
}
public static TreeItem createTreeNode(TreeItem parent, ITreeNode cometeTreeNode, int index) {
TreeItem treeItem = null;
if (cometeTreeNode != null) {
treeItem = new TreeItem(parent, SWT.NONE, index);
fillTreeNode(treeItem, cometeTreeNode);
}
return treeItem;
}
private static void fillTreeNode(TreeItem treeItem, ITreeNode cometeTreeNode) {
String treeName = cometeTreeNode.getName();
Object data = cometeTreeNode.getData();
treeItem = new TreeItem(parent, 0);
treeItem.setText(treeName);
treeItem.setData(data);
createChildTreeNodes(treeItem, cometeTreeNode);
}
private static void createChildTreeNodes(TreeItem parent, ITreeNode cometeTreeNode) {
List<ITreeNode> childNode = cometeTreeNode.getChildren();
ListIterator<ITreeNode> listIterator = childNode.listIterator();
int index = 0;
while (listIterator.hasNext()) {
ITreeNode iTreeNode = listIterator.next();
createChildTreeNode(treeItem, iTreeNode, index);
createTreeNode(parent, iTreeNode, index);
index++;
}
}
public static ITreeNode findTreeNodeForTreeItem(TreeItem treeItem, ITreeNode node) {
ITreeNode result = null;
if (treeItem != null) {
result = findTreeNode_aux(treeItem, node);
}
return result;
}
private static ITreeNode findTreeNode_aux(TreeItem treeItem, ITreeNode node) {
ITreeNode result = null;
if (treeItem.getText().equals(node.getName()) && // text can't be null
treeItem.getData() == node.getData()) {// == or equals
result = node;
}
else {
for (ITreeNode child : node.getChildren()) {
result = findTreeNode_aux(treeItem, child);
if (result != null) {
break;
}
}
}
return result;
}
// -------------------------
public static TreeItem createRootTreeNode2(Tree parent, ITreeNode cometeTreeNode) {
TreeItem treeItem = null;
if (cometeTreeNode != null) {
String treeName = cometeTreeNode.getName();
Object data = cometeTreeNode.getData();
treeItem = new TreeItem(parent, SWT.NONE);
treeItem.setText(treeName);
treeItem.setData(data);
createChildTreeNodes2(treeItem, cometeTreeNode);
}
return treeItem;
}
public static TreeItem createChildTreeNode(TreeItem parent, ITreeNode cometeTreeNode, int index) {
public static TreeItem createChildTreeNode2(TreeItem parent, ITreeNode cometeTreeNode, int index) {
TreeItem treeItem = null;
if (cometeTreeNode != null) {
String treeName = cometeTreeNode.getName();
Object data = cometeTreeNode.getData();
treeItem = new TreeItem(parent, index);
treeItem = new TreeItem(parent, SWT.NONE, index);
treeItem.setText(treeName);
treeItem.setData(data);
createChildTreeNodes2(treeItem, cometeTreeNode);
}
return treeItem;
}
private static void createChildTreeNodes2(TreeItem parent, ITreeNode cometeTreeNode) {
List<ITreeNode> childNode = cometeTreeNode.getChildren();
ListIterator<ITreeNode> listIterator = childNode.listIterator();
int childindex = 0;
int index = 0;
while (listIterator.hasNext()) {
ITreeNode iTreeNode = listIterator.next();
createChildTreeNode(treeItem, iTreeNode, childindex);
childindex++;
}
createChildTreeNode2(parent, iTreeNode, index);
index++;
}
return treeItem;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment