/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package usda.weru.util;

import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.MutableTreeNode;

/**
 *
 * @author Joseph Levin <joelevin@weru.ksu.edu>
 */
public abstract class AbstractLazyLoadingTreeNode extends DefaultMutableTreeNode implements LazyLoadingTreeNode{

	/**
	 *
	 */
	protected static final long serialVersionUID = -4298474751201349152L;
	protected boolean c_childrenLoaded;

	/**
	 *
	 */
	public AbstractLazyLoadingTreeNode() {
        setAllowsChildren(true);
    }

	/**
	 *
	 * @return
	 */
	@Override
    public boolean isLeaf() {
        return !getAllowsChildren();
    }


    @Override
    public MutableTreeNode[] loadChildren() {
        MutableTreeNode[] createdChildren = createChildren();
        if(createdChildren != null){
            c_childrenLoaded = true;
        }
        return createdChildren;

    }

	/**
	 *
	 * @return
	 */
	protected abstract MutableTreeNode[] createChildren();

	/**
	 *
	 * @return
	 */
	@Override
    public boolean getChildrenLoaded() {
        return c_childrenLoaded;
    }
}
