package ilarkesto.swing;
import java.util.Enumeration;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;
public abstract class ALazyTreeNode extends DefaultMutableTreeNode {
private boolean childrenLoaded;
protected abstract void loadChildren();
public ALazyTreeNode(Object userObject, boolean allowesChildren) {
super(userObject, allowesChildren);
}
private synchronized void loadChildrenInternal() {
if (childrenLoaded) return;
childrenLoaded = true;
loadChildren();
}
@Override
public int getChildCount() {
loadChildrenInternal();
return super.getChildCount();
}
@Override
public TreeNode getChildAt(int index) {
loadChildrenInternal();
return super.getChildAt(index);
}
@Override
public Enumeration children() {
loadChildrenInternal();
return super.children();
}
}