Statistics
| Revision:

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

History | View | Annotate | Download (16.6 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.ListSelectionEvent;
55
import javax.swing.event.ListSelectionListener;
56

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

    
63
import com.iver.andami.PluginServices;
64

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

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

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

    
117
        }
118

    
119

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

    
162
        /**
163
         * Maneja el evento de cambio de valor de las tablas existentes
164
         * en cada uno de los distintos repositorios para la selecci?n
165
         * del CRS de la vista.
166
         */
167
        public void valueChanged(ListSelectionEvent e) {
168
                if (e.getSource() == dialog.getCrsMainPanel().getRecentsPanel().getJTable().getSelectionModel()){
169
                        ListSelectionModel lsm = (ListSelectionModel)e.getSource();
170
                        
171
                if (lsm.isSelectionEmpty()) {
172
                        dialog.getCrsMainPanel().getRecentsPanel().selectedRowTable = -1;
173
                        dialog.getCrsMainPanel().getRecentsPanel().setCodeCRS(-1);
174
                        dialog.getCrsMainPanel().getJButtonAccept().setEnabled(false);                                
175
                        dialog.setCode(0);                        
176
                } 
177
                else {                
178
                        dialog.getCrsMainPanel().getRecentsPanel().initCrs();                                                        
179
                        dialog.setCode(dialog.getCrsMainPanel().getRecentsPanel().getCodeCRS());
180
                    dialog.getCrsMainPanel().getJButtonAccept().setEnabled(true);
181
                }
182
                }
183
                
184
                if (e.getSource() == dialog.getCrsMainPanel().getIauPanel().getJTable().getSelectionModel()){
185
                        ListSelectionModel lsm = (ListSelectionModel)e.getSource();
186
                        String[] not_soported = {"Oblique_Cylindrical_Equal_Area"};
187
                        boolean soported = true;
188
                         if (lsm.isSelectionEmpty()) {
189
                                dialog.getCrsMainPanel().getIauPanel().selectedRowTable = -1;
190
                                dialog.getCrsMainPanel().getIauPanel().setCodeCRS(-1);
191
                                dialog.getCrsMainPanel().getJButtonAccept().setEnabled(false);                                
192
                                dialog.setCode(0);                
193
                                
194
                         } 
195
                         else {  
196
                                 
197
                                 dialog.getCrsMainPanel().getIauPanel().selectedRowTable = lsm.getMinSelectionIndex();
198
                                 dialog.getCrsMainPanel().getIauPanel().setCodeCRS(Integer.parseInt((String)dialog.getCrsMainPanel().getIauPanel().sorter.getValueAt(dialog.getCrsMainPanel().getIauPanel().selectedRowTable,0)));
199
                                 dialog.getCrsMainPanel().getIauPanel().setWKT();
200
                                 CrsWkt crs = new CrsWkt(dialog.getCrsMainPanel().getIauPanel().getWKT());
201
                                 String crs_kind = crs.getProjection();
202
                                 for (int i = 0; i < not_soported.length; i++) {
203
                                         if (crs_kind.equals(not_soported[i]))
204
                                        soported = false;                                         
205
                        }
206
                        if (soported){
207
                                dialog.setCode(dialog.getCrsMainPanel().getIauPanel().getCodeCRS());
208
                                dialog.getCrsMainPanel().getJButtonAccept().setEnabled(true);        
209
                        }
210
                        else {
211
                                JOptionPane.showMessageDialog(dialog, PluginServices.getText(this,"crs_not_soported"), "Warning...",
212
                                                        JOptionPane.WARNING_MESSAGE);
213
                                dialog.getCrsMainPanel().getIauPanel().setCodeCRS(-1);
214
                                dialog.getCrsMainPanel().getIauPanel().setCodeCRS(0);
215
                                dialog.getCrsMainPanel().getJButtonAccept().setEnabled(false);                                
216
                        }                                                    
217
                     }
218
                }
219
                
220
                if (e.getSource() == dialog.getCrsMainPanel().getEpsgPanel().getJTable().getSelectionModel()){
221
                        String[] not_soported = {"engineering", "vertical", "compound", "geocentric"};
222
                        boolean soported = true;
223
                        ListSelectionModel lsm = (ListSelectionModel)e.getSource();
224
                                                                
225
                if (lsm.isSelectionEmpty()) {
226
                        dialog.getCrsMainPanel().getEpsgPanel().selectedRowTable = -1;
227
                        dialog.getCrsMainPanel().getEpsgPanel().setCodeCRS(-1);
228
                        dialog.getCrsMainPanel().getJButtonAccept().setEnabled(false);                
229
                        dialog.getCrsMainPanel().getEpsgPanel().getInfoCrs().setEnabled(false);
230
                        dialog.setCode(0);                             
231
                } 
232
                else {                        
233
                        dialog.getCrsMainPanel().getEpsgPanel().selectedRowTable = lsm.getMinSelectionIndex();
234
                        String crs_kind = (String)dialog.getCrsMainPanel().getEpsgPanel().sorter.getValueAt(dialog.getCrsMainPanel().getEpsgPanel().selectedRowTable,2);                        
235
                        for (int i = 0; i < not_soported.length; i++) {
236
                                if (crs_kind.equals(not_soported[i]))
237
                                        soported = false;                                
238
                        }
239
                        if (soported){
240
                                dialog.getCrsMainPanel().getEpsgPanel().setCodeCRS(Integer.parseInt((String)dialog.getCrsMainPanel().getEpsgPanel().sorter.getValueAt(dialog.getCrsMainPanel().getEpsgPanel().selectedRowTable,0)));
241
                            dialog.getCrsMainPanel().getEpsgPanel().setWKT();
242
                            dialog.setCode(dialog.getCrsMainPanel().getEpsgPanel().epsg_code);
243
                            dialog.getCrsMainPanel().getJButtonAccept().setEnabled(true);
244
                            dialog.getCrsMainPanel().getEpsgPanel().getInfoCrs().setEnabled(true);
245
                            
246
                        }
247
                        else {
248
                                JOptionPane.showMessageDialog(dialog, PluginServices.getText(this,"crs_not_soported"), "Warning...",
249
                                                        JOptionPane.WARNING_MESSAGE);
250
                                dialog.getCrsMainPanel().getEpsgPanel().setCodeCRS(-1);
251
                                dialog.setCode(0);
252
                                dialog.getCrsMainPanel().getJButtonAccept().setEnabled(false);
253
                                dialog.getCrsMainPanel().getEpsgPanel().getInfoCrs().setEnabled(false);
254
                        }                        
255
                }
256
                }
257
                
258
                if (e.getSource() == dialog.getCrsMainPanel().getEsriPanel().getJTable().getSelectionModel()){
259
                        ListSelectionModel lsm = (ListSelectionModel)e.getSource();
260
                        String[] not_soported = {"Oblique_Cylindrical_Equal_Area"};
261
                        boolean soported = true;
262
                         if (lsm.isSelectionEmpty()) {
263
                                dialog.getCrsMainPanel().getEsriPanel().selectedRowTable = -1;
264
                                dialog.getCrsMainPanel().getEsriPanel().setCodeCRS(-1);
265
                                dialog.getCrsMainPanel().getJButtonAccept().setEnabled(false);                                
266
                                dialog.setCode(0);                
267
                                
268
                         } 
269
                         else {  
270
                                 
271
                                 dialog.getCrsMainPanel().getEsriPanel().selectedRowTable = lsm.getMinSelectionIndex();
272
                                 dialog.getCrsMainPanel().getEsriPanel().setCodeCRS(Integer.parseInt((String)dialog.getCrsMainPanel().getEsriPanel().sorter.getValueAt(dialog.getCrsMainPanel().getEsriPanel().selectedRowTable,0)));
273
                                 dialog.getCrsMainPanel().getEsriPanel().setWKT();
274
                                 CrsWkt crs = new CrsWkt(dialog.getCrsMainPanel().getEsriPanel().getWKT());
275
                                 String crs_kind = crs.getProjection();
276
                                 for (int i = 0; i < not_soported.length; i++) {
277
                                         if (crs_kind.equals(not_soported[i]))
278
                                        soported = false;                                         
279
                        }
280
                        if (soported){
281
                                dialog.setCode(dialog.getCrsMainPanel().getEsriPanel().getCodeCRS());
282
                                dialog.getCrsMainPanel().getJButtonAccept().setEnabled(true);        
283
                        }
284
                        else {
285
                                JOptionPane.showMessageDialog(dialog, PluginServices.getText(this,"crs_not_soported"), "Warning...",
286
                                                        JOptionPane.WARNING_MESSAGE);
287
                                dialog.getCrsMainPanel().getEsriPanel().setCodeCRS(-1);
288
                                dialog.getCrsMainPanel().getEsriPanel().setCodeCRS(0);
289
                                dialog.getCrsMainPanel().getJButtonAccept().setEnabled(false);                                
290
                        }                                                    
291
                     }
292
                }
293
        }
