]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.browsing.ui.nattable/src/org/simantics/browsing/ui/nattable/GETreeData.java
Sync git svn branch with SVN repository r33144.
[simantics/platform.git] / bundles / org.simantics.browsing.ui.nattable / src / org / simantics / browsing / ui / nattable / GETreeData.java
1 package org.simantics.browsing.ui.nattable;\r
2 \r
3 import java.util.ArrayList;\r
4 import java.util.List;\r
5 \r
6 import org.eclipse.nebula.widgets.nattable.tree.ITreeData;\r
7 \r
8 public class GETreeData implements ITreeData<TreeNode> {\r
9         List<TreeNode> list;\r
10         \r
11         public GETreeData(List<TreeNode> list) {\r
12                 this.list = list;\r
13         }\r
14         \r
15         @Override\r
16         public String formatDataForDepth(int depth, TreeNode object) {\r
17                 return null;\r
18         }\r
19         \r
20         @Override\r
21         public List<TreeNode> getChildren(TreeNode object) {\r
22                 return (List<TreeNode>)object.getChildren();\r
23         }\r
24         \r
25         @Override\r
26         public TreeNode getDataAtIndex(int index) {\r
27                 if (index < 0 || index >= list.size() )\r
28                         return null;\r
29                 return list.get(index);\r
30         }\r
31         \r
32         @Override\r
33         public int getDepthOfData(TreeNode object) {\r
34                 int count = object.getDepth()-1; // -1 removes invisible root.\r
35                 return count;\r
36         }\r
37         \r
38         @Override\r
39         public boolean hasChildren(TreeNode object) {\r
40                 return object.getChildren().size() > 0;\r
41         }\r
42         \r
43         @Override\r
44         public int indexOf(TreeNode child) {\r
45                 return child.getListIndex();\r
46         }\r
47         \r
48         @Override\r
49         public boolean hasChildren(int index) {\r
50                 return hasChildren(list.get(index));\r
51         }\r
52         \r
53         @Override\r
54         public String formatDataForDepth(int depth, int index) {\r
55                 return formatDataForDepth(depth, list.get(index));\r
56         }\r
57         \r
58         @Override\r
59         public List<TreeNode> getChildren(int index) {\r
60                 return getChildren(list.get(index));\r
61         }\r
62         \r
63         @Override\r
64         public List<TreeNode> getChildren(TreeNode object, boolean fullDepth) {\r
65                 if (!fullDepth) {\r
66                         return getChildren(object);\r
67                 } else {\r
68                         List<TreeNode> list = new ArrayList<TreeNode>();\r
69                         _convertToList(list, object);\r
70                         return list;\r
71                 }\r
72                 \r
73         }\r
74         private void _convertToList(List<TreeNode> list, TreeNode task) {\r
75                 list.add(task);\r
76                 for (TreeNode t : task.getChildren()) {\r
77                         _convertToList(list, t);\r
78                 }\r
79         }\r
80         @Override\r
81         public int getDepthOfData(int index) {\r
82                 return getDepthOfData(list.get(index));\r
83         }\r
84         \r
85         @Override\r
86         public boolean isValidIndex(int index) {\r
87                 if (index < 0)\r
88                         return false;\r
89                 if (index >= list.size())\r
90                         return false;\r
91                 return true;\r
92         }\r
93         \r
94         @Override\r
95         public int getElementCount() {\r
96                 return list.size();\r
97         }\r
98         \r
99         public boolean isRoot(TreeNode object) {\r
100                 TreeNode parent = object.getParent();\r
101                 parent = parent.getParent();\r
102                 return (parent == null);\r
103         }\r
104 \r
105         \r
106 }