Statistics
| Revision:

root / trunk / extensions / extJCRS / src / org / gvsig / crs / gui / CRSMainTrPanel.java @ 24986

History | View | Annotate | Download (16.7 KB)

1
/* gvSIG. Sistema de Informacin Geogrfica 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 Ibez, 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.crs.gui;
42

    
43
import java.awt.BorderLayout;
44
import java.awt.CardLayout;
45
import java.awt.Dimension;
46
import java.awt.FlowLayout;
47

    
48
import javax.swing.BorderFactory;
49
import javax.swing.JButton;
50
import javax.swing.JComboBox;
51
import javax.swing.JLabel;
52
import javax.swing.JPanel;
53
import javax.swing.ListSelectionModel;
54
import javax.swing.border.EmptyBorder;
55

    
56
import org.cresques.cts.IProjection;
57
import org.gvsig.crs.CrsException;
58
import org.gvsig.crs.CrsFactory;
59
import org.gvsig.crs.CrsWkt;
60
import org.gvsig.crs.ICrs;
61
import org.gvsig.crs.gui.listeners.CRSMainTrPanelListener;
62
import org.gvsig.crs.gui.panels.TransformationCapaPanel;
63
import org.gvsig.crs.gui.panels.TransformationEpsgPanel;
64
import org.gvsig.crs.gui.panels.TransformationManualPanel;
65
import org.gvsig.crs.gui.panels.TransformationNadgridsPanel;
66
import org.gvsig.crs.gui.panels.TransformationRecentsPanel;
67
import org.gvsig.crs.gui.panels.TransformationVistaPanel;
68

    
69
import com.iver.andami.PluginServices;
70
import com.iver.andami.ui.mdiManager.IWindow;
71
import com.iver.andami.ui.mdiManager.WindowInfo;
72

    
73
/**
74
 * Clase que genera el panel de transformacin, en el que se incluye la
75
 * eleccin del CRS de la capa, as como el de la posibilidad de poder
76
 * asignarle una transformacin.
77
 * 
78
 * @author Jos Luis Gmez Martnez (jolugomar@gmail.com)
79
 * @author Luisa Marina Fernandez (luisam.fernandez@uclm.es)
80
 *
81
 */
