01: /* TreeModel.java
02:
03: {{IS_NOTE
04: Purpose:
05:
06: Description:
07:
08: History:
09: Web Aug 10 2007, Created by Jeff Liu
10: }}IS_NOTE
11:
12: Copyright (C) 2005 Potix Corporation. All Rights Reserved.
13:
14: {{IS_RIGHT
15: This program is distributed under GPL Version 2.0 in the hope that
16: it will be useful, but WITHOUT ANY WARRANTY.
17: }}IS_RIGHT
18: */
19: package org.zkoss.zul;
20:
21: import org.zkoss.zul.event.TreeDataListener;
22:
23: /**
24: * This interface defines the methods that component like {@link Tree}
25: * use to get the content of items.
26: * @author Jeff Liu
27: * @since ZK 3.0.0
28: *
29: */
30: public interface TreeModel {
31:
32: /**
33: * Returns true if node is a leaf.
34: * @param node a node in the tree, obtained from this data source
35: * @return true if node is a leafs
36: */
37: public boolean isLeaf(Object node);
38:
39: /**
40: * Returns the child of parent at index index in the parent's child array.
41: * @param parent a node in the tree, obtained from this data source
42: * @return the child of parent at index index
43: */
44: public Object getChild(Object parent, int index);
45:
46: /**
47: * Returns the number of children of parent.
48: * @param parent a node in the tree, obtained from this data source
49: * @return the number of children of the node parent
50: */
51: public int getChildCount(Object parent);
52:
53: /**
54: * Returns the root of the tree.
55: * @return the root of Tree.
56: */
57: public Object getRoot();
58:
59: /**
60: * Add a listener to the tree that's notified each time a change to the data model occurs
61: * @param l the listener to add
62: */
63: public void addTreeDataListener(TreeDataListener l);
64:
65: /**
66: * Remove a listener to the tree that's notified each time a change to the data model occurs
67: * @param l the listener to remove
68: */
69: public void removeTreeDataListener(TreeDataListener l);
70:
71: /**
72: * Returns an integer array to represent the path from parent(exclusive) to lastNode(inclusive).
73: * <br>notice:<br>
74: * The path has to be in "parent" to "lastNode" order<br>
75: * Ex: {1,0,2}<br>
76: * 1. Go to the parent's child at index(1);<br>
77: * 2. Go to the index(1)'s child at index(0);<br>
78: * 3. Go to the index(0)'s child at idnex(2) -- the lastNode;<br>
79: * If parent is the same as lastNode, return null or empty array.
80: *
81: * @param parent the origin of Path
82: * @param lastNode the destination of Path
83: * @return an integer array to represent the path from parent to lastNode.
84: */
85: public int[] getPath(Object parent, Object lastNode);
86:
87: }
|