/** * Refresh the node. * * @param recurse * Recursively refresh subnodes, if true. */ public void refresh(boolean recurse) { // System.out.println("ATN refresh: "+getId()); if(!searching) { searching = true; this.recurse = recurse; // System.out.println("searchChildren: "+getId()); searchChildren(); } else { // If search in progress upgrade to recursive, but do not downgrade. this.recurse = this.recurse || recurse; dirty = true; } }
/** * Get the child count. */ public int getChildCount() { if(children == null && !searching) { searching = true; // System.out.println("searchChildren: "+getId()); searchChildren(); } return children == null ? 0 : children.size(); }
/** * Get the index of a child. */ public int getIndexOfChild(ITreeNode child) { if(children == null && !searching) { searching = true; // System.out.println("searchChildren: "+getId()); searchChildren(); } return children == null ? -1 : children.indexOf(child); }
/** * Get the given child. */ public ITreeNode getChild(int index) { if(children == null && !searching) { searching = true; // System.out.println("searchChildren: "+getId()); searchChildren(); } return children == null ? null : (ITreeNode)children.get(index); }
/** * Get the current children, i.e. start a new update process and provide the * result as a future. */ public IFuture<List<ITreeNode>> getChildren() { if(childrenfuture == null) { childrenfuture = new Future<List<ITreeNode>>(); } IFuture<List<ITreeNode>> ret = childrenfuture; // System.out.println("searchChildren: "+getId()); searchChildren(); // might reset childrenfuture. return ret; }