001package polaris.sdk.ui.controls; 002import polaris.sdk.ui.*; 003 004import java.util.*; 005public class TreeNode extends Widget { 006 private boolean expanded=true;private Object data; 007 public TreeNode(){this("Node");}public TreeNode(String s){super(s);h=30;focusable=true;} 008 public TreeNode node(TreeNode n){add(n);return this;}public TreeNode data(Object object){data=object;return this;}public Object data(){return data;} 009 public boolean expanded(){return expanded;}public TreeNode expanded(boolean b){expanded=b;return this;} 010 public java.util.List<TreeNode> nodes(){java.util.List<TreeNode> result=new ArrayList<TreeNode>();for(Widget w:children)if(w instanceof TreeNode)result.add((TreeNode)w);return result;} 011 @Override public void activate(){expanded=!expanded;changed();super.activate();} 012 @Override protected void layoutChildren(){float top=32;for(Widget c:children){c.visible(expanded);c.bounds(18,top,w-18,c.height());top+=c.height()+2;}} 013 @Override protected void paint(Painter p){p.text(children.isEmpty()?"·":expanded?"▾":"▸",ax+5,ay+7,14,theme().accent);p.text(text,ax+27,ay+7,14,ink());} 014}