294
                
295
        /**
296
         * Controla los eventos relacionados con el doble click para
297
         * la selecci?n del CRS de la vista de las tablas del panel de
298
         * selecci?n de CRS
299
         */        
300
        public void mouseClicked(MouseEvent e) {
301

    
302
                if (e.getSource() == dialog.getCrsMainPanel().getRecentsPanel().getJTable()){
303
                        if (e.getClickCount() == 2){
304
                                dialog.setLastProj(dialog.getProjection());
305
                                dialog.setDataSource(dialog.getCrsMainPanel().getDataSource());
306
                        if (dialog.getLastProj() != null){
307
                                /*
308
                                 * Actualizar recientes...
309
                                 */
310
                                String authority = ((ICrs)dialog.getLastProj()).getCrsWkt().getAuthority()[0];                                
311
                                String name = ((ICrs)dialog.getLastProj()).getCrsWkt().getName();
312
                                int code = ((ICrs)dialog.getLastProj()).getCode();
313
                                CrsData crsData = new CrsData(authority,code,name);
314
                                RecentCRSsPersistence persistence = new RecentCRSsPersistence(RecentCRSsPersistence.pluginClassInstance);
315
                                persistence.addCrsData(crsData);
316
                                
317
                                PluginServices.getMDIManager().closeWindow(dialog);
318
                                dialog.setOkPressed(true);
319
                                }
320
                        else dialog.setOkPressed(false);                        
321
                    }
322
                }
323
                
324
                if (e.getSource() == dialog.getCrsMainPanel().getEpsgPanel().getJTable()){
325
                        if (e.getClickCount() == 2){
326
                                dialog.setLastProj(dialog.getProjection());
327
                                dialog.setDataSource(dialog.getCrsMainPanel().getDataSource());
328
                        if (dialog.getLastProj() != null){
329
                                /*
330
                                 * Actualizar recientes...
331
                                 */
332
                                String authority = ((ICrs)dialog.getLastProj()).getCrsWkt().getAuthority()[0];                                
333
                                String name = ((ICrs)dialog.getLastProj()).getCrsWkt().getName();
334
                                int code = ((ICrs)dialog.getLastProj()).getCode();
335
                                CrsData crsData = new CrsData(authority,code,name);
336
                                RecentCRSsPersistence persistence = new RecentCRSsPersistence(RecentCRSsPersistence.pluginClassInstance);
337
                                persistence.addCrsData(crsData);
338
                                
339
                                PluginServices.getMDIManager().closeWindow(dialog);
340
                                dialog.setOkPressed(true);
341
                                }
342
                        else dialog.setOkPressed(false);                                
343
                    }
344
                }
345
                
346
                if (e.getSource() == dialog.getCrsMainPanel().getIauPanel().getJTable()){
347
                        if (e.getClickCount() == 2){
348
                                dialog.setLastProj(dialog.getProjection());
349
                                dialog.setDataSource(dialog.getCrsMainPanel().getDataSource());
350
                        if (dialog.getLastProj() != null){
351
                                /*
352
                                 * Actualizar recientes...
353
                                 */
354
                                String authority = ((ICrs)dialog.getLastProj()).getCrsWkt().getAuthority()[0];                                
355
                                String name = ((ICrs)dialog.getLastProj()).getCrsWkt().getName();
356
                                int code = ((ICrs)dialog.getLastProj()).getCode();
357
                                CrsData crsData = new CrsData(authority,code,name);
358
                                RecentCRSsPersistence persistence = new RecentCRSsPersistence(RecentCRSsPersistence.pluginClassInstance);
359
                                persistence.addCrsData(crsData);                                
360
                                
361
                                PluginServices.getMDIManager().closeWindow(dialog);
362
                                dialog.setOkPressed(true);
363
                                }
364
                        else dialog.setOkPressed(false);                                
365
                    }
366
                }
367
                
368
                if (e.getSource() == dialog.getCrsMainPanel().getEsriPanel().getJTable()){
369
                        if (e.getClickCount() == 2){
370
                                dialog.setLastProj(dialog.getProjection());
371
                                dialog.setDataSource(dialog.getCrsMainPanel().getDataSource());
372
                        if (dialog.getLastProj() != null){
373
                                /*
374
                                 * Actualizar recientes...
375
                                 */
376
                                String authority = ((ICrs)dialog.getLastProj()).getCrsWkt().getAuthority()[0];                                
377
                                String name = ((ICrs)dialog.getLastProj()).getCrsWkt().getName();
378
                                int code = ((ICrs)dialog.getLastProj()).getCode();
379
                                CrsData crsData = new CrsData(authority,code,name);
380
                                RecentCRSsPersistence persistence = new RecentCRSsPersistence(RecentCRSsPersistence.pluginClassInstance);
381
                                persistence.addCrsData(crsData);                                
382
                                
383
                                PluginServices.getMDIManager().closeWindow(dialog);
384
                                dialog.setOkPressed(true);
385
                                }
386
                        else dialog.setOkPressed(false);                                
387
                    }
388
                }
389
        }
390

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

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

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

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

    
411
}