home *** CD-ROM | disk | FTP | other *** search
Java Source | 1996-12-30 | 2.6 KB | 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 !
- }
- }
-