X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.browsing.ui.nattable%2Fsrc%2Forg%2Fsimantics%2Fbrowsing%2Fui%2Fnattable%2FGETreeData.java;fp=bundles%2Forg.simantics.browsing.ui.nattable%2Fsrc%2Forg%2Fsimantics%2Fbrowsing%2Fui%2Fnattable%2FGETreeData.java;h=956a2d1913e1da9af72d8a51018fff325de0849d;hp=0000000000000000000000000000000000000000;hb=96bb7ef9cbe42d82eb58306d8f9b62392cc29ba8;hpb=ae5bb63c5c88f6569518fed2a24df86fbd0570ff diff --git a/bundles/org.simantics.browsing.ui.nattable/src/org/simantics/browsing/ui/nattable/GETreeData.java b/bundles/org.simantics.browsing.ui.nattable/src/org/simantics/browsing/ui/nattable/GETreeData.java new file mode 100644 index 000000000..956a2d191 --- /dev/null +++ b/bundles/org.simantics.browsing.ui.nattable/src/org/simantics/browsing/ui/nattable/GETreeData.java @@ -0,0 +1,106 @@ +package org.simantics.browsing.ui.nattable; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.nebula.widgets.nattable.tree.ITreeData; + +public class GETreeData implements ITreeData { + List list; + + public GETreeData(List list) { + this.list = list; + } + + @Override + public String formatDataForDepth(int depth, TreeNode object) { + return null; + } + + @Override + public List getChildren(TreeNode object) { + return (List)object.getChildren(); + } + + @Override + public TreeNode getDataAtIndex(int index) { + if (index < 0 || index >= list.size() ) + return null; + return list.get(index); + } + + @Override + public int getDepthOfData(TreeNode object) { + int count = object.getDepth()-1; // -1 removes invisible root. + return count; + } + + @Override + public boolean hasChildren(TreeNode object) { + return object.getChildren().size() > 0; + } + + @Override + public int indexOf(TreeNode child) { + return child.getListIndex(); + } + + @Override + public boolean hasChildren(int index) { + return hasChildren(list.get(index)); + } + + @Override + public String formatDataForDepth(int depth, int index) { + return formatDataForDepth(depth, list.get(index)); + } + + @Override + public List getChildren(int index) { + return getChildren(list.get(index)); + } + + @Override + public List getChildren(TreeNode object, boolean fullDepth) { + if (!fullDepth) { + return getChildren(object); + } else { + List list = new ArrayList(); + _convertToList(list, object); + return list; + } + + } + private void _convertToList(List list, TreeNode task) { + list.add(task); + for (TreeNode t : task.getChildren()) { + _convertToList(list, t); + } + } + @Override + public int getDepthOfData(int index) { + return getDepthOfData(list.get(index)); + } + + @Override + public boolean isValidIndex(int index) { + if (index < 0) + return false; + if (index >= list.size()) + return false; + return true; + } + + @Override + public int getElementCount() { + return list.size(); + } + + public boolean isRoot(TreeNode object) { + TreeNode parent = object.getParent(); + parent = parent.getParent(); + return (parent == null); + } + + +} \ No newline at end of file