1   package com.ontotext.gate.vr;
2   
3   import javax.swing.tree.TreePath;
4   import javax.swing.event.TreeModelListener;
5   import javax.swing.tree.*;
6   import javax.swing.event.TreeModelEvent;
7   import java.util.Vector;
8   
9   /**A Tree Model used for the tree view of an ontology.
10   * @author Miroslav Goranov*/
11  
12  
13  public class OntoTreeModel implements TreeModel {
14  
15    private IFolder root;
16    private Vector treeModelListeners = new Vector();
17  
18    public OntoTreeModel(IFolder root) {
19        this.root = root;
20    }
21  
22    public Object getRoot() {
23      return root;
24    }
25  
26    public Object getChild(Object parent, int index) {
27        IFolder parentFolder=(IFolder)parent;
28        IFolder child = parentFolder.getChild(index);
29        return child;
30  
31    }
32  
33    public int getChildCount(Object parent) {
34      IFolder parentFolder=(IFolder)parent;
35      return parentFolder.getChildCount();
36    }
37  
38    public boolean isLeaf(Object node) {
39      boolean result = false;
40      IFolder leaf = ( IFolder)node;
41      if( leaf.getChildCount() == 0){
42         result = true;
43      }
44      return result;
45    }
46  
47    public void valueForPathChanged(TreePath path, Object newValue) {
48    }
49  
50    public int getIndexOfChild(Object parent, Object child) {
51        IFolder fold=(IFolder)parent;
52        return fold.getIndexOfChild(child);
53    }
54  
55    public void addTreeModelListener(TreeModelListener l) {
56      treeModelListeners.add(l);
57    }
58  
59    public void removeTreeModelListener(TreeModelListener l) {
60        treeModelListeners.removeElement(l);
61    }
62  
63    protected void fireTreeStructureChanged(IFolder oldRoot) {
64          int len = treeModelListeners.size();
65          TreeModelEvent e = new TreeModelEvent(this,
66                                                new Object[] {oldRoot});
67          for (int i = 0; i < len; i++) {
68              ((TreeModelListener)treeModelListeners.elementAt(i)).
69                      treeStructureChanged(e);
70          }
71      }
72  }