package com.github.xsavikx.androidscreencast.ui.explorer; import javax.swing.tree.DefaultMutableTreeNode; public abstract class LazyMutableTreeNode extends DefaultMutableTreeNode { private static final long serialVersionUID = -6383034137965603498L; protected boolean _loaded = false; public LazyMutableTreeNode() { super(); } public LazyMutableTreeNode(Object userObject) { super(userObject); } public LazyMutableTreeNode(Object userObject, boolean allowsChildren) { super(userObject, allowsChildren); } public void clear() { removeAllChildren(); _loaded = false; } @Override public int getChildCount() { synchronized (this) { if (!_loaded) { _loaded = true; initChildren(); } } return super.getChildCount(); } protected abstract void initChildren(); public boolean isLoaded() { return _loaded; } }