Statistics
| Revision:

svn-gvsig-desktop / trunk / applications / appgvSIG / src / com / iver / cit / gvsig / gui / Dialogs / FInfoDialog.java @ 312

History | View | Annotate | Download (11.6 KB)

1
/*
2
 * Created on 24-jun-2003
3
 *
4
 * Copyright (c) 2003
5
 * Francisco Jos� Pe�arrubia Mart�nez
6
 * IVER Tecnolog�as de la Informaci�n S.A.
7
 * Salamanca 50
8
 * 46005 Valencia (        SPAIN )
9
 * +34 963163400
10
 * mailto:fran@iver.es
11
 * http://www.iver.es
12
 */
13
package com.iver.cit.gvsig.gui.Dialogs;
14

    
15
import java.awt.BorderLayout;
16
import java.util.ArrayList;
17
import java.util.StringTokenizer;
18

    
19
import javax.swing.JPanel;
20
import javax.swing.JScrollPane;
21
import javax.swing.table.AbstractTableModel;
22
import javax.swing.tree.DefaultMutableTreeNode;
23
import javax.swing.tree.DefaultTreeModel;
24
import javax.swing.tree.TreePath;
25
import javax.swing.tree.TreeSelectionModel;
26

    
27
import com.iver.cit.gvsig.project.ProjectView;
28
import com.iver.mdiApp.Utilities;
29
import com.iver.mdiApp.ui.MDIManager.SingletonView;
30
import com.iver.mdiApp.ui.MDIManager.ViewInfo;
31

    
32

    
33
/**
34
 * DOCUMENT ME!
35
 *
36
 * @author Administrador To change the template for this generated type comment
37
 *         go to Window>Preferences>Java>Code Generation>Code and Comments
38
 */