82

    
83
public class CRSMainTrPanel extends JPanel implements IWindow{
84

    
85
        private static final long serialVersionUID = 1L;
86
        
87
        /*
88
         * Para mostrar los parametros si tenemos seleccionada transformacion
89
         */
90
        boolean tra = false; 
91
        boolean inAnApplet = true;
92
        private boolean cancelYes = false;
93
        private JButton jButtonCancel = null;
94
        private JButton jButtonNext = null;
95
        private JButton jButtonAccept = null;
96
        private JButton jButtonBefore = null;
97
        private JPanel jPanelButtons = null;
98
        private JLabel jLabelTrans=null;
99
        
100
        boolean targetNad = false;        
101
        
102
        String crs_target = null;
103
        CrsWkt crsWkt_target = null;
104
                
105
        int transformation_code = 0;        
106
        
107
        //**private JPanel panel = null;
108
        CRSMainPanel viewPan = null;
109
        
110
        private JPanel jPanelMain = null;
111
        private TransformationManualPanel manualTrPanel = null;
112
        private boolean manual_tr = false;
113
        private TransformationEpsgPanel epsgTrPanel = null;
114
        private boolean epsg_tr = false;
115
        private TransformationNadgridsPanel nadsTrPanel = null;
116
        private boolean nads_tr = false;
117
        private TransformationRecentsPanel recentsTrPanel = null;
118
        private boolean recents_tr = false;
119
        private TransformationVistaPanel vistaTrPanel=null;
120
        private boolean vista_tr=false;
121
        private TransformationCapaPanel capaTrPanel=null;
122
        private boolean capa_tr=false;
123
        private boolean compuesta_tr=false;
124
        
125
        
126
        private boolean sin_tr = false;
127
        private JPanel jPanelCombo = null;
128
        private JComboBox jComboOptions = null;
129
        
130
        private IProjection crsfirst;
131
        
132
        private CRSMainPanel crsMainPanel;
133
        private String newSelection;
134
        String dataSource = "";
135
        ICrs curProj = null;
136
        
137
        public CRSMainTrPanel(int target, CrsWkt crsWkttarget, ICrs proj) {                        
138
                curProj = proj;
139
                crsMainPanel = new CRSMainPanel(target, curProj);                
140
                viewPan = crsMainPanel;
141
                
142
                crs_target = crsWkttarget.getAuthority()[0]+":"+crsWkttarget.getAuthority()[1];
143
                setCrsWkt_target(crsWkttarget);                        
144
                //Construir todos los paneles de transformaciones
145
                manualTrPanel = new TransformationManualPanel();
146
                epsgTrPanel = new TransformationEpsgPanel(crs_target);
147
                nadsTrPanel = new TransformationNadgridsPanel(true);
148
                recentsTrPanel = new TransformationRecentsPanel();
149
                capaTrPanel=new TransformationCapaPanel(crs_target, this);
150
                vistaTrPanel=new TransformationVistaPanel(crs_target, this);
151
                
152
                
153
                /*
154
                 * esta variable contendr tanto el panel utilizado en CRSViewPanel, como los paneles
155
                 * que seran necesarios para realizar las transformaciones
156
                 */
157
                jPanelMain = new JPanel();
158
                jPanelMain.setLayout(new CardLayout());                
159
                jPanelMain.add("primero", viewPanel());
160
                jPanelMain.add("manual", manualTrPanel);
161
                jPanelMain.add("epsg", epsgTrPanel);
162
                jPanelMain.add("nad", nadsTrPanel);
163
                jPanelMain.add("recents", recentsTrPanel);
164
                jPanelMain.add("vista",vistaTrPanel);
165
                jPanelMain.add("capa",capaTrPanel);
166
                
167
                this.setLayout(new BorderLayout());        
168
                this.add(jPanelMain, BorderLayout.CENTER);
169
                this.add(getButtons(), BorderLayout.SOUTH);
170
                
171
                setListeners();
172
                
173
                setDataSource(crsMainPanel.getDataSource());
174
                crsMainPanel.getCrsAndTransformationRecentsPanel().loadRecents(crsWkttarget, proj);
175
        }
176
        
177
        /**
178
         * Este mtodo cargar todo el panel utilizado en dicho panel el
179
         *  CRSViewPanel y el combobox de las transformaciones
180
         */
181
        private JPanel viewPanel(){
182
                JPanel integro = new JPanel();
183
                integro.setLayout(new BorderLayout());
184
                integro.setBorder(BorderFactory.createTitledBorder(PluginServices.getText(this,"crsAndTransformation")));
185
        
186
                integro.add(viewPan.capa(),BorderLayout.CENTER);
187
                //**integro.add(getJPanel(), null);
188
                integro.add(getCombopanel(),BorderLayout.SOUTH);
189
                return integro;
190
        }
191
        
192
        /**
193
         * Define el panel en el que se integran el label y el combobox 
194
         * de transformaciones
195
         */
196
        public JPanel getCombopanel(){
197
                if (jPanelCombo == null){
198
                        jPanelCombo = new JPanel();
199
                        jPanelCombo.setLayout(new FlowLayout(FlowLayout.LEFT,10,10));
200
                        jPanelCombo.add(getJLabelTrans());
201
                        jPanelCombo.add(getJComboOptions());
202
                }
203
                
204
                return jPanelCombo;
205
        }
206
        /**
207
         * Inicializa la etiqueta 'Seleccione Transformacion'
208
         * @return
209
         */
210
        private JLabel getJLabelTrans(){
211
                if (jLabelTrans==null){
212
                        jLabelTrans = new JLabel();
213
                        jLabelTrans.setPreferredSize(new Dimension(180, 25));
214
                        jLabelTrans.setText(PluginServices.getText(this, "seleccione_transformacion")+":");
215
                }
216
                return jLabelTrans;
217
        }
218
        /**
219
         * Inicializa el comboBox de Tansformaciones
220
         * @return
221
         */
222
        public JComboBox getJComboOptions(){
223
                if (jComboOptions == null){
224
                        String[] selection = {PluginServices.getText(this, "sin_transformacion"),
225
                                        PluginServices.getText(this, "recents_transformation"),
226
                                        PluginServices.getText(this, "transformacion_epsg"),
227
                                        PluginServices.getText(this, "transformacion_manual"),
228
                                        PluginServices.getText(this, "transformacion_compuesta"),
229
                                        PluginServices.getText(this, "nadgrids")}; 
230
                        jComboOptions = new JComboBox(selection);
231
                        jComboOptions.setPreferredSize(new Dimension(180,25));        
232
                        jComboOptions.setEnabled(false);
233
                        jComboOptions.setEditable(false);                        
234
                        jComboOptions.setSelectedIndex(0);
235
                        newSelection = (String) jComboOptions.getSelectedItem();                        
236
                }
237
                return jComboOptions;
238
        }
239
        /**
240
         * Agrega los botones: Aceptar, cancelar, siguiente y finalizar
241
         * @return
242
         */
243
        private JPanel getButtons() {
244
                if(jPanelButtons == null) {
245
                        jPanelButtons = new JPanel();
246
                        jPanelButtons.setLayout(new FlowLayout(FlowLayout.RIGHT,10,10));
247
                        jPanelButtons.add(getJButtonCancel());
248
                        jPanelButtons.add(getJButtonBefore());
249
                        jPanelButtons.add(getJButtonNext());
250
                        jPanelButtons.add(getJButtonAccept());
251
                }
252
                return jPanelButtons;
253
        }
254
        /**
255
         * Inicializa el botn 'Anterior'
256
         * @return
257
         */
258
        public JButton getJButtonBefore(){
259
                if(jButtonBefore == null) {
260
                        jButtonBefore = new JButton();
261
                        jButtonBefore.setText(PluginServices.getText(this,"anterior"));
262
                        jButtonBefore.setMnemonic('B');                        
263
                        jButtonBefore.setPreferredSize(new Dimension(100,25));                        
264
                        jButtonBefore.setEnabled(false);
265
                }
266
                return jButtonBefore;
267
        }
268
        /**
269
         * Inicializa el botn 'Finalizar'
270
         * @return
271
         */
272
        public JButton getJButtonAccept() {
273
                if(jButtonAccept == null) {
274
                        jButtonAccept = new JButton();
275
                        jButtonAccept.setText(PluginServices.getText(this,"finalizar"));
276
                        jButtonAccept.setMnemonic('O');
277
                        jButtonAccept.setVisible(true);
278
                        jButtonAccept.setEnabled(false);
279
                        jButtonAccept.setPreferredSize(new Dimension(100,25));
280
                }
281
                return jButtonAccept;
282
        }
283
        /**
284
         * Inicializa el botn 'Siguiente'
285
         * @return
286
         */
287
        public JButton getJButtonNext() {
288
                if(jButtonNext == null) {
289
                        jButtonNext = new JButton();
290
                        jButtonNext.setText(PluginServices.getText(this,"siguiente"));
291
                        jButtonNext.setMnemonic('S');
292
                        jButtonNext.setVisible(true);
293
                        jButtonNext.setPreferredSize(new Dimension(100,25));
294
                }
295
                return jButtonNext;
296
        }
297
        /**
298
         * Inicializa el botn 'Cancelar'
299
         * @return
300
         */
301
        public JButton getJButtonCancel() {
302
                if(jButtonCancel == null) {
303
                        jButtonCancel = new JButton();
304
                        jButtonCancel.setText(PluginServices.getText(this,"cancel"));
305
                        jButtonCancel.setMnemonic('C');
306
                        jButtonCancel.setPreferredSize(new Dimension(100,25));
307
                }
308
                return jButtonCancel;
309
        }
310
        
311
        public void setTargetNad(boolean tarNad){
312
                targetNad = tarNad;
313
        }
314
        
315
        public boolean getTargetNad(){
316
                return targetNad;
317
        }
318
        
319
        /*
320
         * revisar esta solucion
321
         */
322
        public ICrs getProjection() {
323
                if (sin_tr) {
324
                        ICrs crs;
325
                        try {
326
                                if (getDataSource().equals(PluginServices.getText(this,"EPSG"))){
327
                                        //crs = new CrsFactory().getCRS(crsMainPanel.getEpsgPanel().getCodeCRS(),crsMainPanel.getEpsgPanel().getWKT());
328
                                        crs = new CrsFactory().getCRS("EPSG:"+crsMainPanel.getEpsgPanel().getCodeCRS());
329
                                }
330
                                else if (getDataSource().equals(PluginServices.getText(this,"IAU2000"))){
331
                                        //crs = new CrsFactory().getCRS(crsMainPanel.getIauPanel().getCodeCRS(),crsMainPanel.getIauPanel().getWKT());
332
                                        crs = new CrsFactory().getCRS("IAU2000:"+crsMainPanel.getIauPanel().getCodeCRS());
333
                                } 
334
                                else if (getDataSource().equals(PluginServices.getText(this,"recientes"))){
335
                                        //crs = new CrsFactory().getCRS(crsMainPanel.getRecentsPanel().getCodeCRS(),crsMainPanel.getRecentsPanel().getCrs().getWKT());
336
                                        crs = new CrsFactory().getCRS(crsMainPanel.getCrsAndTransformationRecentsPanel().getAuthority());
337
                                } 
338
                                else if (getDataSource().equals(PluginServices.getText(this,"ESRI"))){
339
                                        //crs = new CrsFactory().getCRS(crsMainPanel.getEsriPanel().getCodeCRS(),crsMainPanel.getEsriPanel().getWKT());
340
                                        crs = new CrsFactory().getCRS("ESRI:"+crsMainPanel.getEsriPanel().getCodeCRS());
341
                                } 
342
                                else if (getDataSource().equals(PluginServices.getText(this,"newCRS"))){
343
                                        crs = new CrsFactory().getCRS("USR:"+crsMainPanel.getNewCrsPanel().getCodeCRS());
344
                                }
345
                                else {
346
                                        sin_tr = false;
347
                                        return null;
348
                                }
349
                                sin_tr = false;
350
                                return crs;
351
                        } catch (CrsException e) {
352
                                e.printStackTrace();
353
                        }
354
                        return null;
355
                }                
356
                return (ICrs) crsfirst;                
357
        }
358
        
359
        public void setProjection(IProjection proj) {
360
                crsfirst = proj;
361
        }
362
        
363
        /**
364
         * Mtodo para aplicarle los eventos necesarios en el panel actual. La
365
         * definicin de estos listeners estarn en la clase CRSMainTrPanelListener
366
         *
367
         */
368
        private void setListeners(){
369

    
370
                CRSMainTrPanelListener listener = new CRSMainTrPanelListener(this);
371
                
372
                jButtonAccept.addActionListener(listener);
373
                jButtonBefore.addActionListener(listener);
374
                jButtonCancel.addActionListener(listener);
375
                jButtonNext.addActionListener(listener);
376
                crsMainPanel.getJComboOptions().addItemListener(listener);
377
                getJComboOptions().addActionListener(listener);
378
                getRecentsTrPanel().getJButtonInfo().addActionListener(listener);
379
                
380
                ListSelectionModel rowSM = crsMainPanel.getEpsgPanel().getJTable().getSelectionModel();
381
                rowSM.addListSelectionListener(listener);
382
                
383
                ListSelectionModel rowSMiau = crsMainPanel.getIauPanel().getJTable().getSelectionModel();
384
                rowSMiau.addListSelectionListener(listener);
385
                
386
                ListSelectionModel rowSMrecents = crsMainPanel.getCrsAndTransformationRecentsPanel().getJTable().getSelectionModel();
387
                rowSMrecents.addListSelectionListener(listener);
388
                
389
                ListSelectionModel rowSMesri = crsMainPanel.getEsriPanel().getJTable().getSelectionModel();
390
                rowSMesri.addListSelectionListener(listener);
391
                
392
                ListSelectionModel rowSMusr = crsMainPanel.getNewCrsPanel().getJTable().getSelectionModel();
393
                rowSMusr.addListSelectionListener(listener);
394
                
395
                crsMainPanel.getEsriPanel().getJTable().addMouseListener(listener);
396
                crsMainPanel.getEpsgPanel().getJTable().addMouseListener(listener);
397
        crsMainPanel.getCrsAndTransformationRecentsPanel().getJTable().addMouseListener(listener);
398
        crsMainPanel.getIauPanel().getJTable().addMouseListener(listener);
399
        crsMainPanel.getNewCrsPanel().getJTable().addMouseListener(listener);
400
        getEpsgTrPanel().getJTable().addMouseListener(listener);
401
        getRecentsTrPanel().getJTable().addMouseListener(listener);
402
        
403
        ListSelectionModel rowSMEpsgTr = getEpsgTrPanel().getJTable().getSelectionModel();
404
                rowSMEpsgTr.addListSelectionListener(listener);
405
                
406
                ListSelectionModel rowSMRecentsTr = getRecentsTrPanel().getJTable().getSelectionModel();
407
                rowSMRecentsTr.addListSelectionListener(listener);
408
                
409
                getNadsTrPanel().getJComboNadFile().addItemListener(listener);
410
                
411
                getManualTrPanel().getTx_Translation().addKeyListener(listener);
412
                getManualTrPanel().getTy_Translation().addKeyListener(listener);
413
                getManualTrPanel().getTz_Translation().addKeyListener(listener);
414
                getManualTrPanel().getTx_Rotation().addKeyListener(listener);
415
                getManualTrPanel().getTy_Rotation().addKeyListener(listener);
416
                getManualTrPanel().getTz_Rotation().addKeyListener(listener);
417
                getManualTrPanel().getTscale().addKeyListener(listener);
418
        }
419
                
420
        public void setDataSource(String sour){
421
                dataSource = sour;
422
        }
423
        
424
        public String getDataSource(){
425
                return crsMainPanel.getDataSource();
426
        }
427
        
428
        public WindowInfo getWindowInfo() {
429
                WindowInfo m_viewinfo=new WindowInfo(WindowInfo.MODALDIALOG);
430
                   m_viewinfo.setTitle(PluginServices.getText(this,"crsview"));
431
                return m_viewinfo;
432
        }
433

    
434
        public CRSMainPanel getCrsMainPanel() {
435
                return crsMainPanel;
436
        }
437

    
438
        public TransformationEpsgPanel getEpsgTrPanel() {
439
                return epsgTrPanel;
440
        }
441

    
442
        public TransformationManualPanel getManualTrPanel() {
443
                return manualTrPanel;
444
        }
445

    
446
        public TransformationNadgridsPanel getNadsTrPanel() {
447
                return nadsTrPanel;
448
        }
449
        
450
        public TransformationRecentsPanel getRecentsTrPanel() {
451
                return recentsTrPanel;
452
        }
453

    
454
        public boolean isEpsg_tr() {
455
                return epsg_tr;
456
        }
457

    
458
        public boolean isManual_tr() {
459
                return manual_tr;
460
        }
461

    
462
        public boolean isNads_tr() {
463
                return nads_tr;
464
        }
465
        
466
        public boolean isRecents_tr() {
467
                return recents_tr;
468
        }
469

    
470
        public boolean isSin_tr() {
471
                return sin_tr;
472
        }
473

    
474
        public void setEpsg_tr(boolean epsg_tr) {
475
                this.epsg_tr = epsg_tr;
476
        }
477

    
478
        public void setManual_tr(boolean manual_tr) {
479
                this.manual_tr = manual_tr;
480
        }
481

    
482
        public void setNads_tr(boolean nads_tr) {
483
                this.nads_tr = nads_tr;
484
        }
485
        
486
        public void setRecents_tr(boolean recents_tr) {
487
                this.recents_tr = recents_tr;
488
        }
489

    
490
        public void setSin_tr(boolean sin_tr) {
491
                this.sin_tr = sin_tr;
492
        }
493

    
494
        public boolean isCancelYes() {
495
                return cancelYes;
496
        }
497

    
498
        public void setCancelYes(boolean cancelYes) {
499
                this.cancelYes = cancelYes;
500
        }
501

    
502
        public IProjection getCrsfirst() {
503
                return crsfirst;
504
        }
505

    
506
        public JPanel getJPanelMain() {
507
                return jPanelMain;
508
        }
509

    
510
        public String getNewSelection() {
511
                return newSelection;
512
        }
513

    
514
        public void setNewSelection(String newSelection) {
515
                this.newSelection = newSelection;
516
        }
517
        
518
        public CrsWkt getCrsWkt_target() {
519
                return crsWkt_target;
520
        }
521
        
522
        public void setCrsWkt_target(CrsWkt crsWkt_target) {
523
                this.crsWkt_target = crsWkt_target;
524
        }
525

    
526
        public TransformationVistaPanel getVistaTrPanel() {
527
                return vistaTrPanel;
528
        }
529

    
530
        public TransformationCapaPanel getCapaTrPanel() {
531
                return capaTrPanel;
532
        }
533

    
534
        public boolean isVista_tr() {
535
                return vista_tr;
536
        }
537

    
538
        public boolean isCapa_tr() {
539
                return capa_tr;
540
        }
541

    
542
        public boolean isCompuesta_tr() {
543
                return compuesta_tr;
544
        }
545

    
546
        public void setCapa_tr(boolean capa_tr) {
547
                this.capa_tr = capa_tr;
548
        }
549

    
550
        public void setCompuesta_tr(boolean compuesta_tr) {
551
                this.compuesta_tr = compuesta_tr;
552
        }
553

    
554
        public void setVista_tr(boolean vista_tr) {
555
                this.vista_tr = vista_tr;
556
        }
557

    
558
        public Object getWindowProfile() {
559
                return WindowInfo.DIALOG_PROFILE;
560
        }
561
        /*public EpsgConnection getConnection() {
562
                return connection;
563
        }
564

565
        public void setConnection(EpsgConnection connect) {
566
                this.connection = connect;
567
        }*/
568
}