home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Late Night VRML 2.0 with Java CD-ROM
/
code.zip
/
Ch12
/
ui
/
tree
/
TreeTool.java
< prev
next >
Wrap
Text File
|
1996-12-30
|
3KB
|
103 lines
/* file : TreeTool.java
* purpose : use class TreeTool to modify a Tree structure
* all modifications will be propagated to a set of observers
* author : Thomas Koch
* copyright : 1995 , GMD
* (Forschungszentrum Informationstechnik GmbH, FIT.CSCW,
* GMD Schloss Birlinghoven, 53754 Sankt Augustin, Germany).
*/
package ui.tree;
import java.lang.*;
import java.util.*;
import java.awt.*;
import ui.tree.*;
public class TreeTool
{
Tree tree;
Vector observer; // Vector of TreeToolObserver
public TreeTool(Tree tree) {
this.tree = tree;
observer = new Vector(3);
}
public void addObserver(TreeToolObserver obs) {
observer.addElement(obs);
}
public void removeObserver(TreeToolObserver obs) {
observer.removeElement(obs);
}
public void selectNode(TreeNode node) {
node.select();
for (Enumeration e = observer.elements();e.hasMoreElements();) {
TreeToolObserver obs = (TreeToolObserver) e.nextElement();
obs.nodeSelected(node);
}
}
public void unSelectNode(TreeNode node) {
node.unSelect();
for (Enumeration e = observer.elements();e.hasMoreElements();) {
TreeToolObserver obs = (TreeToolObserver) e.nextElement();
obs.nodeUnSelected(node);
}
}
public void openNode(TreeNode node) {
node.open();
for (Enumeration e = observer.elements();e.hasMoreElements();) {
TreeToolObserver obs = (TreeToolObserver) e.nextElement();
obs.nodeOpened(node);
}
}
public void closeNode(TreeNode node) {
node.close();
for (Enumeration e = observer.elements();e.hasMoreElements();) {
TreeToolObserver obs = (TreeToolObserver) e.nextElement();
obs.nodeClosed(node);
}
}
public void addNode(TreeNode where,TreeNode node) {
tree.addNode(where,node);
for (Enumeration e = observer.elements();e.hasMoreElements();) {
TreeToolObserver obs = (TreeToolObserver) e.nextElement();
obs.nodeAdded(where,node);
}
}
public void notifyRemove(TreeNode node) {
for (Enumeration e = observer.elements();e.hasMoreElements();) {
TreeToolObserver obs = (TreeToolObserver) e.nextElement();
obs.nodeRemoved(node);
}
}
public void removeNode(TreeNode node) {
tree.removeNode(node);
notifyRemove(node);
}
// this method will remove a node and its subtree
// but unlike to the methode removeNode(TreeNode)
// the Observers will be notified about *all* nodes that are removed !
public void removeNodeAndNotify(TreeNode node) {
tree.removeNode(node,this);
// Tree (or TreeNode) will call notifyRemove() for every removed node !
}
}