view src/treecms/gui/NodeViewerTree.java @ 8:f96193babac0

changed byte[] to ByteBuffer added TreeEditor.updateTree(Node,NodeData,Node[]) for node path is known. added GUIEditor
author shoshi
date Thu, 31 Mar 2011 02:08:44 +0900
parents
children 17ed97ca9960
line wrap: on
line source

package treecms.gui;

import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;

import treecms.api.Node;
import treecms.api.TreeEditor;

public class NodeViewerTree extends JTree
{
	private static final long serialVersionUID = 8257838201307216301L;
	
	public NodeViewerTree(Node _node)
	{
		super(new NVTreeModel(_node));
	}
	
	public void addChildToSelectedNode(Node _child)
	{
		DefaultMutableTreeNode node = (DefaultMutableTreeNode)this.getLastSelectedPathComponent();
		if(node == null){
			return;
		}
		
		DefaultMutableTreeNode newNode = new DefaultMutableTreeNode();
		newNode.setUserObject(_child);
		node.add(newNode);
	}
	
	private static class NVTreeModel extends DefaultTreeModel
	{
		public NVTreeModel(Node _node)
		{
			super(new DefaultMutableTreeNode());
			setTree(_node,false);
		}
		
		public void setTree(Node _node,boolean _reload)
		{
			DefaultMutableTreeNode root = (DefaultMutableTreeNode)getRoot();
			root.removeAllChildren();
			root.setUserObject(_node);
			
			for(Node child : _node.children()){
				treewalk(child,root);
			}
			
			if(_reload){
				reload();
			}
		}
		
		private void treewalk(Node _node,DefaultMutableTreeNode _treeNode)
		{
			DefaultMutableTreeNode treeChild = new DefaultMutableTreeNode();
			treeChild.setUserObject(_node);
			_treeNode.add(treeChild);
			
			for(Node child : _node.children()){
				treewalk(child,treeChild);
			}
		}
	}
}