Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libJCRS / src / org / gvsig / crs / ui / CrsView.java @ 7020

History | View | Annotate | Download (12.4 KB)

1
package org.gvsig.crs.ui;
2

    
3
import java.awt.Dimension;
4
import java.awt.FlowLayout;
5
import java.awt.GridLayout;
6
import java.awt.event.ActionEvent;
7
import java.sql.ResultSet;
8
import java.sql.SQLException;
9

    
10
import javax.swing.BorderFactory;
11
import javax.swing.JButton;
12
import javax.swing.JPanel;
13
import javax.swing.JRadioButton;
14
import javax.swing.ListSelectionModel;
15
import javax.swing.event.ListSelectionEvent;
16
import javax.swing.event.ListSelectionListener;
17

    
18
import org.cresques.cts.IProjection;
19
import org.gvsig.crs.EpsgConnection;
20
import org.gvsig.crs.ICrs;
21
import org.gvsig.crs.Query;
22

    
23
import com.iver.andami.PluginServices;
24
import com.iver.andami.ui.mdiManager.IWindow;
25
import com.iver.andami.ui.mdiManager.WindowInfo;
26
import com.iver.cit.gvsig.gui.panels.ProjChooserPanel;
27
import com.iver.cit.gvsig.gui.panels.ProjChooserPanelTransformation;
28

    
29
public class CrsView extends JPanel implements IWindow, ListSelectionListener{
30

    
31
        private static final long serialVersionUID = 1L;
32
        
33
        EpsgConnection connect;
34
        
35
        private IProjection crsfirst;
36
        private String params = "+towgs84=";
37
        
38
        boolean tra = false; //para que si tenemos seleccionada transformacion nos muestre los parametros
39
        
40
        ProjChooserPanelTransformation pcpt;
41
        ProjChooserPanel pcp;
42
        
43
        private JButton cancel = null;
44
        public static JButton next = null;
45
        public static JButton accept = null;
46
        private JPanel jPanelButton = null;
47
        
48
        int crs_target = -1;
49
        private CRSSelectionPanel CRSPanel;
50
        String datum_target = "";
51
        
52
        int transformation_code = 0;
53
        private CRSSelectionPanel contentPane = null;
54
        private JPanel buttonPane = null;
55
        public JRadioButton withOutTrans = null;
56
        public JRadioButton nadgrids = null;
57
        public JRadioButton epsgTrans = null;
58
        public JRadioButton manualTrans = null;
59

    
60
        public CrsView(int target, String datum) {
61
                super();
62
                crs_target = target;
63
                datum_target = datum;
64
                pcp = new ProjChooserPanel();
65
                initialize();
66
        }
67
        private void initialize() { 
68
                CRSPanel = (CRSSelectionPanel)getContentPanel();
69
                ListSelectionModel rowSM = CRSPanel.getJTable().getSelectionModel();
70
                rowSM.addListSelectionListener(this);
71
                this.add(getContentPanel(),null);
72
                getJPanel();                
73
        }
74
         
75
        private void getJPanel() {
76
                this.add(getCheckButtonPane(), null);                
77
                this.add(getButtons(), null);                                
78
        }
79
        
80
        public CRSSelectionPanel getContentPanel() {
81
            if (contentPane == null) {
82
                contentPane = new CRSSelectionPanel();
83
                contentPane.setLayout(new GridLayout(3,3));
84
                contentPane.setLayout(new FlowLayout(FlowLayout.LEFT,10,10));
85
                    contentPane.setPreferredSize(new Dimension(650,370));
86
                
87
       }
88
      return contentPane;
89
    }
90
        
91
        private JPanel getCheckButtonPane() {
92
                if(buttonPane == null) {
93
                        buttonPane = new JPanel();
94
                        buttonPane.setPreferredSize(new Dimension(400,100));
95
                        buttonPane.setLayout(new GridLayout(0,2));
96
                        buttonPane.setLayout(new FlowLayout(FlowLayout.LEFT,10,10));
97
                        buttonPane.setBorder(
98
                                    BorderFactory.createCompoundBorder(
99
                                        BorderFactory.createCompoundBorder(
100
                                                        BorderFactory.createTitledBorder("Seleccione Transformacion"),
101
                                                        BorderFactory.createEmptyBorder(2,2,2,2)),
102
                                                        buttonPane.getBorder()));
103
                        buttonPane.add(getWithOutTrans(), null);
104
                        buttonPane.add(getNadgrids(), null);
105
                        buttonPane.add(getEpsgTrans(), null);
106
                        buttonPane.add(getManualTrans(), null);
107
                }
108
                return buttonPane;
109
        }
110
        
111
        private JRadioButton getWithOutTrans() {
112
                if(withOutTrans == null) {
113
                        withOutTrans = new JRadioButton();
114
                        withOutTrans.setText("Sin transformacion");
115
                        withOutTrans.setSelected(true);
116
                        withOutTrans.setEnabled(false);
117
                        withOutTrans.setPreferredSize(new Dimension(175,20));
118
                        withOutTrans.addActionListener(new java.awt.event.ActionListener() { 
119
                                public void actionPerformed(java.awt.event.ActionEvent e) {    
120
                                        withOutTrans_actionPerformed(e);                                        
121
                                }
122
                        });
123
                }
124
                return withOutTrans;
125
        }
126
        
127
        private void withOutTrans_actionPerformed(ActionEvent e) { 
128
                 if(!withOutTrans.isSelected())
129
                  withOutTrans.setSelected(true);
130
                 epsgTrans.setSelected(false);
131
                manualTrans.setSelected(false);
132
                nadgrids.setSelected(false);
133
        }
134
        
135
        private JRadioButton getNadgrids() {
136
                if(nadgrids == null) {
137
                        nadgrids = new JRadioButton();
138
                        nadgrids.setText("+nadgrids");
139
                        nadgrids.setSelected(false);
140
                        nadgrids.setEnabled(false);
141
                        nadgrids.setPreferredSize(new Dimension(175,20));
142
                        nadgrids.addActionListener(new java.awt.event.ActionListener() { 
143
                                public void actionPerformed(java.awt.event.ActionEvent e) {    
144
                                        nadgrids_actionPerformed(e);                                        
145
                                }
146
                        });
147
                }
148
                return nadgrids;
149
        }
150
        
151
        private void nadgrids_actionPerformed(ActionEvent e) {
152
        
153
                if(!nadgrids.isSelected())
154
                        nadgrids.setSelected(true);
155
                withOutTrans.setSelected(false);
156
                epsgTrans.setSelected(false);
157
                manualTrans.setSelected(false);
158
         }
159
        
160
        private JRadioButton getEpsgTrans() {
161
                if(epsgTrans == null) {
162
                        epsgTrans = new JRadioButton();
163
                        epsgTrans.setText("Transformacion epsg");
164
                        epsgTrans.setSelected(false);
165
                        epsgTrans.setEnabled(false);
166
                        epsgTrans.setPreferredSize(new Dimension(175,20));
167
                        epsgTrans.addActionListener(new java.awt.event.ActionListener() { 
168
                                public void actionPerformed(java.awt.event.ActionEvent e) {    
169
                                        epsgTrans_actionPerformed(e);                                        
170
                                }
171
                        });
172
                }
173
                return epsgTrans;
174
        }
175
        
176
        private void epsgTrans_actionPerformed(ActionEvent e) {
177
                if(!epsgTrans.isSelected())
178
                        epsgTrans.setSelected(true);
179
                nadgrids.setSelected(false);
180
                withOutTrans.setSelected(false);
181
                manualTrans.setSelected(false);
182
        }
183
        
184
        private JRadioButton getManualTrans() {
185
                if(manualTrans == null) {
186
                        manualTrans = new JRadioButton();
187
                        manualTrans.setText("Transformacion manual");
188
                        manualTrans.setSelected(false);
189
                        manualTrans.setEnabled(false);
190
                        manualTrans.setPreferredSize(new Dimension(175,20));
191
                        manualTrans.addActionListener(new java.awt.event.ActionListener() { 
192
                                public void actionPerformed(java.awt.event.ActionEvent e) {    
193
                                        manualTrans_actionPerformed(e);                                        
194
                                }
195
                        });
196
                }
197
                return manualTrans;
198
        }
199

    
200
        private void manualTrans_actionPerformed(ActionEvent e) {
201
                if(!manualTrans.isSelected())
202
                        manualTrans.setSelected(true);
203
                nadgrids.setSelected(false);
204
                epsgTrans.setSelected(false);
205
                withOutTrans.setSelected(false);
206
        }
207
        
208
        
209
        private JPanel getButtons() {
210
                if(jPanelButton == null) {
211
                        jPanelButton = new JPanel();
212
                        jPanelButton.setPreferredSize(new Dimension(650,50));
213
                        jPanelButton.setLayout(new GridLayout(0,1));
214
                        jPanelButton.setLayout(new FlowLayout(FlowLayout.RIGHT,5,5));
215
                        jPanelButton.add(getCancel(), null);
216
                        jPanelButton.add(getNext(), null);
217
                        jPanelButton.add(getAccept(), null);
218
                }
219
                return jPanelButton;
220
        }
221
        
222
        private JButton getAccept() {
223
                if(accept == null) {
224
                        accept = new JButton();
225
                        accept.setText("Ok");
226
                        accept.setMnemonic('O');
227
                        accept.setPreferredSize(new Dimension(100,25));
228
                        accept.addActionListener(new java.awt.event.ActionListener() { 
229
                                public void actionPerformed(java.awt.event.ActionEvent e) {    
230
                                        accept_actionPerformed(e);                                        
231
                                }
232
                        });
233
                }
234
                return accept;
235
        }
236
        
237
        private void accept_actionPerformed(ActionEvent e) {
238
                PluginServices.getMDIManager().closeWindow(this);
239
        }
240
        
241
        
242
        private JButton getNext() {
243
                if(next == null) {
244
                        next = new JButton();
245
                        next.setText("Siguiente");
246
                        next.setMnemonic('S');
247
                        next.setPreferredSize(new Dimension(100,25));
248
                        next.addActionListener(new java.awt.event.ActionListener() { 
249
                                public void actionPerformed(java.awt.event.ActionEvent e) {    
250
                                        next_actionPerformed(e);                                        
251
                                }
252
                        });
253
                }
254
                return next;
255
        }
256
        
257
        private void next_actionPerformed(ActionEvent e) {
258
                if(epsgTrans.isSelected() == true && contentPane.getCodeCRS() != -1){
259
                        //PluginServices.getMDIManager().closeWindow(this);
260
                        TransformationEpsgPanel tr = new TransformationEpsgPanel(contentPane.getWKT(),contentPane.getCodeCRS(),
261
                                        crs_target);
262
                        tr.setSize(new Dimension(550, 400));
263
                        tr.setLayout(new GridLayout(2,2));
264
                        tr.setLayout(new FlowLayout(FlowLayout.LEFT,5,20));
265
                        PluginServices.getMDIManager().addWindow(tr);
266
                        setProjection(tr.getProjection());
267
                        
268
                }else if(nadgrids.isSelected() == true && contentPane.getCodeCRS() != -1) {
269
                        //PluginServices.getMDIManager().closeWindow(this);
270
                        TransformationNadgridsPanel tn = new TransformationNadgridsPanel(contentPane.getWKT(),contentPane.getCodeCRS());
271
                        tn.setSize(new Dimension(550, 275));
272
                        tn.setLayout(new GridLayout(2,2));
273
                        tn.setLayout(new FlowLayout(FlowLayout.LEFT,5,10));
274
                        PluginServices.getMDIManager().addWindow(tn);
275
                        setProjection(tn.getProjection());
276
                }else if(manualTrans.isSelected() == true && contentPane.getCodeCRS() != -1) {
277
                        //PluginServices.getMDIManager().closeWindow(this);
278
                        TransformationManualPanel tm = new TransformationManualPanel(contentPane.getWKT(),contentPane.getCodeCRS());
279
                        tm.setSize(new Dimension(550, 400));
280
                        tm.setLayout(new GridLayout(2,2));
281
                        tm.setLayout(new FlowLayout(FlowLayout.LEFT,5,10));
282
                        PluginServices.getMDIManager().addWindow(tm);
283
                }/*else if(withOutTrans.isSelected() == true && contentPane.getCodeCRS() != -1) {
284
                        PluginServices.getMDIManager().closeWindow(this);
285
                        WithoutTranformation wt = new WithoutTranformation(contentPane.getWKT(),contentPane.getCodeCRS());
286
                        wt.setSize(new Dimension(550, 200));
287
                        wt.setLayout(new GridLayout(2,2));
288
                        wt.setLayout(new FlowLayout(FlowLayout.LEFT,5,10));
289
                        PluginServices.getMDIManager().addWindow(wt);                        
290
                }*/
291
        }
292
        
293
        
294
        private JButton getCancel() {
295
                if(cancel == null) {
296
                        cancel = new JButton();
297
                        cancel.setText("Cancelar");
298
                        cancel.setMnemonic('C');
299
                        cancel.setPreferredSize(new Dimension(100,25));
300
                        cancel.addActionListener(new java.awt.event.ActionListener() { 
301
                                public void actionPerformed(java.awt.event.ActionEvent e) {    
302
                                        cancel_actionPerformed(e);                                        
303
                                }
304
                        });
305
                }
306
                return cancel;
307
        }
308
        
309
        private void cancel_actionPerformed(ActionEvent e) {
310
                PluginServices.getMDIManager().closeWindow(this);
311
        }
312
        
313
        public ICrs getProjection() {
314
                return (ICrs)crsfirst;
315
        }
316
        
317
        public void setProjection(IProjection proj) {
318
                crsfirst = proj;
319
        }
320
                
321
        public void valueChanged(ListSelectionEvent e) {
322
                ListSelectionModel lsm = (ListSelectionModel)e.getSource();
323
        if (lsm.isSelectionEmpty()) {
324
                CRSPanel.selectedRowTable = -1;
325
                CRSPanel.setCodeCRS(-1);   
326
                withOutTrans.setEnabled(false);
327
                        nadgrids.setEnabled(false);
328
                        epsgTrans.setEnabled(false);
329
                        manualTrans.setEnabled(false);
330
                        next.setVisible(false);
331
                        accept.setVisible(true);
332
        } 
333
        else {
334
                CRSPanel.selectedRowTable = lsm.getMinSelectionIndex();
335
                CRSPanel.setCodeCRS(Integer.parseInt((String)CRSPanel.dtm.getValueAt(CRSPanel.selectedRowTable,0)));
336
                CRSPanel.setWKT();
337
                
338
                int base = contentPane.getCodeCRS();
339
                        String datum = "";
340
                        int datum_code = -1;
341
                        String sentence = "SELECT source_geogcrs_code " +
342
                                                        "FROM epsg_coordinatereferencesystem " +
343
                                                        "WHERE coord_ref_sys_code = "+ base ;
344
                        ResultSet result = Query.select(sentence,pcp.connect.getConnection());
345
                        int source = 0;
346
                        try {
347
                                result.next();
348
                                source = result.getInt("source_geogcrs_code");
349
                        } catch (SQLException e1) {
350
                                e1.printStackTrace();
351
                        }                                
352
                    
353
                    if (source != 0){
354
                                    base = source;                                    
355
                    }
356
                    
357
                    sentence = "SELECT datum_code " +
358
                                "FROM epsg_coordinatereferencesystem " +
359
                                "WHERE coord_ref_sys_code = "+ base ;
360
                    result = Query.select(sentence,pcp.connect.getConnection());
361
                    
362
                    try {
363
                                result.next();
364
                                datum_code = result.getInt("datum_code");
365
                        } catch (SQLException e1) {
366
                                e1.printStackTrace();
367
                        }        
368
                        
369
                        sentence = "SELECT datum_name " +
370
                                                "FROM epsg_datum " +
371
                                                "WHERE datum_code = "+ datum_code ;
372
                    result = Query.select(sentence,pcp.connect.getConnection());
373
                    
374
                    try {
375
                                result.next();
376
                                datum = result.getString("datum_name");
377
                        } catch (SQLException e1) {
378
                                e1.printStackTrace();
379
                        }        
380
                            
381
                        if (!(datum_target.equals(datum.replaceAll(" ","")))){                                
382
                                withOutTrans.setEnabled(true);
383
                                nadgrids.setEnabled(true);
384
                                epsgTrans.setEnabled(true);
385
                                manualTrans.setEnabled(true);
386
                                next.setVisible(true);
387
                                accept.setVisible(false);                                 
388
                        }
389
                        else {                                
390
                                withOutTrans.setEnabled(false);
391
                                nadgrids.setEnabled(false);
392
                                epsgTrans.setEnabled(false);
393
                                manualTrans.setEnabled(false);
394
                                next.setVisible(false);
395
                                accept.setVisible(true);
396
                        }
397
        }
398
        CRSPanel.getInfoCrs().setEnabled(true);
399
        
400
                
401
        }
402
        public WindowInfo getWindowInfo() {
403
                WindowInfo m_viewinfo=new WindowInfo(WindowInfo.MODALDIALOG);
404
                   m_viewinfo.setTitle(PluginServices.getText(this,"CrsView"));
405
                return m_viewinfo;
406
        }
407
}