Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libJCRS / src / org / gvsig / crs / gui / panels / TreePanel.java @ 8711

History | View | Annotate | Download (4.9 KB)

1
package org.gvsig.crs.gui.panels;
2

    
3
import java.awt.FlowLayout;
4
import java.awt.GridBagConstraints;
5
import java.awt.GridBagLayout;
6
import java.util.Hashtable;
7

    
8
import javax.swing.JPanel;
9
import javax.swing.JScrollPane;
10
import javax.swing.JTextArea;
11
import javax.swing.JTree;
12
import javax.swing.tree.DefaultMutableTreeNode;
13
import javax.swing.tree.DefaultTreeModel;
14

    
15
/**
16
 * 
17
 * @author Diego Guerrero (diego.guerrero@uclm.es)
18
 *
19
 */
20
public class TreePanel extends JPanel {
21
        
22
        private int                 wComp = 190;
23
        private int                 hComp = 360;
24
        private int                 hTree = (int)Math.floor(hComp * 0.68);
25
        private int                 hList = hComp - hTree;
26
        private JScrollPane pTree = null;
27
        private JScrollPane pList = null;
28
        private JTree tree = null;
29
        //private JList list = null;
30
        private JTextArea list = null;
31
        private DefaultMutableTreeNode raiz = null;
32
        private Hashtable        map;
33
        String rootName = "";
34

    
35
        public TreePanel(String rootName) {
36
                super();
37
                this.rootName = rootName;
38
                initialize();
39
        }
40
        
41
        private void initialize() {
42
                map = new Hashtable();
43
                raiz =  new DefaultMutableTreeNode(rootName);
44
        FlowLayout flowLayout = new FlowLayout();
45
        flowLayout.setHgap(0);
46
        flowLayout.setVgap(0);
47
        this.setLayout(flowLayout);
48
                
49
                GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
50
                gridBagConstraints1.gridx = 0;
51
                gridBagConstraints1.gridy = 1;
52
                GridBagConstraints gridBagConstraints = new GridBagConstraints();
53
                gridBagConstraints.gridx = 0;
54
                gridBagConstraints.gridy = 0;
55
                setLayout(new GridBagLayout());
56
                setPreferredSize(new java.awt.Dimension(wComp,hComp));
57
                add(getPTree(), gridBagConstraints);
58
                add(getPList(), gridBagConstraints1);
59

    
60
        }
61
        
62
        /**
63
         * This method initializes jPanel        
64
         *         
65
         * @return javax.swing.JPanel        
66
         */
67
        private JScrollPane getPTree() {
68
                if (pTree == null) {
69
                        pTree = new JScrollPane();
70
                        pTree.setPreferredSize(new java.awt.Dimension(wComp, hTree));
71
                        pTree.setViewportBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
72
                        pTree.setVerticalScrollBarPolicy(javax.swing.JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
73
                        pTree.setViewportView(getTree());
74
                }
75
                return pTree;
76
        }
77

    
78
        /**
79
         * This method initializes jPanel1        
80
         *         
81
         * @return javax.swing.JPanel        
82
         */
83
        private JScrollPane getPList() {
84
                if (pList == null) {
85
                        pList = new JScrollPane();
86
                        pList.setPreferredSize(new java.awt.Dimension(wComp, hList));
87
                        pList.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
88
                        pList.setBackground(java.awt.Color.white);
89
                        pList.setVerticalScrollBarPolicy(javax.swing.JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
90
                        pList.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
91
                        pList.setViewportView(getList());
92
                }
93
                return pList;
94
        }
95

    
96
        /**
97
         * This method initializes jTree        
98
         *         
99
         * @return javax.swing.JTree        
100
         */
101
        public JTree getTree() {
102
                if (tree == null) {
103
                        tree = new JTree(raiz);
104
                }
105
                return tree;
106
        }
107

    
108
        /**
109
         * This method initializes jList        
110
         *         
111
         * @return javax.swing.JList        
112
         */
113
        public JTextArea getList() {
114
                if (list == null) {
115
                        list = new JTextArea();
116
                        list.setLineWrap(true);
117
                        list.setWrapStyleWord(true);
118
                        list.setEditable(false);
119
                }
120
                return list;
121
        }
122
        
123
        public void setPanelSize(int w, int h){
124
                wComp = w;
125
                hComp = h;
126
                hTree = (int)Math.floor(hComp * 0.68);
127
                hList = hComp - hTree;
128
        this.setPreferredSize(new java.awt.Dimension(wComp, hComp));
129
                setPreferredSize(new java.awt.Dimension(wComp, hComp));
130
                pTree.setPreferredSize(new java.awt.Dimension(wComp, hTree));
131
                pList.setPreferredSize(new java.awt.Dimension(wComp, hList));
132
        }
133
        
134
        /**
135
         * A?ade una nueva categoria al arbol
136
         * @param name        Etiqueta que aparece en el arbol. 
137
         * @param pos        Posici?n en el arbol de la nueva categoria
138
         */
139
        public void addClass(String name, int pos){
140
                DefaultTreeModel model =(DefaultTreeModel)tree.getModel();
141
                DefaultMutableTreeNode r = new DefaultMutableTreeNode( name );
142
                model.insertNodeInto(r, raiz, pos);
143
        }
144
        
145
        /**
146
         * A?ade una entrada a una categoria
147
         * @param name Nombre de la entrada a a?adir
148
         * @param parentName Categoria a la que a?adimos
149
         * @param value Valor asociado a la entrada
150
         */
151
        public void addEntry(String name, String parentName, String value){
152
                DefaultTreeModel model =(DefaultTreeModel)tree.getModel();
153
                for(int i = 0; i < model.getChildCount(raiz); i++){
154
                        if(model.getChild(raiz, i).toString().equals(parentName)){
155
                                DefaultMutableTreeNode node = (DefaultMutableTreeNode)model.getChild(raiz, i);
156
                                node.add(new DefaultMutableTreeNode(name));
157
                                if (value!=null)
158
                                        map.put(name,value);
159
                        }
160
                }
161
        }
162
        
163
        public void setRoot(String name){
164
                DefaultTreeModel model =(DefaultTreeModel)tree.getModel();
165
                //for (int index = 0; index<model.getChildCount(model.getRoot());index++)
166
                //        model.removeNodeFromParent((DefaultMutableTreeNode)model.getChild(raiz, index));
167
                rootName=name;
168
                raiz =  new DefaultMutableTreeNode(rootName);
169
                model.setRoot(raiz);
170
                map.clear();
171
                
172
        }
173
}