/**
* {@link MutableTreeNode} subclass that allows to sort its children.
- *
+ *
* @author David ‘Bombe’ Roden <bombe@freenetproject.org>
*/
public class SortableTreeNode implements MutableTreeNode {
/**
* Creates a new sortable tree node.
- *
+ *
* @param allowsChildren
* <code>true</code> if this node allows children,
* <code>false</code> otherwise
/**
* Creates a new sortable tree node that contains the given user-defined
* object.
- *
+ *
* @param userObject
* The user-defined object
*/
/**
* Creates a new sortable tree node that contains the given user-defined
* object.
- *
+ *
* @param userObject
* The user-defined object
* @param allowsChildren
/**
* Returns the user-defined object.
- *
+ *
* @return The user-defined object
*/
public Object getUserObject() {
return children.isEmpty();
}
+ /**
+ * {@inheritDoc}
+ */
+ public Enumeration<?> children() {
+ return Collections.enumeration(children);
+ }
+
//
// ACTIONS
//
/**
* Adds the given node to this node as a child.
- *
+ *
* @param child
* The child node to add
*/
*/
public void insert(MutableTreeNode child, int index) {
children.add(index, child);
+ child.setParent(this);
}
/**
* {@inheritDoc}
*/
public void remove(int index) {
- children.remove(index);
+ children.remove(index).setParent(null);
}
/**
*/
public void remove(MutableTreeNode node) {
children.remove(node);
+ node.setParent(null);
}
/**
}
/**
+ * Removes all children of this node.
+ */
+ public void removeAll() {
+ for (MutableTreeNode childNode : children) {
+ childNode.setParent(null);
+ }
+ children.clear();
+ }
+
+ /**
* {@inheritDoc}
*/
public void setParent(MutableTreeNode newParent) {
/**
* {@inheritDoc}
*/
- public Enumeration<?> children() {
- return Collections.enumeration(children);
- }
-
- /**
- * {@inheritDoc}
- */
@Override
public String toString() {
return (userObject != null) ? userObject.toString() : null;