Statistics
| Revision:

root / branches / F2 / extensions / extJCRS / src / org / gvsig / crs / gui / listeners / CRSSelectionDialogListener.java @ 10786

History | View | Annotate | Download (16.8 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

    
42
package org.gvsig.crs.gui.listeners;
43

    
44
import java.awt.CardLayout;
45
import java.awt.event.ActionEvent;
46
import java.awt.event.ActionListener;
47
import java.awt.event.ItemEvent;
48
import java.awt.event.ItemListener;
49
import java.awt.event.MouseEvent;
50
import java.awt.event.MouseListener;
51

    
52
import javax.swing.JOptionPane;
53
import javax.swing.ListSelectionModel;
54
import javax.swing.event.DocumentEvent;
55
import javax.swing.event.DocumentListener;
56
import javax.swing.event.ListSelectionEvent;
57
import javax.swing.event.ListSelectionListener;
58

    
59
import org.gvsig.crs.CrsWkt;
60
import org.gvsig.crs.ICrs;
61
import org.gvsig.crs.gui.CRSSelectionDialog;
62
import org.gvsig.crs.persistence.CrsData;
63
import org.gvsig.crs.persistence.RecentCRSsPersistence;
64

    
65
import com.iver.andami.PluginServices;
66

    
67
/**
68
 * Esta clase contiene los listeners necesarios para el manejo 
69
 * de los eventos del panel de elecci?n de CRS de la vista principal.
70
 * 
71
 * @author Diego Guerrero Sevilla (diego.guerrero@uclm.es)
72
 * @author Jos? Luis G?mez Mart?nez (jolugomar@gmail.com)
73
 *
74
 */
75

    
76
public class CRSSelectionDialogListener implements ActionListener,
77
                 ListSelectionListener, ItemListener, MouseListener {
78
        
79
        CRSSelectionDialog dialog = null;
80

    
81
        public CRSSelectionDialogListener(CRSSelectionDialog d) {
82
                dialog = d;
83
        }
84
        
85
        /**
86
         * Manejador de los eventos relacionados con los botones del panel
87
         * de selecci?n de CRS.
88
         */
89
        public void actionPerformed(ActionEvent e) {
90
                if (e.getSource() == dialog.getCrsMainPanel().getJButtonAccept()){
91
                        dialog.setLastProj(dialog.getProjection());
92
                        dialog.setDataSource(dialog.getCrsMainPanel().getDataSource());
93
                if (dialog.getLastProj() != null){
94
                        /*
95
                         * Actualizar recientes...
96
                         */
97
                        String authority = ((ICrs)dialog.getLastProj()).getCrsWkt().getAuthority()[0];
98
                        String name = ((ICrs)dialog.getLastProj()).getCrsWkt().getName();
99
                        int code = ((ICrs)dialog.getLastProj()).getCode();
100
                        CrsData crsData = new CrsData(authority,code,name);
101
                        RecentCRSsPersistence persistence = new RecentCRSsPersistence(RecentCRSsPersistence.pluginClassInstance);
102
                        persistence.addCrsData(crsData);
103
                        
104
                        
105
                        PluginServices.getMDIManager().closeWindow(dialog);
106
                        dialog.setOkPressed(true);
107
                        }
108
                else {
109
                        dialog.setOkPressed(false);
110
                }        
111
                }
112
                
113
                if (e.getSource() == dialog.getCrsMainPanel().getJButtonCancel()){
114
                        dialog.setProjection(dialog.getLastProj());
115
            PluginServices.getMDIManager().closeWindow(dialog);
116
            dialog.setOkPressed(false);
117
                }
118

    
119
        }
120

    
121

    
122
        /**
123
         * Maneja los eventos del combobox de elecci?n de repositorio para
124
         * la selecci?n del CRS de la vista
125
         */
126
        public void itemStateChanged(ItemEvent e) {
127
                CardLayout cl = (CardLayout)(dialog.getCrsMainPanel().getJPanelMain().getLayout());
128
                String op = (String)e.getItem();                
129
                if (op.equals("EPSG")){
130
                        dialog.getCrsMainPanel().getEpsgPanel().connection();        
131
                        if(dialog.getCrsMainPanel().getEpsgPanel().getJTable().getSelectedRowCount()>0)
132
                                dialog.getCrsMainPanel().getJButtonAccept().setEnabled(true);
133
                        else
134
                                dialog.getCrsMainPanel().getJButtonAccept().setEnabled(false);
135
                                
136
                } else if (op.equals("IAU2000")) {
137
                        dialog.getCrsMainPanel().getIauPanel().connection();
138
                        if(dialog.getCrsMainPanel().getIauPanel().getJTable().getSelectedRowCount()>0)
139
                                dialog.getCrsMainPanel().getJButtonAccept().setEnabled(true);
140
                        else
141
                                dialog.getCrsMainPanel().getJButtonAccept().setEnabled(false);
142
                }else if (op.equals("Recientes")) {
143
                        if(dialog.getCrsMainPanel().getRecentsPanel().getJTable().getSelectedRowCount()>0)
144
                                dialog.getCrsMainPanel().getJButtonAccept().setEnabled(true);
145
                        else
146
                                dialog.getCrsMainPanel().getJButtonAccept().setEnabled(false);
147
                }
148
                else if (op.equals("ESRI")) {
149
                        dialog.getCrsMainPanel().getEsriPanel().connection();
150
                if(dialog.getCrsMainPanel().getEsriPanel().getJTable().getSelectedRowCount()>0)
151
                        dialog.getCrsMainPanel().getJButtonAccept().setEnabled(true);
152
                else
153
                        dialog.getCrsMainPanel().getJButtonAccept().setEnabled(false);
154
                }else if (op.equals("newCRS")) {
155
                        //**if(dialog.getCrsMainPanel().getRecentsPanel().getJTable().getSelectedRowCount()>0)
156
                                //**dialog.getCrsMainPanel().getJButtonAccept().setEnabled(true);
157
                        //**else
158
                                //**dialog.getCrsMainPanel().getJButtonAccept().setEnabled(false);
159
                }
160
            cl.show(dialog.getCrsMainPanel().getJPanelMain(), (String)e.getItem());
161
            dialog.getCrsMainPanel().setDataSource((String)e.getItem());
162
        }
163

    
164
        /**
165
         * Maneja el evento de cambio de valor de las tablas existentes
166
         * en cada uno de los distintos repositorios para la selecci?n
167
         * del CRS de la vista.
168
         */
169
        public void valueChanged(ListSelectionEvent e) {
170
                if (e.getSource() == dialog.getCrsMainPanel().getRecentsPanel().getJTable().getSelectionModel()){
171
                        ListSelectionModel lsm = (ListSelectionModel)e.getSource();
172
                        
173
                if (lsm.isSelectionEmpty()) {
174
                        dialog.getCrsMainPanel().getRecentsPanel().selectedRowTable = -1;
175
                        dialog.getCrsMainPanel().getRecentsPanel().setCodeCRS(-1);
176
                        dialog.getCrsMainPanel().getJButtonAccept().setEnabled(false);                                
177
                        dialog.setCode(0);                        
178
                } 
179
                else {                
180
                        dialog.getCrsMainPanel().getRecentsPanel().initCrs();                                                        
181
                        dialog.setCode(dialog.getCrsMainPanel().getRecentsPanel().getCodeCRS());
182
                    dialog.getCrsMainPanel().getJButtonAccept().setEnabled(true);
183
                }
184
                }
185
                
186
                if (e.getSource() == dialog.getCrsMainPanel().getIauPanel().getJTable().getSelectionModel()){
187
                        ListSelectionModel lsm = (ListSelectionModel)e.getSource();
188
                        String[] not_soported = {"Oblique_Cylindrical_Equal_Area"};
189
                        boolean soported = true;
190
                         if (lsm.isSelectionEmpty()) {
191
                                dialog.getCrsMainPanel().getIauPanel().selectedRowTable = -1;
192
                                dialog.getCrsMainPanel().getIauPanel().setCodeCRS(-1);
193
                                dialog.getCrsMainPanel().getJButtonAccept().setEnabled(false);                                
194
                                dialog.setCode(0);                
195
                                
196
                         } 
197
                         else {  
198
                                 
199
                                 dialog.getCrsMainPanel().getIauPanel().selectedRowTable = lsm.getMinSelectionIndex();
200
                                 dialog.getCrsMainPanel().getIauPanel().setCodeCRS(Integer.parseInt((String)dialog.getCrsMainPanel().getIauPanel().sorter.getValueAt(dialog.getCrsMainPanel().getIauPanel().selectedRowTable,0)));
201
                                 dialog.getCrsMainPanel().getIauPanel().setWKT();
202
                                 CrsWkt crs = new CrsWkt(dialog.getCrsMainPanel().getIauPanel().getWKT());
203
                                 String crs_kind = crs.getProjection();
204
                                 for (int i = 0; i < not_soported.length; i++) {
205
                                         if (crs_kind.equals(not_soported[i]))
206
                                        soported = false;                                         
207
                        }
208
                        if (soported){
209
                                dialog.setCode(dialog.getCrsMainPanel().getIauPanel().getCodeCRS());
210
                                dialog.getCrsMainPanel().getJButtonAccept().setEnabled(true);        
211
                        }
212
                        else {
213
                                JOptionPane.showMessageDialog(dialog, PluginServices.getText(this,"crs_not_soported"), "Warning...",
214
                                                        JOptionPane.WARNING_MESSAGE);
215
                                dialog.getCrsMainPanel().getIauPanel().setCodeCRS(-1);
216
                                dialog.getCrsMainPanel().getIauPanel().setCodeCRS(0);
217
                                dialog.getCrsMainPanel().getJButtonAccept().setEnabled(false);                                
218
                        }                                                    
219
                     }
220
                }
221
                
222
                if (e.getSource() == dialog.getCrsMainPanel().getEpsgPanel().getJTable().getSelectionModel()){
223
                        String[] not_soported = {"engineering", "vertical", "compound", "geocentric"};
224
                        boolean soported = true;
225
                        ListSelectionModel lsm = (ListSelectionModel)e.getSource();
226
                                                                
227
                if (lsm.isSelectionEmpty()) {
228
                        dialog.getCrsMainPanel().getEpsgPanel().selectedRowTable = -1;
229
                        dialog.getCrsMainPanel().getEpsgPanel().setCodeCRS(-1);
230
                        dialog.getCrsMainPanel().getJButtonAccept().setEnabled(false);                
231
                        dialog.getCrsMainPanel().getEpsgPanel().getInfoCrs().setEnabled(false);
232
                        dialog.setCode(0);                             
233
                } 
234
                else {                        
235
                        dialog.getCrsMainPanel().getEpsgPanel().selectedRowTable = lsm.getMinSelectionIndex();
236
                        String crs_kind = (String)dialog.getCrsMainPanel().getEpsgPanel().sorter.getValueAt(dialog.getCrsMainPanel().getEpsgPanel().selectedRowTable,2);                        
237
                        for (int i = 0; i < not_soported.length; i++) {
238
                                if (crs_kind.equals(not_soported[i]))
239
                                        soported = false;                                
240
                        }
241
                        if (soported){
242
                                dialog.getCrsMainPanel().getEpsgPanel().setCodeCRS(Integer.parseInt((String)dialog.getCrsMainPanel().getEpsgPanel().sorter.getValueAt(dialog.getCrsMainPanel().getEpsgPanel().selectedRowTable,0)));
243
                            dialog.getCrsMainPanel().getEpsgPanel().setWKT();
244
                            dialog.setCode(dialog.getCrsMainPanel().getEpsgPanel().epsg_code);
245
                            dialog.getCrsMainPanel().getJButtonAccept().setEnabled(true);
246
                            dialog.getCrsMainPanel().getEpsgPanel().getInfoCrs().setEnabled(true);
247
                            
248
                        }
249
                        else {
250
                                JOptionPane.showMessageDialog(dialog, PluginServices.getText(this,"crs_not_soported"), "Warning...",
251
                                                        JOptionPane.WARNING_MESSAGE);
252
                                dialog.getCrsMainPanel().getEpsgPanel().setCodeCRS(-1);
253
                                dialog.setCode(0);
254
                                dialog.getCrsMainPanel().getJButtonAccept().setEnabled(false);
255
                                dialog.getCrsMainPanel().getEpsgPanel().getInfoCrs().setEnabled(false);
256
                        }                        
257
                }
258
                }
259
                
260
                if (e.getSource() == dialog.getCrsMainPanel().getEsriPanel().getJTable().getSelectionModel()){
261
                        ListSelectionModel lsm = (ListSelectionModel)e.getSource();
262
                        String[] not_soported = {"Oblique_Cylindrical_Equal_Area"};
263
                        boolean soported = true;
264
                         if (lsm.isSelectionEmpty()) {
265
                                dialog.getCrsMainPanel().getEsriPanel().selectedRowTable = -1;
266
                                dialog.getCrsMainPanel().getEsriPanel().setCodeCRS(-1);
267
                                dialog.getCrsMainPanel().getJButtonAccept().setEnabled(false);                                
268
                                dialog.setCode(0);                
269
                                
270
                         } 
271
                         else {  
272
                                 
273
                                 dialog.getCrsMainPanel().getEsriPanel().selectedRowTable = lsm.getMinSelectionIndex();
274
                                 dialog.getCrsMainPanel().getEsriPanel().setCodeCRS(Integer.parseInt((String)dialog.getCrsMainPanel().getEsriPanel().sorter.getValueAt(dialog.getCrsMainPanel().getEsriPanel().selectedRowTable,0)));
275
                                 dialog.getCrsMainPanel().getEsriPanel().setWKT();
276
                                 CrsWkt crs = new CrsWkt(dialog.getCrsMainPanel().getEsriPanel().getWKT());
277
                                 String crs_kind = crs.getProjection();
278
                                 for (int i = 0; i < not_soported.length; i++) {
279
                                         if (crs_kind.equals(not_soported[i]))
280
                                        soported = false;                                         
281
                        }
282
                        if (soported){
283
                                dialog.setCode(dialog.getCrsMainPanel().getEsriPanel().getCodeCRS());
284
                                dialog.getCrsMainPanel().getJButtonAccept().setEnabled(true);        
285
                        }
286
                        else {
287
                                JOptionPane.showMessageDialog(dialog, PluginServices.getText(this,"crs_not_soported"), "Warning...",
288
                                                        JOptionPane.WARNING_MESSAGE);
289
                                dialog.getCrsMainPanel().getEsriPanel().setCodeCRS(-1);
290
                                dialog.getCrsMainPanel().getEsriPanel().setCodeCRS(0);
291
                                dialog.getCrsMainPanel().getJButtonAccept().setEnabled(false);                                
292
                        }                                                    
293
                     }
294
                }
295
        }
296
                
297
        /**
298
         * Controla los eventos relacionados con el doble click para
299
         * la selecci?n del CRS de la vista de las tablas del panel de
300
         * selecci?n de CRS
301
         */        
302
        public void mouseClicked(MouseEvent e) {
303
                // TODO Auto-generated method stub
304
                if (e.getSource() == dialog.getCrsMainPanel().getRecentsPanel().getJTable()){
305
                        if (e.getClickCount() == 2){
306
                                dialog.setLastProj(dialog.getProjection());
307
                                dialog.setDataSource(dialog.getCrsMainPanel().getDataSource());
308
                        if (dialog.getLastProj() != null){
309
                                /*
310
                                 * Actualizar recientes...
311
                                 */
312
                                String authority = ((ICrs)dialog.getLastProj()).getCrsWkt().getAuthority()[0];                                
313
                                String name = ((ICrs)dialog.getLastProj()).getCrsWkt().getName();
314
                                int code = ((ICrs)dialog.getLastProj()).getCode();
315
                                CrsData crsData = new CrsData(authority,code,name);
316
                                RecentCRSsPersistence persistence = new RecentCRSsPersistence(RecentCRSsPersistence.pluginClassInstance);
317
                                persistence.addCrsData(crsData);
318
                                
319
                                PluginServices.getMDIManager().closeWindow(dialog);
320
                                dialog.setOkPressed(true);
321
                                }
322
                        else dialog.setOkPressed(false);                        
323
                    }
324
                }
325
                
326
                if (e.getSource() == dialog.getCrsMainPanel().getEpsgPanel().getJTable()){
327
                        if (e.getClickCount() == 2){
328
                                dialog.setLastProj(dialog.getProjection());
329
                                dialog.setDataSource(dialog.getCrsMainPanel().getDataSource());
330
                        if (dialog.getLastProj() != null){
331
                                /*
332
                                 * Actualizar recientes...
333
                                 */
334
                                String authority = ((ICrs)dialog.getLastProj()).getCrsWkt().getAuthority()[0];                                
335
                                String name = ((ICrs)dialog.getLastProj()).getCrsWkt().getName();
336
                                int code = ((ICrs)dialog.getLastProj()).getCode();
337
                                CrsData crsData = new CrsData(authority,code,name);
338
                                RecentCRSsPersistence persistence = new RecentCRSsPersistence(RecentCRSsPersistence.pluginClassInstance);
339
                                persistence.addCrsData(crsData);
340
                                
341
                                PluginServices.getMDIManager().closeWindow(dialog);
342
                                dialog.setOkPressed(true);
343
                                }
344
                        else dialog.setOkPressed(false);                                
345
                    }
346
                }
347
                
348
                if (e.getSource() == dialog.getCrsMainPanel().getIauPanel().getJTable()){
349
                        if (e.getClickCount() == 2){
350
                                dialog.setLastProj(dialog.getProjection());
351
                                dialog.setDataSource(dialog.getCrsMainPanel().getDataSource());
352
                        if (dialog.getLastProj() != null){
353
                                /*
354
                                 * Actualizar recientes...
355
                                 */
356
                                String authority = ((ICrs)dialog.getLastProj()).getCrsWkt().getAuthority()[0];                                
357
                                String name = ((ICrs)dialog.getLastProj()).getCrsWkt().getName();
358
                                int code = ((ICrs)dialog.getLastProj()).getCode();
359
                                CrsData crsData = new CrsData(authority,code,name);
360
                                RecentCRSsPersistence persistence = new RecentCRSsPersistence(RecentCRSsPersistence.pluginClassInstance);
361
                                persistence.addCrsData(crsData);                                
362
                                
363
                                PluginServices.getMDIManager().closeWindow(dialog);
364
                                dialog.setOkPressed(true);
365
                                }
366
                        else dialog.setOkPressed(false);                                
367
                    }
368
                }
369
                
370
                if (e.getSource() == dialog.getCrsMainPanel().getEsriPanel().getJTable()){
371
                        if (e.getClickCount() == 2){
372
                                dialog.setLastProj(dialog.getProjection());
373
                                dialog.setDataSource(dialog.getCrsMainPanel().getDataSource());
374
                        if (dialog.getLastProj() != null){
375
                                /*
376
                                 * Actualizar recientes...
377
                                 */
378
                                String authority = ((ICrs)dialog.getLastProj()).getCrsWkt().getAuthority()[0];                                
379
                                String name = ((ICrs)dialog.getLastProj()).getCrsWkt().getName();
380
                                int code = ((ICrs)dialog.getLastProj()).getCode();
381
                                CrsData crsData = new CrsData(authority,code,name);
382
                                RecentCRSsPersistence persistence = new RecentCRSsPersistence(RecentCRSsPersistence.pluginClassInstance);
383
                                persistence.addCrsData(crsData);                                
384
                                
385
                                PluginServices.getMDIManager().closeWindow(dialog);
386
                                dialog.setOkPressed(true);
387
                                }
388
                        else dialog.setOkPressed(false);                                
389
                    }
390
                }
391
        }
392

    
393
        public void mouseEntered(MouseEvent e) {
394
                // TODO Auto-generated method stub
395
                
396
        }
397

    
398
        public void mouseExited(MouseEvent e) {
399
                // TODO Auto-generated method stub
400
                
401
        }
402

    
403
        public void mousePressed(MouseEvent e) {
404
                // TODO Auto-generated method stub
405
                
406
        }
407

    
408
        public void mouseReleased(MouseEvent e) {
409
                // TODO Auto-generated method stub
410
                
411
        }
412

    
413
}