home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Late Night VRML 2.0 with Java CD-ROM
/
code.zip
/
Ch12
/
ui
/
VrmlTree.java
< prev
Wrap
Text File
|
1997-01-04
|
3KB
|
130 lines
// VRML Generator
// (c) Justin Couch 1996
//
// From Chapter 13 Late Night VRML 2.0 and Java
//
// The Class that controls the on screen display of VRML nodes.
package ui;
import java.awt.*;
import ui.tree.*;
import VrmlTypes;
import geometry.VrmlObject;
import exceptions.NoSelectedNodeException;
public class VrmlTree implements TreeToolObserver
{
public VrmlTreeNode selected = null;
public scrollPanel display;
private VrmlTreeNode root;
private TreeTool tool;
private Tree tree;
private String closedFolder;
private String openFolder;
private String CodeBase;
public VrmlTree(String title, String code_base)
{
CodeBase = new String(code_base);
closedFolder = new String(code_base + "/images/closfold.gif");
openFolder = new String(code_base + "/images/openfold.gif");
System.out.println("open folder = " + closedFolder);
root = new VrmlTreeNode(null, VrmlTypes.Group, title, closedFolder, openFolder);
tree = new Tree(root);
tool = new TreeTool(tree);
tool.addObserver(this);
display = new scrollPanel(tool);
}
// set the VRML file root information for the root node. This should only
// called once at the initialisation.
public void setVrmlRoot(VrmlObject vrml_root)
{
root.vrmlNode = vrml_root;
}
// add a visible node to the tree graph
public void addNode(VrmlObject new_object,
int node_type,
String node_type_string)
{
VrmlTreeNode new_node;
new_node = new VrmlTreeNode(new_object,
node_type,
node_type_string,
closedFolder,
openFolder);
tool.addNode(selected, new_node);
}
// The root node has a null vrmlNode field.
public VrmlObject getVrmlParent()
throws NoSelectedNodeException
{
if(selected == null)
throw new NoSelectedNodeException();
return(selected.vrmlNode);
}
public VrmlTreeNode getParent()
{
return((VrmlTreeNode)tree.findParent(root, selected));
}
// Removes the currently selected node from the screen
public void removeNode(TreeNode parent)
{
// the parent is only null when the selected node is the root node. In
// this case the findParent method returns null.
if(parent == null)
display.clearScreen(root);
else
parent.removeChild(selected, tool);
}
public void deleteAll()
{
display.clearScreen(root);
}
public void nodeSelected(TreeNode node)
{
//System.out.println("TreeTestApplet::nodeSelected("+node+")");
selected = (VrmlTreeNode)node;
}
public void nodeUnSelected(TreeNode node)
{
//System.out.println("TreeTestApplet::nodeUnSelected("+node+")");
selected = null;
}
public void nodeOpened(TreeNode node)
{
//System.out.println("TreeTestApplet::nodeOpened("+node+")");
}
public void nodeClosed(TreeNode node)
{
//System.out.println("TreeTestApplet::nodeClosed("+node+")");
}
public void nodeAdded(TreeNode where,TreeNode node)
{
//System.out.println("TreeTestApplet::nodeAdded("+node+")");
}
public void nodeRemoved(TreeNode node)
{
// System.out.println("TreeTestApplet::nodeRemoved("+node+")");
}
}