1 //
2 // $Id$
3 //
4 // jupload - A file upload applet.
5 //
6 // Copyright 2015 The JUpload Team
7 //
8 // Created: 7 févr. 2015
9 // Creator: etienne_sf
10 // Last modified: $Date$
11 //
12 // This program is free software; you can redistribute it and/or modify
13 // it under the terms of the GNU General Public License as published by
14 // the Free Software Foundation; either version 2 of the License, or
15 // (at your option) any later version.
16 //
17 // This program is distributed in the hope that it will be useful,
18 // but WITHOUT ANY WARRANTY; without even the implied warranty of
19 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 // GNU General Public License for more details.
21 //
22 // You should have received a copy of the GNU General Public License
23 // along with this program; if not, write to the Free Software
24 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25
26 package wjhk.jupload2.gui.filepanel.treeview;
27
28 import java.util.List;
29
30 import javax.swing.event.TreeModelEvent;
31 import javax.swing.tree.TreeModel;
32 import javax.swing.tree.TreePath;
33
34 import wjhk.jupload2.gui.filepanel.FilePanelFlatDataModel2;
35
36 /**
37 * @author etienne_sf
38 */
39 public interface MyTreeNode {
40
41 /**
42 * Returns the list of direct children for this node
43 *
44 * @return the children for this node
45 */
46 List<MyTreeNode> getChildren();
47
48 /**
49 * Returns the number of direct children for this node
50 *
51 * @return Number of direct children
52 */
53 int getChildCount();
54
55 /**
56 * Returns the number of children (direct children children of children...) for this node
57 *
58 * @return Number of direct children
59 */
60 public int getTotalChildCount();
61
62 /**
63 * Get the child with the given index number, from the direct children of this node
64 *
65 * @param index
66 * @return
67 */
68 public MyTreeNode getChild(int index);
69
70 /**
71 * Get the child with the name, from the direct children of this node.
72 *
73 * @param name The name of the item we're looking for. For a file, it's the filename, not the absolute path.
74 * @return The child with this name, or null of no such child exists
75 */
76 public MyTreeNode getChild(String name);
77
78 /**
79 * Returns the parent for this node.
80 *
81 * @return
82 */
83 public MyTreeNode getParent();
84
85 /**
86 * Sets the parent for this node.
87 *
88 * @return
89 */
90 public void setParent(MyTreeNode parent);
91
92 /**
93 * Sets the tree model for the current node. Necessary to properly send the {@link TreeModelEvent}.
94 *
95 * @param model The model in which this node is, and to which {@link TreeModelEvent} must be sent.
96 */
97 public void setTreeModel(TreeModel model);
98
99 /**
100 * Sets the flat model for the current node. It is necessary, as this flat model must be kept synchronized with the
101 * tree model. Each adding o f a child in the tree, must also be done in the flat model.
102 *
103 * @param model The model, which must be kept synchronized.
104 */
105 public void setFlatModel(FilePanelFlatDataModel2 model);
106
107 /**
108 * Removes a child from the children of this node.
109 *
110 * @param child The child to remove
111 * @throws IllegalArgumentException If child is not an actual child of the current {@link FolderNode}.
112 */
113 public void removeChild(MyTreeNode child);
114
115 /** Indicates whether this node has children or not ('terminal' node) */
116 boolean isLeaf();
117
118 /**
119 * Get the {@link TreePath} for this node, in the hierarchy.
120 *
121 * @return
122 */
123 public TreePath getTreePath();
124
125 }