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); } }