Statistics
| Revision:

root / trunk / extensions / extRemoteSensing / src / org / gvsig / remotesensing / gridmath / gui / TableFormat.java @ 13790

History | View | Annotate | Download (6.12 KB)

1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2006 Instituto de Desarrollo Regional and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 *
19
 * For more information, contact:
20
 *
21
 *  Generalitat Valenciana
22
 *   Conselleria d'Infraestructures i Transport
23
 *   Av. Blasco Ib??ez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *      +34 963862235
28
 *   gvsig@gva.es
29
 *      www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   Instituto de Desarrollo Regional (Universidad de Castilla La-Mancha)
34
 *   Campus Universitario s/n
35
 *   02071 Alabacete
36
 *   Spain
37
 *
38
 *   +34 967 599 200
39
 */
40

    
41
package org.gvsig.remotesensing.gridmath.gui;
42

    
43
import java.awt.event.MouseAdapter;
44
import java.awt.event.MouseEvent;
45
import java.awt.event.MouseListener;
46

    
47
import javax.swing.JTable;
48
import javax.swing.JTextArea;
49
import javax.swing.ListSelectionModel;
50
import javax.swing.table.DefaultTableModel;
51

    
52
import com.iver.andami.PluginServices;
53

    
54
/**
55
 * Formato de tabla para la tabla de variables
56
 * @author Alejandro Mu?oz Sanchez        (alejandro.munoz@uclm.es)
57
 * */
58
public class TableFormat{
59

    
60
        private static final long serialVersionUID = 1L;
61
        private        JTable jTableVariables;
62
        private DefaultTableModel tableModel;
63
        private String nombreVar="b";
64
        private int cont=0;
65
        private int  filaSeleccionada;
66
        private boolean  enEspera;
67
        private JTextArea textExpresion;
68
        Object datos[][]=new Object[0][0];                  
69
        final String[] headers = {PluginServices.getText(this, "variable"),PluginServices.getText(this, "valor")};
70
  
71
        TableFormat(JTextArea Text) {
72
                 super();
73
                 // Inicializamos a -1 la fila  seleccionada de la tabla
74
                setFilaSeleccionada(-1);
75
                // Inicializamos enEspera a false
76
                setEnEspera(false);
77
                //Inicializa la tabla
78
                getTableFormat();
79
                textExpresion= Text;
80
         }
81
                
82
         public JTable getTableFormat(){
83
                if (jTableVariables==null){
84
                        //Crear el table model que define la tabla
85
                        tableModel=new DefaultTableModel(datos, headers){
86
                                private static final long serialVersionUID = 1L;
87
                                public boolean isCellEditable(int row, int column) {
88
                                        return false;}
89
                                }; 
90
                        jTableVariables = new JTable(tableModel);         
91
                        jTableVariables.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
92
                        jTableVariables.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
93
                        jTableVariables.getTableHeader().setReorderingAllowed( false ); 
94
                        jTableVariables.getColumn(PluginServices.getText(this, "variable")).setResizable(true);
95
                        jTableVariables.getColumn(PluginServices.getText(this, "variable")).setPreferredWidth(60);
96
                        jTableVariables.getColumn(PluginServices.getText(this, "valor")).setResizable(true);
97
                        jTableVariables.setAutoscrolls(true);         
98
                                
99
                        // Generar los eventos de raton correspondientes
100
                        MouseListener ml = new MouseAdapter() {
101
                                 
102
                                public void mouseClicked(MouseEvent e) { 
103
                                           int iRow=jTableVariables.getSelectedRow();
104
                                           if (e.getClickCount()==2){                  
105
                                                   String s= (String)tableModel.getValueAt(iRow,0);
106
                                                   textExpresion.insert(s,textExpresion.getCaretPosition());
107
                                           }
108
                                           else{
109
                                                   setFilaSeleccionada(iRow);
110
                                                   setEnEspera(true);
111
                                           }
112
                                } };                
113
                        jTableVariables.addMouseListener(ml);
114
                        }
115
                return jTableVariables;
116
          }
117
         
118
         /**
119
         * Agrega en la tabla una nueva pareja Variable-Valor
120
         * @param var   nombre de la variable
121
         * @param value  valor de la variable
122
         * @return el nombre de la variable asignada
123
         */
124
          public String InsertRow(String var, String value){
125
                                  //los nombres de las variables empiezan por 1
126
                String nombre=nombreVar+(getCont()+1);
127
                if (var != null)
128
                           nombre=var;
129
                //Actualizar los cambios en el Jtable
130
                Object[] newRow={nombre, value};
131
                tableModel.addRow(newRow);
132
                setCont(getCont()+1);
133
                jTableVariables.updateUI();
134
                return nombre;
135
          }
136
          
137
          /**
138
           * obtiene la variable asignada a una capa-banda
139
           * @param valor
140
           * @return la variable asignada
141
           */
142
           public String getVariableOf(String valor){
143
                  String variable="";
144
                  //localiza si el valor ya tiene una variable asignada
145
                  for(int i=0;i<tableModel.getRowCount();i++){
146
                                if(tableModel.getValueAt(i,1)!= null){
147
                                        if (tableModel.getValueAt(i,1).equals(valor)){
148
                                                variable=(String)tableModel.getValueAt(i,0);
149
                                                //devuelve la variable que tiene asignada ese valor
150
                                                return variable;
151
                                        }
152
                                }
153
                        }
154
                        //devuelve "" si no est? incluido el valor en la tabla
155
                        return variable;
156
                }
157
                          
158
                public int getCont() {
159
                        return cont;
160
                }                
161
                
162
                public void setCont(int cont) {
163
                                this.cont = cont;
164
                }
165

    
166
                /**
167
                 * obtiene la fila de la tabla que est? seleccionada
168
                 * @return la fila seleccionada
169
                 */
170
                public int getFilaSeleccionada() {
171
                        return filaSeleccionada;
172
                }
173

    
174
                /**
175
                 * Establece la fila seleccionada de la tabla
176
                 * @param filaSeleccionada
177
                 */        
178
                protected void setFilaSeleccionada(int filaSeleccionada) {
179
                        this.filaSeleccionada = filaSeleccionada;
180
                }
181

    
182
                /**
183
                 * Indica si la tabla est? en espera 
184
                 * de un valor para asignar a una variable
185
                 * @return 
186
                 */
187
                public boolean isEnEspera() {
188
                        return enEspera;
189
                }
190
                
191
                /**
192
                 * Establece el valor de la propiedad que indica si se espera un valor para la tabla
193
                 * @param enEspera
194
                 */
195
                public void setEnEspera(boolean enEspera) {
196
                                this.enEspera = enEspera;
197
                        }
198
                
199
                /**
200
                 * Modifica el valor de una variable
201
                 * @param row fila en la que est? la variable
202
                 * @param valor nuevo valor que se le asigna
203
                 *
204
                 */
205
                public void actualizarVariable(int row,String valor){
206
                                //inserta el valor en la fila indicada
207
                                tableModel.setValueAt(valor,row,1);
208
                                jTableVariables.updateUI();
209
                        }
210
}