Statistics
| Revision:

root / trunk / libraries / libJCRS / src / org / gvsig / crs / gui / panels / TransformationNadgridsPanel.java @ 8127

History | View | Annotate | Download (8.34 KB)

1
package org.gvsig.crs.gui.panels;
2

    
3

    
4
import java.awt.Component;
5
import java.awt.Dimension;
6
import java.awt.FlowLayout;
7
import java.awt.GridLayout;
8
import java.awt.event.ActionEvent;
9
import java.awt.event.ActionListener;
10
import java.io.File;
11

    
12
import javax.swing.BorderFactory;
13
import javax.swing.JButton;
14
import javax.swing.JFileChooser;
15
import javax.swing.JLabel;
16
import javax.swing.JPanel;
17
import javax.swing.JRadioButton;
18
import javax.swing.JScrollPane;
19
import javax.swing.JTextArea;
20
import javax.swing.JTextField;
21
import javax.swing.filechooser.FileFilter;
22

    
23
import org.cresques.cts.IProjection;
24
import org.cresques.ui.DefaultDialogPanel;
25
import org.gvsig.crs.CrsException;
26
import org.gvsig.crs.CrsFactory;
27
import org.gvsig.crs.ICrs;
28

    
29
import com.iver.andami.PluginServices;
30
import com.iver.andami.ui.mdiManager.IWindow;
31
import com.iver.andami.ui.mdiManager.WindowInfo;
32

    
33
public class TransformationNadgridsPanel extends DefaultDialogPanel implements IWindow, ActionListener {
34
        
35
        private static final long serialVersionUID = 1L;
36
        
37
        private JPanel groupRadioButton = null;
38
        private JLabel chooserLabel = null;
39
        private JRadioButton sourceRadioButton = null;
40
        private JRadioButton targetRadioButton = null;
41
        
42
        private IProjection firstProj;
43
        private String nad = null;
44
                
45
        private String cadWKT = "";
46
        private int codeEpsg;
47
        
48
        private JPanel jPaneOpen;
49
        private JLabel open_gsb;
50
        private JTextField jTextOpen;
51
        private JFileChooser openChooser;
52
        private JButton jButtonOpen;
53
        File f = new File("C:/Archivos de programa/FWTools1.0.0a7/proj_lib");
54
        
55
        private JPanel panel;
56
        private JLabel wkt;
57
        private JTextArea info;
58
        private JScrollPane areaScrollPane;
59
        boolean targetNad = false;
60

    
61
        public TransformationNadgridsPanel() {
62
                nad = "+nadgrids=sped2et.gsb";
63
        }
64
                
65
        public JPanel getJPanel(){
66
                if (panel == null) {
67
                        panel = new JPanel();
68
                        panel.setLayout(new GridLayout(1,4));
69
                        panel.setLayout(new FlowLayout(FlowLayout.LEADING,5,10));
70
                        panel.setPreferredSize(new Dimension(525, 110));
71
                        panel.setBorder(
72
                                    BorderFactory.createCompoundBorder(
73
                                                        BorderFactory.createCompoundBorder(
74
                                                                        BorderFactory.createTitledBorder("+nadgrids"),
75
                                                                        BorderFactory.createEmptyBorder(2,2,2,2)),
76
                                                                        panel.getBorder()));
77
                        panel.add(getLabel());
78
                        panel.add(getScrollPanelArea());
79
                        panel.add(getOpenPanel());
80
                        panel.add(getJLabel());
81
                        panel.add(getGroupRadioButton());
82
                }
83
                return panel;
84
        }
85
        
86
        private JPanel getGroupRadioButton() {
87
                if (groupRadioButton == null) {
88
                        groupRadioButton = new JPanel();
89
                        groupRadioButton.setLayout(new GridLayout(1,0));
90
                        groupRadioButton.setPreferredSize(new Dimension(400,30));                        
91
                        groupRadioButton.add(getNadgridsSource());
92
                        groupRadioButton.add(getNadgridsTarget());                        
93
                }
94
                return groupRadioButton;
95
        }
96
        
97
        private JRadioButton getNadgridsSource() {
98
                if (sourceRadioButton == null) {
99
                        sourceRadioButton = new JRadioButton();
100
                        sourceRadioButton.setText(PluginServices.getText(this,"Aplicar a fuente"));//setText("By Code EPSG");
101
                        sourceRadioButton.setSelected(true);
102
                        sourceRadioButton.addActionListener(this);
103
                }
104
                return sourceRadioButton;
105
        }
106
        
107
        
108
        private JRadioButton getNadgridsTarget() {                
109
                if (targetRadioButton == null) {
110
                        targetRadioButton = new JRadioButton();
111
                        targetRadioButton.setText(PluginServices.getText(this,"Aplicar a destino"));//setText("By Code EPSG");
112
                        targetRadioButton.setSelected(false);
113
                        targetRadioButton.addActionListener(this);
114
                }
115
                return targetRadioButton;
116
        }        
117
        
118
        private JLabel getJLabel(){
119
                chooserLabel = new JLabel();
120
                chooserLabel.setPreferredSize(new Dimension(400, 20));
121
                chooserLabel.setText(PluginServices.getText(this, "Seleccione donde quiere aplicar Nadgrids: "));
122
                return chooserLabel;
123
        }
124
        
125
        private JScrollPane getScrollPanelArea() {
126
                if(areaScrollPane == null) {
127
                        areaScrollPane = new JScrollPane(getInfo());
128
                        areaScrollPane.setVerticalScrollBarPolicy(
129
                                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
130
                        areaScrollPane.setPreferredSize(new Dimension(420, 100));
131
                        areaScrollPane.setBorder(
132
                            BorderFactory.createCompoundBorder(
133
                                BorderFactory.createCompoundBorder(
134
                                                BorderFactory.createTitledBorder("Wkt"),
135
                                                BorderFactory.createEmptyBorder(2,2,2,2)),
136
                                areaScrollPane.getBorder()));
137
                }
138
                return areaScrollPane;
139
        }
140

    
141
        private Component getLabel() {
142
                if (wkt == null){
143
                        wkt = new JLabel();
144
                        wkt.setPreferredSize(new Dimension(90, 80));
145
                        wkt.setText(PluginServices.getText(this,"Cadena WKT: "));
146
                }                
147
                return wkt;
148
        }
149
        
150
        private Component getInfo() {
151
                if (info == null){
152
                        info = new JTextArea();
153
                        info.setLineWrap(true);
154
                        info.setWrapStyleWord(true);
155
                        info.setPreferredSize(new Dimension(400, 100));
156
                        info.setEditable(false);
157
                        info.setText(getWKT());
158
                }
159
                info.setText(getWKT());
160
                return info;
161
        }
162
                
163
        private JPanel getOpenPanel() {
164
                if(jPaneOpen == null) {
165
                        jPaneOpen = new JPanel();
166
                        jPaneOpen.setPreferredSize(new Dimension(525,50));
167
                        jPaneOpen.setLayout(new GridLayout(2,2));
168
                        jPaneOpen.setLayout(new FlowLayout(FlowLayout.LEFT,5,5));
169
                        jPaneOpen.add(getOpenGsb(), null);
170
                        jPaneOpen.add(getOpenTextField(), null);
171
                        jPaneOpen.add(getButtonOpen(), null);                        
172
                }
173
                return jPaneOpen;
174
        }
175
        
176
        private JLabel getOpenGsb() {
177
                if(open_gsb == null) {
178
                        open_gsb = new JLabel();
179
                        open_gsb.setPreferredSize(new Dimension(80,20));
180
                        open_gsb.setText(PluginServices.getText(this,"Abrir .gsb:"));
181
                }
182
                return open_gsb;
183
        }
184
        
185
        private JTextField getOpenTextField() {
186
                if(jTextOpen == null) {
187
                        jTextOpen = new JTextField();
188
                        jTextOpen.setPreferredSize(new Dimension(200,20));
189
                        jTextOpen.setText("");
190
                }
191
                return jTextOpen;
192
        }
193
        
194
        private JFileChooser getOpen(){
195
                if(openChooser == null){
196
                        openChooser = new JFileChooser();                        
197
                        openChooser.setEnabled(false);
198
                        openChooser.addChoosableFileFilter(new FiltroNadgrids());
199
                }
200
                return openChooser;
201
        }
202

    
203
        private JButton getButtonOpen() {
204
                if(jButtonOpen == null) {
205
                        jButtonOpen = new JButton();
206
                        jButtonOpen.setText("");
207
                        jButtonOpen.setPreferredSize(new Dimension(20,20));
208
                        jButtonOpen.addActionListener(this);
209
                }
210
                return jButtonOpen;
211
        }
212
        
213
        public ICrs getProjection() {
214
                ICrs crs;
215
                if (sourceRadioButton.isSelected()){
216
                        try {
217
                                setNad(false);
218
                                crs = new CrsFactory().getCRS(getCode(),
219
                                                getWKT(),nad);
220
                                return crs;
221
                        } catch (org.gvsig.crs.CrsException e) {
222
                                e.printStackTrace();
223
                        }
224
                        return null;
225
                }
226
                else {        
227
                        setNad(true);
228
                        try {
229
                                crs = new CrsFactory().getCRS(getCode(),
230
                                                getWKT());
231
                                crs.setNadTarget(nad);
232
                                
233
                                return crs;
234
                        } catch (CrsException e) {                                
235
                                e.printStackTrace();
236
                        }
237
                        return null;
238
                }                
239
        }
240
        
241
        public void setProjection(IProjection proj) {
242
                firstProj = proj;
243
        }
244
        
245
        public void setNad(boolean nadg){
246
                targetNad = nadg;                
247
        }
248
        
249
        public boolean getNad(){
250
                return targetNad;                
251
        }
252
        
253
        public void setCode(int cod){
254
                codeEpsg = cod;
255
        }
256
        
257
        public int getCode(){
258
                return codeEpsg;
259
        }
260
        
261
        public void setWKT(String cad){
262
                cadWKT = cad;
263
                getInfo();
264
        }
265
        
266
        public String getWKT(){
267
                return cadWKT;
268
        }
269

    
270
        public WindowInfo getWindowInfo() {
271
                WindowInfo m_viewinfo=new WindowInfo(WindowInfo.MODALDIALOG);
272
                   m_viewinfo.setTitle(PluginServices.getText(this,"Nadgrids"));
273
                return m_viewinfo;
274
        }
275

    
276
        public void actionPerformed(ActionEvent e) {
277
                // TODO Auto-generated method stub
278
                if (e.getSource() == this.getNadgridsSource()){
279
                        sourceRadioButton.setSelected(true);
280
                        targetRadioButton.setSelected(false);
281
                }
282
                
283
                if (e.getSource() == this.getNadgridsTarget()){
284
                        targetRadioButton.setSelected(true);
285
                        sourceRadioButton.setSelected(false);
286
                }
287
                
288
                if (e.getSource() == this.getButtonOpen()){
289
                        jPaneOpen.add(getOpen(), null);
290
                        openChooser.setCurrentDirectory(f);
291
                        int returnVal = openChooser.showOpenDialog(TransformationNadgridsPanel.this);
292
                if (returnVal == JFileChooser.APPROVE_OPTION) {
293
                    File file = openChooser.getSelectedFile();
294
                    jTextOpen.setText(file.getAbsolutePath());
295
                }
296
                }
297
        }
298
}
299

    
300
class FiltroNadgrids extends FileFilter {
301

    
302
         final static String gsb = "gsb";
303
        
304
        public boolean accept(File f) {
305
                if (f.isDirectory()) {
306
           return true;
307
       }
308

    
309
       String s = f.getName();
310
       int i = s.lastIndexOf('.');
311

    
312
       if (i > 0 &&  i < s.length() - 1) {
313
           String extension = s.substring(i+1).toLowerCase();
314
           if (gsb.equals(extension)){
315
                   return true;
316
           } else {
317
               return false;
318
           }
319
       }
320

    
321
       return false;
322
        }
323

    
324
        public String getDescription() {
325
                 return "Archivos .gsb";
326
        }
327

    
328
}