From: Mike S. <ms...@us...> - 2006-10-27 15:29:28
|
Update of /cvsroot/wonder/Wonder/Ajax/Ajax/Sources/er/ajax In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv25911/Sources/er/ajax Modified Files: AjaxTreeModel.java AjaxTree.java Log Message: tree has an option delegate (AjaxTreeModel.Delegate) and no longer auto synchronizes bindings Index: AjaxTreeModel.java =================================================================== RCS file: /cvsroot/wonder/Wonder/Ajax/Ajax/Sources/er/ajax/AjaxTreeModel.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** AjaxTreeModel.java 8 Oct 2006 20:14:37 -0000 1.4 --- AjaxTreeModel.java 27 Oct 2006 15:26:13 -0000 1.5 *************** *** 6,218 **** import com.webobjects.foundation.NSKeyValueCodingAdditions; import com.webobjects.foundation.NSMutableSet; public class AjaxTreeModel { ! private Object _rootTreeNode; ! private NSMutableSet _expandedTreeNodes; ! private NSMutableSet _collapsedTreeNodes; ! private String _parentTreeNodeKeyPath; ! private String _childrenTreeNodesKeyPath; ! private String _isLeafKeyPath; ! private boolean _allExpanded; ! private boolean _rootExpanded; ! public AjaxTreeModel() { ! _expandedTreeNodes = new NSMutableSet(); ! _collapsedTreeNodes = new NSMutableSet(); ! } ! public void setRootExpanded(boolean rootExpanded) { ! if (_rootExpanded != rootExpanded) { ! _rootExpanded = rootExpanded; ! expandRootIfNecessary(); ! } ! } ! public boolean isRootExpanded() { ! return _rootExpanded; ! } ! public void setAllExpanded(boolean allExpanded) { ! _allExpanded = allExpanded; ! } ! public boolean isAllExpanded() { ! return _allExpanded; ! } ! public void setParentTreeNodeKeyPath(String parentTreeNodeKeyPath) { ! _parentTreeNodeKeyPath = parentTreeNodeKeyPath; ! } ! public String parentTreeNodeKeyPath() { ! return _parentTreeNodeKeyPath; ! } ! public void setChildrenTreeNodesKeyPath(String childrenTreeNodesKayPath) { ! _childrenTreeNodesKeyPath = childrenTreeNodesKayPath; ! } ! public String childrenTreeNodesKeyPath() { ! return _childrenTreeNodesKeyPath; ! } ! ! public void setIsLeafKeyPath(String isLeafKeyPath) { ! _isLeafKeyPath = isLeafKeyPath; ! } ! ! public String isLeafKeyPath() { ! return _isLeafKeyPath; ! } ! public void setRootTreeNode(Object rootTreeNode) { ! if (rootTreeNode != _rootTreeNode) { ! _rootTreeNode = rootTreeNode; ! _expandedTreeNodes.removeAllObjects(); ! _collapsedTreeNodes.removeAllObjects(); ! expandRootIfNecessary(); ! } ! } ! public Object rootTreeNode() { ! return _rootTreeNode; ! } ! public boolean isLeaf(Object treeNode) { ! boolean isLeaf; ! if (_isLeafKeyPath == null) { ! NSArray childrenTreeNodes = childrenTreeNodes(treeNode); ! isLeaf = childrenTreeNodes == null || childrenTreeNodes.size() == 0; ! } ! else { ! Boolean isLeafBoolean = (Boolean) NSKeyValueCodingAdditions.Utility.valueForKeyPath(treeNode, _isLeafKeyPath); ! isLeaf = isLeafBoolean.booleanValue(); ! } ! return isLeaf; ! } ! ! public boolean isExpanded(Object treeNode) { ! boolean expanded; ! if (_allExpanded) { ! expanded = !_collapsedTreeNodes.containsObject(treeNode); ! } ! else { ! expanded = _expandedTreeNodes.containsObject(treeNode); ! } ! return expanded; ! } ! public void setExpanded(Object treeNode, boolean expanded) { ! if (_rootExpanded && treeNode == _rootTreeNode && !expanded) { ! return; ! } ! ! if (expanded) { ! if (_allExpanded) { ! _collapsedTreeNodes.removeObject(treeNode); ! } ! else { ! _expandedTreeNodes.addObject(treeNode); ! } ! } ! else { ! if (_allExpanded) { ! _collapsedTreeNodes.addObject(treeNode); ! } ! else { ! _expandedTreeNodes.removeObject(treeNode); ! } ! } ! } ! public void collapseAll() { ! if (_allExpanded) { ! _allExpanded = false; ! } ! clearExpandedAndCollapsed(); ! } ! public void expandAll() { ! if (!_allExpanded) { ! _allExpanded = true; ! } ! clearExpandedAndCollapsed(); ! } ! protected void clearExpandedAndCollapsed() { ! _collapsedTreeNodes.removeAllObjects(); ! _expandedTreeNodes.removeAllObjects(); ! expandRootIfNecessary(); ! } ! ! protected void expandRootIfNecessary() { ! if (_rootExpanded && _rootTreeNode != null) { ! setExpanded(_rootTreeNode, true); ! } ! } ! public int level(Object treeNode) { ! Object parentTreeNode = treeNode; ! int level; ! for (level = 0; parentTreeNode != null; parentTreeNode = parentTreeNode(parentTreeNode), level++) { ! // do nothing ! } ! return level - 1; ! } ! public Object parentTreeNode(Object node) { ! Object parentTreeNode = null; ! if (node != null) { ! parentTreeNode = NSKeyValueCodingAdditions.Utility.valueForKeyPath(node, _parentTreeNodeKeyPath); ! } ! return parentTreeNode; ! } ! public NSArray childrenTreeNodes(Object node) { ! NSArray childrenTreeNodes = (NSArray) NSKeyValueCodingAdditions.Utility.valueForKeyPath(node, _childrenTreeNodesKeyPath); ! return childrenTreeNodes; ! } ! public Enumeration depthFirstEnumeration(Object node, boolean enumeratedClosedNodes) { ! return new DepthFirstEnumeration(node, enumeratedClosedNodes); ! } ! public Enumeration rootDepthFirstEnumeration(boolean enumeratedClosedNodes) { ! return new DepthFirstEnumeration(_rootTreeNode, enumeratedClosedNodes); ! } ! protected class DepthFirstEnumeration implements Enumeration { ! private Object _rootNode; ! private Enumeration _childrenEnumeration; ! private Enumeration _subtreeEnumeration; ! private boolean _enumerateClosedNodes; ! public DepthFirstEnumeration(Object rootNode, boolean enumerateClosedNodes) { ! _rootNode = rootNode; ! _enumerateClosedNodes = enumerateClosedNodes; ! if (_enumerateClosedNodes || AjaxTreeModel.this.isExpanded(rootNode)) { ! _childrenEnumeration = AjaxTreeModel.this.childrenTreeNodes(rootNode).objectEnumerator(); ! } ! _subtreeEnumeration = NSArray.EmptyArray.objectEnumerator(); ! } ! public boolean hasMoreElements() { ! return _rootNode != null; ! } ! public Object nextElement() { ! Object retval; ! if (_subtreeEnumeration.hasMoreElements()) { ! retval = _subtreeEnumeration.nextElement(); ! } ! else if (_childrenEnumeration != null && _childrenEnumeration.hasMoreElements()) { ! _subtreeEnumeration = new DepthFirstEnumeration(_childrenEnumeration.nextElement(), _enumerateClosedNodes); ! retval = _subtreeEnumeration.nextElement(); ! } ! else { ! retval = _rootNode; ! _rootNode = null; ! } ! return retval; ! } ! } } --- 6,252 ---- import com.webobjects.foundation.NSKeyValueCodingAdditions; import com.webobjects.foundation.NSMutableSet; + import com.webobjects.foundation._NSDelegate; public class AjaxTreeModel { ! private Object _rootTreeNode; ! private NSMutableSet _expandedTreeNodes; ! private NSMutableSet _collapsedTreeNodes; ! private String _parentTreeNodeKeyPath; ! private String _childrenTreeNodesKeyPath; ! private String _isLeafKeyPath; ! private boolean _allExpanded; ! private boolean _rootExpanded; ! private _NSDelegate _delegate; ! public AjaxTreeModel() { ! _expandedTreeNodes = new NSMutableSet(); ! _collapsedTreeNodes = new NSMutableSet(); ! _delegate = new _NSDelegate(AjaxTreeModel.Delegate.class); ! } ! ! public void setDelegate(Object delegate) { ! _delegate.setDelegate(delegate); ! } ! ! public Object delegate() { ! return _delegate.delegate(); ! } ! public void setRootExpanded(boolean rootExpanded) { ! if (_rootExpanded != rootExpanded) { ! _rootExpanded = rootExpanded; ! expandRootIfNecessary(); ! } ! } ! public boolean isRootExpanded() { ! return _rootExpanded; ! } ! public void setAllExpanded(boolean allExpanded) { ! _allExpanded = allExpanded; ! } ! public boolean isAllExpanded() { ! return _allExpanded; ! } ! public void setParentTreeNodeKeyPath(String parentTreeNodeKeyPath) { ! _parentTreeNodeKeyPath = parentTreeNodeKeyPath; ! } ! public String parentTreeNodeKeyPath() { ! return _parentTreeNodeKeyPath; ! } ! public void setChildrenTreeNodesKeyPath(String childrenTreeNodesKayPath) { ! _childrenTreeNodesKeyPath = childrenTreeNodesKayPath; ! } ! public String childrenTreeNodesKeyPath() { ! return _childrenTreeNodesKeyPath; ! } ! public void setIsLeafKeyPath(String isLeafKeyPath) { ! _isLeafKeyPath = isLeafKeyPath; ! } ! public String isLeafKeyPath() { ! return _isLeafKeyPath; ! } ! public void setRootTreeNode(Object rootTreeNode) { ! if (rootTreeNode != _rootTreeNode) { ! _rootTreeNode = rootTreeNode; ! _expandedTreeNodes.removeAllObjects(); ! _collapsedTreeNodes.removeAllObjects(); ! expandRootIfNecessary(); ! } ! } ! public Object rootTreeNode() { ! return _rootTreeNode; ! } ! public boolean isExpanded(Object treeNode) { ! boolean expanded; ! if (_allExpanded) { ! expanded = !_collapsedTreeNodes.containsObject(treeNode); ! } ! else { ! expanded = _expandedTreeNodes.containsObject(treeNode); ! } ! return expanded; ! } ! public void setExpanded(Object treeNode, boolean expanded) { ! if (_rootExpanded && treeNode == _rootTreeNode && !expanded) { ! return; ! } ! if (expanded) { ! if (_allExpanded) { ! _collapsedTreeNodes.removeObject(treeNode); ! } ! else { ! _expandedTreeNodes.addObject(treeNode); ! } ! } ! else { ! if (_allExpanded) { ! _collapsedTreeNodes.addObject(treeNode); ! } ! else { ! _expandedTreeNodes.removeObject(treeNode); ! } ! } ! } ! public void collapseAll() { ! if (_allExpanded) { ! _allExpanded = false; ! } ! clearExpandedAndCollapsed(); ! } ! public void expandAll() { ! if (!_allExpanded) { ! _allExpanded = true; ! } ! clearExpandedAndCollapsed(); ! } ! protected void clearExpandedAndCollapsed() { ! _collapsedTreeNodes.removeAllObjects(); ! _expandedTreeNodes.removeAllObjects(); ! expandRootIfNecessary(); ! } ! protected void expandRootIfNecessary() { ! if (_rootExpanded && _rootTreeNode != null) { ! setExpanded(_rootTreeNode, true); ! } ! } ! public int level(Object treeNode) { ! Object parentTreeNode = treeNode; ! int level; ! for (level = 0; parentTreeNode != null; parentTreeNode = parentTreeNode(parentTreeNode), level++) { ! // do nothing ! } ! return level - 1; ! } ! public boolean isLeaf(Object node) { ! boolean isLeaf; ! if (_isLeafKeyPath == null) { ! NSArray childrenTreeNodes = childrenTreeNodes(node); ! isLeaf = childrenTreeNodes == null || childrenTreeNodes.size() == 0; ! } ! else if (_delegate.respondsTo("isLeaf")) { ! isLeaf = _delegate.booleanPerform("isLeaf", node); ! } ! else { ! Boolean isLeafBoolean = (Boolean) NSKeyValueCodingAdditions.Utility.valueForKeyPath(node, _isLeafKeyPath); ! isLeaf = isLeafBoolean.booleanValue(); ! } ! return isLeaf; ! } ! public Object parentTreeNode(Object node) { ! Object parentTreeNode = null; ! if (_delegate.respondsTo("parentTreeNode")) { ! parentTreeNode = _delegate.perform("parentTreeNode", node); ! } ! else if (node != null) { ! parentTreeNode = NSKeyValueCodingAdditions.Utility.valueForKeyPath(node, _parentTreeNodeKeyPath); ! } ! else { ! parentTreeNode = null; ! } ! return parentTreeNode; ! } ! public NSArray childrenTreeNodes(Object node) { ! NSArray childrenTreeNodes; ! if (_delegate.respondsTo("childrenTreeNodes")) { ! childrenTreeNodes = (NSArray)_delegate.perform("childrenTreeNodes", node); ! } ! else { ! childrenTreeNodes = (NSArray) NSKeyValueCodingAdditions.Utility.valueForKeyPath(node, _childrenTreeNodesKeyPath); ! } ! return childrenTreeNodes; ! } ! public Enumeration depthFirstEnumeration(Object node, boolean enumeratedClosedNodes) { ! return new DepthFirstEnumeration(node, enumeratedClosedNodes); ! } ! ! public Enumeration rootDepthFirstEnumeration(boolean enumeratedClosedNodes) { ! return new DepthFirstEnumeration(_rootTreeNode, enumeratedClosedNodes); ! } ! ! public static interface Delegate { ! public boolean isLeaf(Object node); ! ! public Object parentTreeNode(Object node); ! ! public NSArray childrenTreeNodes(Object node); ! } ! ! protected class DepthFirstEnumeration implements Enumeration { ! private Object _rootNode; ! private Enumeration _childrenEnumeration; ! private Enumeration _subtreeEnumeration; ! private boolean _enumerateClosedNodes; ! ! public DepthFirstEnumeration(Object rootNode, boolean enumerateClosedNodes) { ! _rootNode = rootNode; ! _enumerateClosedNodes = enumerateClosedNodes; ! if (_enumerateClosedNodes || AjaxTreeModel.this.isExpanded(rootNode)) { ! _childrenEnumeration = AjaxTreeModel.this.childrenTreeNodes(rootNode).objectEnumerator(); ! } ! _subtreeEnumeration = NSArray.EmptyArray.objectEnumerator(); ! } ! ! public boolean hasMoreElements() { ! return _rootNode != null; ! } ! ! public Object nextElement() { ! Object retval; ! if (_subtreeEnumeration.hasMoreElements()) { ! retval = _subtreeEnumeration.nextElement(); ! } ! else if (_childrenEnumeration != null && _childrenEnumeration.hasMoreElements()) { ! _subtreeEnumeration = new DepthFirstEnumeration(_childrenEnumeration.nextElement(), _enumerateClosedNodes); ! retval = _subtreeEnumeration.nextElement(); ! } ! else { ! retval = _rootNode; ! _rootNode = null; ! } ! return retval; ! } ! } } Index: AjaxTree.java =================================================================== RCS file: /cvsroot/wonder/Wonder/Ajax/Ajax/Sources/er/ajax/AjaxTree.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** AjaxTree.java 9 Oct 2006 19:50:36 -0000 1.6 --- AjaxTree.java 27 Oct 2006 15:26:13 -0000 1.7 *************** *** 9,252 **** public class AjaxTree extends WOComponent { ! private String _id; ! private AjaxTreeModel _treeModel; ! private String _collapsedImage; ! private String _collapsedImageFramework; ! private String _expandedImage; ! private String _expandedImageFramework; ! private String _leafImage; ! private String _leafImageFramework; ! ! private NSArray _nodes; ! private int _nodeIndex; ! private int _level; ! private int _closeCount; ! private Object _lastParent; ! private Object _item; ! ! public AjaxTree(WOContext context) { ! super(context); ! _collapsedImage = "collapsed.gif"; ! _collapsedImageFramework = "Ajax"; ! _expandedImage = "expanded.gif"; ! _expandedImageFramework = "Ajax"; ! _leafImage = "leaf.gif"; ! _leafImageFramework = "Ajax"; ! } ! ! public NSArray nodes() { ! if (_nodes == null) { ! NSMutableArray nodes = new NSMutableArray(); ! _fillInOpenNodes(treeModel().rootTreeNode(), nodes); ! _nodes = nodes; ! } ! return _nodes; ! } ! ! public void _setNodeIndex(int nodeIndex) { ! _nodeIndex = nodeIndex; ! } ! ! public int _nodeIndex() { ! return _nodeIndex; ! } ! ! public void setAllExpanded(boolean allExpanded) { ! treeModel().setAllExpanded(allExpanded); ! } ! ! public boolean isAllExpanded() { ! return treeModel().isAllExpanded(); ! } ! ! public void setRootExpanded(boolean rootExpanded) { ! treeModel().setRootExpanded(rootExpanded); ! } ! ! public boolean isRootExpanded() { ! return treeModel().isRootExpanded(); ! } ! ! protected void _fillInOpenNodes(Object node, NSMutableArray nodes) { ! nodes.add(node); ! if (treeModel().isExpanded(node)) { ! NSArray childrenTreeNodes = treeModel().childrenTreeNodes(node); ! if (childrenTreeNodes != null) { ! int childTreeNodeCount = childrenTreeNodes.count(); ! for (int childTreeNodeNum = 0; childTreeNodeNum < childTreeNodeCount; childTreeNodeNum++) { ! Object childNode = childrenTreeNodes.objectAtIndex(childTreeNodeNum); ! _fillInOpenNodes(childNode, nodes); ! } ! } ! } ! } ! ! public void appendToResponse(WOResponse aResponse, WOContext aContext) { ! _level = 0; ! _closeCount = 0; ! super.appendToResponse(aResponse, aContext); ! } ! ! public void setItem(Object item) { ! if (item != _item) { ! Object parent = treeModel().parentTreeNode(item); ! int level; ! if (parent == null) { ! level = 0; ! } ! else if (parent == _item) { ! level = _level + 1; ! } ! else if (parent != _lastParent) { ! level = treeModel().level(item); ! } ! else { ! level = _level; ! } ! if (_level > level) { ! _closeCount = (_level - level); ! } ! else { ! _closeCount = 0; ! } ! _lastParent = parent; ! _level = level; ! _item = item; ! setValueForBinding(item, "item"); ! } ! } ! ! public Object item() { ! return _item; ! } ! public boolean isLeaf() { ! return treeModel().isLeaf(_item); ! } ! public int _closeCount() { ! return _closeCount; ! } ! public void setTreeModel(AjaxTreeModel treeModel) { ! _treeModel = treeModel; ! } ! public AjaxTreeModel treeModel() { ! if (_treeModel == null) { ! _treeModel = new AjaxTreeModel(); ! } ! return _treeModel; ! } ! public void setIsLeafKeyPath(String keyPath) { ! treeModel().setIsLeafKeyPath(keyPath); ! } ! ! public String isLeafKeyPath() { ! return treeModel().isLeafKeyPath(); ! } ! ! public void setParentKeyPath(String keyPath) { ! treeModel().setParentTreeNodeKeyPath(keyPath); ! } ! public String parentKeyPath() { ! return treeModel().parentTreeNodeKeyPath(); ! } ! public void setChildrenKeyPath(String keyPath) { ! treeModel().setChildrenTreeNodesKeyPath(keyPath); ! } ! public String childrenKeyPath() { ! return treeModel().childrenTreeNodesKeyPath(); ! } ! public void setRoot(Object root) { ! treeModel().setRootTreeNode(root); ! } ! public Object root() { ! return treeModel().rootTreeNode(); ! } ! public boolean isExpanded() { ! return treeModel().isExpanded(_item); ! } ! public void setId(String id) { ! _id = id; ! } ! public String id() { ! if (_id == null) { ! _id = AjaxUtils.toSafeElementID(context().elementID()); ! } ! return _id; ! } ! public String collapsedImage() { ! return _collapsedImage; ! } ! public void setCollapsedImage(String collapsedImage) { ! _collapsedImage = collapsedImage; ! } ! public String collapsedImageFramework() { ! return _collapsedImageFramework; ! } ! public void setCollapsedImageFramework(String collapsedImageFramework) { ! _collapsedImageFramework = collapsedImageFramework; ! } ! public String expandedImage() { ! return _expandedImage; ! } ! public void setExpandedImage(String expandedImage) { ! _expandedImage = expandedImage; ! } ! public String expandedImageFramework() { ! return _expandedImageFramework; ! } ! public void setExpandedImageFramework(String expandedImageFramework) { ! _expandedImageFramework = expandedImageFramework; ! } ! public String leafImage() { ! return _leafImage; ! } ! public void setLeafImage(String leafImage) { ! _leafImage = leafImage; ! } ! public String leafImageFramework() { ! return _leafImageFramework; ! } ! public void setLeafImageFramework(String leafImageFramework) { ! _leafImageFramework = leafImageFramework; ! } ! public String _toggleFunctionName() { ! return _id + "Toggle"; ! } ! public WOActionResults expand() { ! treeModel().setExpanded(_item, true); ! _nodes = null; ! return null; ! } ! public WOActionResults collapse() { ! treeModel().setExpanded(_item, false); ! _nodes = null; ! return null; ! } } \ No newline at end of file --- 9,192 ---- public class AjaxTree extends WOComponent { ! private AjaxTreeModel _treeModel; ! private NSArray _nodes; ! private int _nodeIndex; ! private int _level; ! private int _closeCount; ! private Object _lastParent; ! private Object _item; ! public AjaxTree(WOContext context) { ! super(context); ! } ! public boolean synchronizesVariablesWithBindings() { ! return false; ! } ! public NSArray nodes() { ! if (_nodes == null) { ! NSMutableArray nodes = new NSMutableArray(); ! _fillInOpenNodes(treeModel().rootTreeNode(), nodes); ! _nodes = nodes; ! } ! return _nodes; ! } ! public void _setNodeIndex(int nodeIndex) { ! _nodeIndex = nodeIndex; ! } ! public int _nodeIndex() { ! return _nodeIndex; ! } ! protected void _fillInOpenNodes(Object node, NSMutableArray nodes) { ! nodes.add(node); ! if (treeModel().isExpanded(node)) { ! NSArray childrenTreeNodes = treeModel().childrenTreeNodes(node); ! if (childrenTreeNodes != null) { ! int childTreeNodeCount = childrenTreeNodes.count(); ! for (int childTreeNodeNum = 0; childTreeNodeNum < childTreeNodeCount; childTreeNodeNum++) { ! Object childNode = childrenTreeNodes.objectAtIndex(childTreeNodeNum); ! _fillInOpenNodes(childNode, nodes); ! } ! } ! } ! } ! public void appendToResponse(WOResponse aResponse, WOContext aContext) { ! _level = 0; ! _closeCount = 0; ! treeModel().setDelegate(valueForBinding("delegate")); ! if (hasBinding("allExpanded")) { ! treeModel().setAllExpanded(((Boolean) valueForBinding("allExpanded")).booleanValue()); ! } ! if (hasBinding("rootExpanded")) { ! treeModel().setRootExpanded(((Boolean) valueForBinding("rootExpanded")).booleanValue()); ! } ! treeModel().setIsLeafKeyPath(stringValueForBinding("isLeafKeyPath", null)); ! treeModel().setParentTreeNodeKeyPath(stringValueForBinding("parentKeyPath", null)); ! treeModel().setChildrenTreeNodesKeyPath(stringValueForBinding("childrenKeyPath", null)); ! treeModel().setRootTreeNode(valueForBinding("root")); ! super.appendToResponse(aResponse, aContext); ! } ! public void setItem(Object item) { ! if (item != _item) { ! Object parent = treeModel().parentTreeNode(item); ! int level; ! if (parent == null) { ! level = 0; ! } ! else if (parent == _item) { ! level = _level + 1; ! } ! else if (parent != _lastParent) { ! level = treeModel().level(item); ! } ! else { ! level = _level; ! } ! if (_level > level) { ! _closeCount = (_level - level); ! } ! else { ! _closeCount = 0; ! } ! _lastParent = parent; ! _level = level; ! _item = item; ! setValueForBinding(item, "item"); ! } ! } ! public Object item() { ! return _item; ! } ! public boolean isLeaf() { ! return treeModel().isLeaf(_item); ! } ! public boolean isExpanded() { ! return treeModel().isExpanded(_item); ! } ! public int _closeCount() { ! return _closeCount; ! } ! public void setTreeModel(AjaxTreeModel treeModel) { ! _treeModel = treeModel; ! } ! public AjaxTreeModel treeModel() { ! if (_treeModel == null) { ! _treeModel = new AjaxTreeModel(); ! } ! return _treeModel; ! } ! public String id() { ! String id; ! if (hasBinding("id")) { ! id = (String) valueForBinding("id"); ! } ! else { ! id = AjaxUtils.toSafeElementID(context().elementID()); ! } ! return id; ! } ! protected String stringValueForBinding(String bindingName, String defaultValue) { ! String value = defaultValue; ! if (hasBinding(bindingName)) { ! value = (String) valueForBinding(bindingName); ! } ! return value; ! } ! public String collapsedImage() { ! return stringValueForBinding("collapsedImage", "collapsed.gif"); ! } ! public String collapsedImageFramework() { ! return stringValueForBinding("collapsedImageFramework", "Ajax"); ! } ! public String expandedImage() { ! return stringValueForBinding("expandedImage", "expanded.gif"); ! } ! public String expandedImageFramework() { ! return stringValueForBinding("expandedImageFramework", "Ajax"); ! } ! public String leafImage() { ! return stringValueForBinding("leafImage", "leaf.gif"); ! } ! public String leafImageFramework() { ! return stringValueForBinding("leafImageFramework", "Ajax"); ! } ! public String _toggleFunctionName() { ! return id() + "Toggle"; ! } ! public WOActionResults expand() { ! treeModel().setExpanded(_item, true); ! _nodes = null; ! return null; ! } ! public WOActionResults collapse() { ! treeModel().setExpanded(_item, false); ! _nodes = null; ! return null; ! } } \ No newline at end of file |