import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;public class TreeView extends JPanel

   SuperModel model;
   public TreeView(SuperModel model)
   {
      this.model=model;
      this.setLayout(new BorderLayout());
      this.setBackground(Color.white);
      this.setOpaque(true);
   }
   public void reload()
   {
      DefaultMutableTreeNode root = new DefaultMutableTreeNode("ROOT");
      JTree tree=new JTree(root);
      TreeController controller=new TreeController();
      tree.addTreeSelectionListener(controller);
      tree.addTreeExpansionListener(controller);
      tree.addTreeWillExpandListener(controller);
      tree.addMouseListener(controller);
      this.add(tree,BorderLayout.WEST);      //载入某层
      loadLayer(model,root,0);
   }
   public void loadLayer(SuperModel model,DefaultMutableTreeNode me,int now)
   {
      //载入节点
      loadNode(model,me,now);
      //载入连接
      loadLink(model,me,now);
   }
   public void loadNode(SuperModel model,DefaultMutableTreeNode me,int now)
   {
      Vector nodes=model.getNode(now);
      for(int i=0;i<nodes.size();i++)
      {
         NodeInfo node=(NodeInfo)nodes.get(i);
         DefaultMutableTreeNode sub = new DefaultMutableTreeNode("Node id="+node.id+" type="+node.type+" state="+node.state);
         me.add(sub);
         loadLayer(model,sub,node.id);
      }
   }
   public void loadLink(SuperModel model,DefaultMutableTreeNode me,int now)
   {
      Vector links=model.getLink(now);
      for(int i=0;i<links.size();i++)
      {
         LinkInfo link=(LinkInfo)links.get(i);
         DefaultMutableTreeNode sub = new DefaultMutableTreeNode("Link id="+link.id+" type="+link.type+" state="+link.state);
         me.add(sub);
      }
   }
}