package org.greenstone.gatherer.util; import javax.swing.*; import javax.swing.tree.*; import org.greenstone.gatherer.util.SynchronizedTreeNode; public class DefaultSynchronizedTreeNode extends DefaultMutableTreeNode implements SynchronizedTreeNode { private String text = null; DefaultSynchronizedTreeNode(Object userObject) { super(userObject); } public SynchronizedTreeNode cloneNode() { // Create new node with same userObject SynchronizedTreeNode new_node = new DefaultSynchronizedTreeNode(userObject); // Clone and add children. for(int i = 0; i < getChildCount(); i++) { SynchronizedTreeNode child = (SynchronizedTreeNode) getChildAt(i); new_node.insert(child.cloneNode(), i); } return new_node; } public int compareTo(Object other) { if(text == null) { text = userObject.toString(); } return text.compareTo(other.toString()); } public boolean equals(Object other) { if(text == null) { text = userObject.toString(); } return text.equals(other.toString()); } public String toString() { if(text == null) { text = userObject.toString(); } return text; } }