39
public final class FInfoDialog extends JPanel implements SingletonView {
40
           boolean DEBUG=true;
41
    private ArrayList m_arrayNomTemas;
42
    private String m_strInfo;
43
    private ArrayList m_arrayStrings;
44
    private MyTableModel m_gridModel;
45
    private int m_itemSelected;
46
    private int m_subItemSelected;
47
    private DefaultTreeModel m_treeModel;
48

    
49
    // Variables declaration - do not modify
50
    private javax.swing.JSplitPane jSplitPane1;
51
    private javax.swing.JTable m_grid;
52
    private javax.swing.JTree jTree1;
53
    
54
        private ProjectView viewModel = null; 
55
        
56
        private ViewInfo m_ViewInfo =null;
57

    
58
    /**
59
     * Creates new form FInfoDialog
60
     *
61
     * @param parent DOCUMENT ME!
62
     * @param modal DOCUMENT ME!
63
     */
64
    public FInfoDialog() {
65
        //super(parent, modal);
66
        m_arrayNomTemas = new ArrayList();
67
        m_arrayStrings = new ArrayList();
68

    
69
        initComponents();
70
        
71
        this.setSize(300, 235);
72
    }
73

    
74
    /**
75
     * DOCUMENT ME!
76
     */
77
    public void refresh() {
78
        setSelected(0, 0);
79
        refreshLeft();
80
        refreshRight();
81
    }
82

    
83
    /**
84
     * DOCUMENT ME!
85
     */
86
    public void clearAll() {
87
        m_arrayStrings.clear();
88
        m_arrayNomTemas.clear();
89
        m_strInfo = "";
90
        jTree1.removeAll();
91
        
92

    
93
        DefaultMutableTreeNode top = new DefaultMutableTreeNode("root");
94

    
95
        // m_treeModel.setRoot(top);
96
        m_treeModel = new DefaultTreeModel(top);
97
        m_gridModel.setData("","",0);
98
        jTree1.setModel(m_treeModel);
99
    }
100

    
101
    /**
102
     * DOCUMENT ME!
103
     */
104
    private void refreshLeft() {
105
        int i;
106
        int j;
107

    
108
        DefaultMutableTreeNode idRoot = (DefaultMutableTreeNode) m_treeModel.getRoot();
109
        
110
        
111

    
112
        for (i = 0; i < m_arrayStrings.size(); i++) {
113
            String strInfo = (String) m_arrayStrings.get(i);
114
            String nomTema = (String) m_arrayNomTemas.get(i);
115
            StringTokenizer tkz = new StringTokenizer(strInfo, "\n");
116
            String strCampos = tkz.nextToken();
117

    
118
            DefaultMutableTreeNode idTema = new DefaultMutableTreeNode(nomTema);
119
            m_treeModel.insertNodeInto(idTema, idRoot, i);
120
            
121
            
122

    
123
            j = 0;
124

    
125
            while (tkz.hasMoreTokens()) {
126
                String token = tkz.nextToken();
127
                StringTokenizer tkzValores = new StringTokenizer(token, "|");
128
                String strID = tkzValores.nextToken();
129
                MyTreeItem aux = new MyTreeItem(strID, i, j);
130

    
131
                DefaultMutableTreeNode idChild = new DefaultMutableTreeNode(aux);
132
                m_treeModel.insertNodeInto(idChild, idTema, j);
133

    
134
                // jTree1.expandRow(j);
135
                if ((i == m_itemSelected) && (j == m_subItemSelected)) {
136
                    // TreePath elPath = jTree1.getPathForRow(j);
137
                    TreePath elPath = new TreePath(idChild.getPath());
138
                    jTree1.expandPath(elPath);
139
                   if (DEBUG) System.out.println("El path = " + elPath);
140
                    jTree1.setSelectionPath(elPath);
141
                }
142

    
143
                // m_tree->Expand(idChild);
144
                // m_tree->EnsureVisible(idChild);
145
                j++;
146
            }
147
        }
148
         // for tema
149

    
150
        jTree1.stopEditing();
151
        jTree1.setRootVisible(false);
152
    }
153

    
154
    /**
155
     * DOCUMENT ME!
156
     */
157
    private void refreshRight() {
158
        m_grid.invalidate();
159
        m_grid.repaint();
160
    }
161

    
162
    /**
163
     * DOCUMENT ME!
164
     *
165
     * @param idItem DOCUMENT ME!
166
     * @param idSubItem DOCUMENT ME!
167
     */
168
    private void setSelected(int idItem, int idSubItem) {
169
        m_itemSelected = idItem;
170
        m_subItemSelected = idSubItem;
171

    
172
        int i;
173
        int numCols;
174
        int numRows = 0;
175

    
176
        for (i = 0; i < m_arrayStrings.size(); i++) {
177
            if (i == m_itemSelected) {
178
                m_strInfo = (String) m_arrayStrings.get(i);
179
            }
180
        }
181

    
182
        StringTokenizer tkz = new StringTokenizer(m_strInfo, "\n");
183
        if (! tkz.hasMoreTokens()) return;
184
        
185
        String strCampos = tkz.nextToken();
186

    
187
        StringTokenizer tkzCampos = new StringTokenizer(strCampos, "|");
188
        i = 0;
189

    
190
        while (tkzCampos.hasMoreTokens()) {
191
            tkzCampos.nextToken();
192
            i++;
193
        }
194

    
195
        numCols = i;
196

    
197
        int regSelec = 0;
198
        String strValores = "";
199

    
200
        while (tkz.hasMoreTokens()) {
201
            String token = tkz.nextToken();
202

    
203
            if (regSelec == m_subItemSelected) {
204
                strValores = token;
205
            }
206

    
207
            regSelec++;
208
        }
209

    
210
        if (strValores != "") {
211
            m_gridModel.setData(strCampos, strValores, numCols);
212
        }
213

    
214
        refreshRight();
215
    }
216

    
217
    /**
218
     * This method is called from within the constructor to initialize the
219
     * form. WARNING: Do NOT modify this code. The content of this method is
220
     * always regenerated by the Form Editor.
221
     */
222
    private void initComponents() {
223
        jSplitPane1 = new javax.swing.JSplitPane();
224

    
225
        DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("root");
226
        m_treeModel = new DefaultTreeModel(rootNode);
227

    
228
        jTree1 = new javax.swing.JTree(m_treeModel);
229
        jTree1.setEditable(true);
230
        jTree1.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
231
        jTree1.setShowsRootHandles(true);
232

    
233
        m_grid = new javax.swing.JTable();
234

    
235
      /*  addWindowListener(new java.awt.event.WindowAdapter() {
236
                public void windowClosing(java.awt.event.WindowEvent evt) {
237
                    closeDialog(evt);
238
                }
239
            });
240
*/
241
        jTree1.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
242
                public void valueChanged(
243
                    javax.swing.event.TreeSelectionEvent evt) {
244
                    jTree1ValueChanged(evt);
245
                }
246
            });
247

    
248
        //Create the scroll pane and add the tree to it. 
249
        JScrollPane treeView = new JScrollPane(jTree1);
250

    
251
        //Add the scroll panes to a split pane.
252
        jSplitPane1.setLeftComponent(treeView);
253

    
254
        m_gridModel = new MyTableModel();
255
        m_grid.setModel(m_gridModel);
256

    
257
        JScrollPane tableView = new JScrollPane(m_grid);
258

    
259
        // tableView.setBackground(java.awt.Color.WHITE);
260
        jSplitPane1.setRightComponent(tableView);
261

    
262
        java.awt.Dimension minimumSize = new java.awt.Dimension(100, 50);
263
        m_grid.setMinimumSize(minimumSize);
264
        treeView.setMinimumSize(minimumSize);
265

    
266
        // splitPane.setDividerLocation(100); //XXX: ignored in some releases
267
        //of Swing. bug 4101306
268
        //workaround for bug 4101306:
269
        //treeView.setPreferredSize(new Dimension(100, 100)); 
270
        jSplitPane1.setPreferredSize(new java.awt.Dimension(300, 200));
271

    
272
        setLayout(new BorderLayout());
