Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libGDBMS / src / com / hardcode / gdbms / gui / GDBMSParseTreeModel.java @ 466

History | View | Annotate | Download (2.36 KB)

1
/*
2
 * Created on 12-oct-2004
3
 */
4
package com.hardcode.gdbms.gui;
5

    
6
import java.util.Enumeration;
7
import java.util.Hashtable;
8

    
9
import javax.swing.tree.DefaultTreeModel;
10
import javax.swing.tree.TreeNode;
11

    
12
import com.hardcode.gdbms.engine.instruction.Utilities;
13
import com.hardcode.gdbms.parser.SimpleNode;
14

    
15
/**
16
 * @author Fernando Gonz?lez Cort?s
17
 */
18
public class GDBMSParseTreeModel extends DefaultTreeModel {
19

    
20
        /**
21
         * @param arg0
22
         * @param arg1
23
         */
24
        public GDBMSParseTreeModel(TreeNode arg0, boolean arg1) {
25
                super(arg0, arg1);
26
        }
27
        /**
28
         * @param arg0
29
         */
30
        public GDBMSParseTreeModel(TreeNode arg0) {
31
                super(arg0);
32
        }
33

    
34
        public GDBMSParseTreeModel(SimpleNode root){
35
                super(null);
36
                this.setRoot(new ParseNode(root));
37
        }
38
        
39
        public void setTree(SimpleNode root){
40
                this.setRoot(new ParseNode(root));                
41
        }
42

    
43
        public class ParseNode implements TreeNode{
44
                private SimpleNode node;
45
                
46
                public ParseNode(SimpleNode n){
47
                        node = n;
48
                }
49

    
50
                /**
51
                 * @see javax.swing.tree.TreeNode#getChildCount()
52
                 */
53
                public int getChildCount() {
54
                        return node.jjtGetNumChildren();
55
                }
56

    
57
                /**
58
                 * @see javax.swing.tree.TreeNode#getAllowsChildren()
59
                 */
60
                public boolean getAllowsChildren() {
61
                        return true;
62
                }
63

    
64
                /**
65
                 * @see javax.swing.tree.TreeNode#isLeaf()
66
                 */
67
                public boolean isLeaf() {
68
                        return node.jjtGetNumChildren() == 0;
69
                }
70

    
71
                /**
72
                 * @see javax.swing.tree.TreeNode#children()
73
                 */
74
                public Enumeration children() {
75
                        Hashtable foo = new Hashtable();
76
                        for (int i = 0; i < node.jjtGetNumChildren(); i++){
77
                                foo.put(new ParseNode((SimpleNode)node.jjtGetChild(i)), "");
78
                        }
79
                        return foo.keys();
80
                }
81

    
82
                /**
83
                 * @see javax.swing.tree.TreeNode#getParent()
84
                 */
85
                public TreeNode getParent() {
86
                        return new ParseNode((SimpleNode) node.jjtGetParent());
87
                }
88

    
89
                /**
90
                 * @see javax.swing.tree.TreeNode#getChildAt(int)
91
                 */
92
                public TreeNode getChildAt(int arg0) {
93
                        return new ParseNode((SimpleNode) node.jjtGetChild(arg0));
94
                }
95

    
96
                /**
97
                 * @see javax.swing.tree.TreeNode#getIndex(javax.swing.tree.TreeNode)
98
                 */
99
                public int getIndex(TreeNode arg0) {
100
                        for (int i = 0; i < node.jjtGetNumChildren(); i++){
101
                                if (((ParseNode)arg0).node == node){
102
                                        return i;
103
                                }
104
                        }
105
                        return -1;
106
                }
107
                
108
                public String toString(){
109
                        String className = node.getClass().getName();
110
                        className = className.substring(className.lastIndexOf("."));
111
                        return className + "(" + Utilities.getText(node) + ")";
112
                }
113
        }
114
}