home *** CD-ROM | disk | FTP | other *** search
/ Late Night VRML 2.0 with Java CD-ROM / code.zip / Ch12 / ui / VrmlTree.java < prev   
Text File  |  1997-01-04  |  3KB  |  130 lines

  1. // VRML Generator
  2. // (c) Justin Couch 1996
  3. //
  4. // From Chapter 13 Late Night VRML 2.0 and Java
  5. //
  6. // The Class that controls the on screen display of VRML nodes.
  7.  
  8. package ui;
  9.  
  10. import java.awt.*;
  11. import ui.tree.*;
  12. import VrmlTypes;
  13. import geometry.VrmlObject;
  14. import exceptions.NoSelectedNodeException;
  15.  
  16. public class VrmlTree implements TreeToolObserver
  17. {
  18.     public VrmlTreeNode selected = null;
  19.     public scrollPanel    display;
  20.  
  21.     private VrmlTreeNode    root;
  22.     private TreeTool    tool;
  23.     private Tree        tree;
  24.     private String        closedFolder;
  25.     private String        openFolder;
  26.     private String         CodeBase;
  27.  
  28.     public VrmlTree(String title, String code_base)
  29.     {
  30.         CodeBase = new String(code_base);
  31.         closedFolder = new String(code_base + "/images/closfold.gif");
  32.         openFolder = new String(code_base + "/images/openfold.gif");
  33.  
  34.         System.out.println("open folder = " + closedFolder);
  35.         root = new VrmlTreeNode(null, VrmlTypes.Group, title, closedFolder, openFolder);
  36.         tree = new Tree(root);
  37.         tool = new TreeTool(tree);
  38.         tool.addObserver(this);
  39.  
  40.         display = new scrollPanel(tool);
  41.     }
  42.  
  43.     // set the VRML file root information for the root node. This should only
  44.     // called once at the initialisation.
  45.     public void setVrmlRoot(VrmlObject vrml_root)
  46.     {
  47.         root.vrmlNode = vrml_root;
  48.     }
  49.  
  50.     // add a visible node to the tree graph
  51.     public void addNode(VrmlObject new_object,
  52.                         int node_type,
  53.                         String node_type_string)
  54.     {
  55.         VrmlTreeNode new_node;
  56.  
  57.         new_node = new VrmlTreeNode(new_object,
  58.                                     node_type,
  59.                                     node_type_string,
  60.                                     closedFolder,
  61.                                     openFolder);
  62.         tool.addNode(selected, new_node);
  63.     }
  64.  
  65.     // The root node has a null vrmlNode field.
  66.     public VrmlObject getVrmlParent()
  67.         throws NoSelectedNodeException
  68.     {
  69.         if(selected == null)
  70.             throw new NoSelectedNodeException();
  71.             
  72.         return(selected.vrmlNode);
  73.     }
  74.  
  75.     public VrmlTreeNode getParent()
  76.     {
  77.         return((VrmlTreeNode)tree.findParent(root, selected));
  78.     }
  79.  
  80.     // Removes the currently selected node from the screen
  81.     public void removeNode(TreeNode parent)
  82.     {
  83.         // the parent is only null when the selected node is the root node. In
  84.         // this case the findParent method returns null.
  85.         if(parent == null)
  86.             display.clearScreen(root);
  87.         else
  88.             parent.removeChild(selected, tool);
  89.     }
  90.  
  91.     public void deleteAll()
  92.     {
  93.         display.clearScreen(root);
  94.     }
  95.  
  96.     public void nodeSelected(TreeNode node)
  97.     {
  98.         //System.out.println("TreeTestApplet::nodeSelected("+node+")");
  99.         selected = (VrmlTreeNode)node;
  100.     }
  101.  
  102.  
  103.     public void nodeUnSelected(TreeNode node)
  104.     {
  105.         //System.out.println("TreeTestApplet::nodeUnSelected("+node+")");
  106.         selected = null;
  107.     }
  108.  
  109.     public void nodeOpened(TreeNode node)
  110.     {
  111.         //System.out.println("TreeTestApplet::nodeOpened("+node+")");
  112.     }
  113.  
  114.  
  115.     public void nodeClosed(TreeNode node)
  116.     {
  117.         //System.out.println("TreeTestApplet::nodeClosed("+node+")");
  118.     }
  119.  
  120.     public void nodeAdded(TreeNode where,TreeNode node)
  121.     {
  122.         //System.out.println("TreeTestApplet::nodeAdded("+node+")");
  123.     }
  124.  
  125.     public void nodeRemoved(TreeNode node)
  126.     {
  127.         // System.out.println("TreeTestApplet::nodeRemoved("+node+")");
  128.     }
  129. }
  130.