273
        add(jSplitPane1, java.awt.BorderLayout.CENTER);
274

    
275
        //pack();
276
    }
277

    
278
    /**
279
     * DOCUMENT ME!
280
     *
281
     * @param evt DOCUMENT ME!
282
     */
283
    private void jTree1ValueChanged(javax.swing.event.TreeSelectionEvent evt) {
284
        // Add your handling code here:
285
        DefaultMutableTreeNode node = (DefaultMutableTreeNode) jTree1.getLastSelectedPathComponent();
286

    
287
        if (node == null) {
288
            return;
289
        }
290

    
291
        Object nodeInfo = node.getUserObject();
292

    
293
        if (node.isLeaf()) {
294
            MyTreeItem dato = (MyTreeItem) nodeInfo;
295
            setSelected(dato.m_idNodo, dato.m_idSubNodo);
296
        }
297

    
298
        // System.out.println("El path seleccionado= " + jTree1.getRowForPath(evt.getPath()));
299
    }
300

    
301
   
302
    /**
303
     * DOCUMENT ME!
304
     *
305
     * @param nomTema DOCUMENT ME!
306
     * @param strInfo DOCUMENT ME!
307
     */
308
    public void addLayerInfo(String nomTema, String strInfo) {
309
        m_arrayNomTemas.add(nomTema);
310
        m_arrayStrings.add(strInfo);
311
    }
312

    
313
    private class MyTableModel extends AbstractTableModel {
314
        private String[] columnNames;
315
        private Object[][] data;
316

    
317
        MyTableModel() {
318
            columnNames = new String[2];
319
            columnNames[0] = Utilities.getMessage(this,"campo");
320
            columnNames[1] = Utilities.getMessage(this,"Valor");
321
            data = new Object[1][2];
322
        }
323

    
324
        public int getColumnCount() {
325
            return columnNames.length;
326
        }
327

    
328
        public int getRowCount() {
329
            return data.length;
330
        }
331

    
332
        public String getColumnName(int col) {
333
            return columnNames[col];
334
        }
335

    
336
        public Object getValueAt(int row, int col) {
337
            return data[row][col];
338
        }
339

    
340
        public void setData(String strCampos, String strValores, int numRows) {
341
            // Fijamos columnNames y data en funci�n de strInfo.
342
            // strInfo es una cabecera con los nombres de los campos separados
343
            // por | y despu�s una l�nea por cada registro con los valores
344
            // de los campos.                        
345
            data = new Object[numRows][2];
346
            
347
            if (strCampos == "") return; // Como si borraramos la tabla
348

    
349
            int i;
350

    
351
            StringTokenizer tkzCampos = new StringTokenizer(strCampos, "|");
352
            i = 0;
353

    
354
            while (tkzCampos.hasMoreTokens()) {
355
                data[i][0] = tkzCampos.nextToken();
356
                i++;
357
            }
358

    
359
            StringTokenizer tkzValores = new StringTokenizer(strValores, "|");
360
            String strID = tkzValores.nextToken();
361
            i = 0;
362

    
363
            while (tkzValores.hasMoreTokens()) {
364
                // m_grid->SetCellValue(i,1,tkzValores.GetNextToken());
365
                data[i][1] = tkzValores.nextToken();
366
                i++;
367
            }
368
        }
369
    }
370
     // MyTableModel
371

    
372
    private final class MyTreeItem {
373
        public int m_idNodo;
374
        public int m_idSubNodo;
375
        private String m_strVal;
376

    
377
        public MyTreeItem(String str, int idN, int idSub) {
378
            m_strVal = str;
379
            m_idNodo = idN;
380
            m_idSubNodo = idSub;
381
        }
382

    
383
        public String toString() {
384
            return m_strVal;
385
        }
386
    }
387
        /* (non-Javadoc)
388
         * @see com.iver.mdiApp.ui.MDIManager.View#getViewInfo()
389
         */
390
        public ViewInfo getViewInfo() {
391
                if (m_ViewInfo==null){
392
                    m_ViewInfo=new ViewInfo();
393
                    m_ViewInfo.setFeatures(ViewInfo.MODELESSDIALOG);
394
                        m_ViewInfo.setResizable(true);
395
                        m_ViewInfo.setTitle(Utilities.getMessage(this,"Identificar_Resultados"));
396
                }
397
                return m_ViewInfo;
398
                }
399

    
400
        /**
401
         * @see com.iver.mdiApp.ui.MDIManager.SingletonView#getViewModel()
402
         */
403
        public Object getViewModel() {
404
                return viewModel;
405
        }
406

    
407
    // End of variables declaration
408
        /**
409
         * @param view
410
         */
411
        public void setViewModel(ProjectView view) {
412
                viewModel = view;
413
        }
414

    
415
        /**
416
         * @see com.iver.mdiApp.ui.MDIManager.View#viewActivated()
417
         */
418
        public void viewActivated() {
419
        }
420

    
421
}