package me.legrange.panstamp.gui.model.tree; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.MutableTreeNode; /** * * @author gideon */ public abstract class NetworkTreeNode<S,C> extends DefaultMutableTreeNode implements Comparable<NetworkTreeNode<S, C>> { public enum Type { WORLD, NETWORK, PANSTAMP, REGISTER, ENDPOINT }; @Override public void remove(MutableTreeNode child) { ((NetworkTreeNode) child).stop(); super.remove(child); reload(this); } @Override public abstract String toString(); protected NetworkTreeNode(S userObject) { super(userObject); } abstract void addChild(C child); protected abstract void start(); protected void stop() { int c = getChildCount(); for (int i = 0; i < c; ++i) { NetworkTreeNode sn = (NetworkTreeNode) getChildAt(i); if (sn != null ) { sn.stop(); } } } protected void addToTree(NetworkTreeNode childNode, NetworkTreeNode parentNode) { ((NetworkTreeNode) getParent()).addToTree(childNode, parentNode); } protected void removeFromTree(NetworkTreeNode childNode,NetworkTreeNode parentNode) { parentNode.remove(childNode); } protected void reload(NetworkTreeNode childNode) { ((NetworkTreeNode) getParent()).reload(childNode); } protected final void reload() { reload(this); } public abstract Type getType(); }