Statistics
| Revision:

root / trunk / libraries / libJCRS / src / org / gvsig / crs / gui / panels / TransformationManualPanel.java @ 8304

History | View | Annotate | Download (14.2 KB)

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

    
3

    
4
import java.awt.BorderLayout;
5
import java.awt.Component;
6
import java.awt.Dimension;
7
import java.awt.FlowLayout;
8
import java.awt.Font;
9
import java.awt.GridLayout;
10
import java.awt.event.ActionEvent;
11
import java.awt.event.KeyEvent;
12
import java.awt.event.KeyListener;
13

    
14
import javax.swing.BorderFactory;
15
import javax.swing.JButton;
16
import javax.swing.JLabel;
17
import javax.swing.JOptionPane;
18
import javax.swing.JPanel;
19
import javax.swing.JScrollPane;
20
import javax.swing.JTextArea;
21
import javax.swing.JTextField;
22

    
23
import org.cresques.ui.DefaultDialogPanel;
24
import org.gvsig.crs.CrsFactory;
25
import org.gvsig.crs.ICrs;
26

    
27
import com.iver.andami.PluginServices;
28
import com.iver.andami.ui.mdiManager.IWindow;
29
import com.iver.andami.ui.mdiManager.WindowInfo;
30

    
31
public class TransformationManualPanel extends JPanel implements KeyListener{
32
        
33
        private static final long serialVersionUID = 1L;
34
        
35
        private static boolean pressed = true;
36
        
37
        private JLabel x_Translation;
38
        private JLabel y_Translation;
39
        private JLabel z_Translation;
40
        private JLabel x_Rotation;
41
        private JLabel y_Rotation;
42
        private JLabel z_Rotation;
43
        private JLabel scale;
44
        
45
        private JTextField tx_Translation;
46
        private JTextField ty_Translation;
47
        private JTextField tz_Translation;
48
        private JTextField tx_Rotation;
49
        private JTextField ty_Rotation;
50
        private JTextField tz_Rotation;
51
        private JTextField tScale;
52
        
53
        private JLabel wkt;
54
        private JTextArea info;
55
        private JScrollPane areaScrollPane;
56
        int codeEpsg;
57
        
58
        private JPanel panel;
59
        
60
        private String cadWKT = "";        
61
        
62
        public TransformationManualPanel() {                
63
                init();        
64
        }
65
        
66
        private void init() {
67
                this.add(getJPanel(), null);                
68
                
69
        }
70
        
71
        public JPanel getJPanel(){
72
                if (panel == null) {
73
                        panel = new JPanel();
74
                        panel.setLayout(new GridLayout(0,4));
75
                        panel.setLayout(new FlowLayout(FlowLayout.LEFT,10,20));
76
                        panel.setBorder(
77
                                    BorderFactory.createCompoundBorder(
78
                                                        BorderFactory.createCompoundBorder(
79
                                                                        BorderFactory.createTitledBorder("Transformaci?n Manual"),
80
                                                                        BorderFactory.createEmptyBorder(2,2,2,2)),
81
                                                                        panel.getBorder()));
82
                        panel.setPreferredSize(new Dimension(525,400));
83
                        panel.add(getLabel());
84
                        panel.add(getScrollPanelArea(), BorderLayout.NORTH);
85
                        panel.add(getX_Translation(),null);
86
                        panel.add(getTx_Translation(),null);
87
                        panel.add(getX_Rotation(),null);
88
                        panel.add(getTx_Rotation(),null);
89
                        panel.add(getY_Translation(),null);
90
                        panel.add(getTy_Translation(),null);
91
                        panel.add(getY_Rotation(),null);
92
                        panel.add(getTy_Rotation(),null);
93
                        panel.add(getZ_Translation(),null);
94
                        panel.add(getTz_Translation(),null);
95
                        panel.add(getZ_Rotation(),null);
96
                        panel.add(getTz_Rotation(),null);
97
                        panel.add(getScale(),null);
98
                        panel.add(getTscale(),null);
99
                        //panel.add(getJPanelParams(), null);
100
                        //panel.add(getButtonPane(), null);
101
                }
102
                return panel;
103
        }
104
        
105

    
106
        private JLabel getX_Translation() {
107
                if(x_Translation == null ) {
108
                        x_Translation = new JLabel();
109
                        x_Translation.setPreferredSize(new Dimension(120,20));
110
                        //x_Translation.setFont(new Font("x_Translation:",Font.BOLD,15));
111
                        x_Translation.setText(PluginServices.getText(this,"x_Translation:"));
112
                        
113
                }
114
                return x_Translation;
115
        }
116
        
117
        private JLabel getY_Translation() {
118
                if(y_Translation == null ) {
119
                        y_Translation = new JLabel();
120
                        y_Translation.setPreferredSize(new Dimension(120,20));
121
                        //y_Translation.setFont(new Font("y_Translation:",Font.BOLD,15));
122
                        y_Translation.setText(PluginServices.getText(this,"y_Translation:"));
123
                        
124
                }
125
                return y_Translation;
126
        }
127
        
128
        private JLabel getZ_Translation() {
129
                if(z_Translation == null ) {
130
                        z_Translation = new JLabel();
131
                        z_Translation.setPreferredSize(new Dimension(120,20));
132
                        //z_Translation.setFont(new Font("z_Translation:",Font.BOLD,15));
133
                        z_Translation.setText(PluginServices.getText(this,"z_Translation:"));
134
                        
135
                }
136
                return z_Translation;
137
        }
138
        
139
        private JLabel getX_Rotation() {
140
                if(x_Rotation == null ) {
141
                        x_Rotation = new JLabel();
142
                        x_Rotation.setPreferredSize(new Dimension(120,20));
143
                        //x_Rotation.setFont(new Font("x_Rotation:",Font.BOLD,15));
144
                        x_Rotation.setText(PluginServices.getText(this,"x_Rotation:"));
145
                        
146
                }
147
                return x_Rotation;
148
        }
149
        
150
        private JLabel getY_Rotation() {
151
                if(y_Rotation == null ) {
152
                        y_Rotation = new JLabel();
153
                        y_Rotation.setPreferredSize(new Dimension(120,20));
154
                        //y_Rotation.setFont(new Font("x_Rotation:",Font.BOLD,15));
155
                        y_Rotation.setText(PluginServices.getText(this,"y_Rotation:"));
156
                        
157
                }
158
                return y_Rotation;
159
        }
160
        
161
        private JLabel getZ_Rotation() {
162
                if(z_Rotation == null ) {
163
                        z_Rotation = new JLabel();
164
                        z_Rotation.setPreferredSize(new Dimension(120,20));
165
                        //z_Rotation.setFont(new Font("x_Translation:",Font.BOLD,15));
166
                        z_Rotation.setText(PluginServices.getText(this,"z_Rotation:"));
167
                        
168
                }
169
                return z_Rotation;
170
        }
171
        
172
        private JLabel getScale() {
173
                if(scale == null ) {
174
                        scale = new JLabel();
175
                        scale.setPreferredSize(new Dimension(120,20));
176
                        //scale.setFont(new Font("scale:",Font.BOLD,15));
177
                        scale.setText(PluginServices.getText(this,"scale:"));
178
                        
179
                }
180
                return scale;
181
        }
182
        
183
        private JTextField getTx_Translation() {
184
                if(tx_Translation == null ) {
185
                        tx_Translation = new JTextField();
186
                        tx_Translation.setPreferredSize(new Dimension(120,20));
187
                        //tx_Translation.setFont(new Font("",Font.ITALIC,10));
188
                        tx_Translation.setText("0");
189
                        tx_Translation.setEditable(true);
190
                        tx_Translation.addKeyListener(this);
191
                }
192
                return tx_Translation;
193
        }
194
        
195
        private JTextField getTy_Translation() {
196
                if(ty_Translation == null ) {
197
                        ty_Translation = new JTextField();
198
                        ty_Translation.setPreferredSize(new Dimension(120,20));
199
                        //ty_Translation.setFont(new Font("",Font.ITALIC,10));
200
                        ty_Translation.setText("0");
201
                        ty_Translation.setEditable(true);
202
                        ty_Translation.addKeyListener(this);
203
                }
204
                return ty_Translation;
205
        }
206
        
207
        private JTextField getTz_Translation() {
208
                if(tz_Translation == null ) {
209
                        tz_Translation = new JTextField();
210
                        tz_Translation.setPreferredSize(new Dimension(120,20));
211
                        //tz_Translation.setFont(new Font("",Font.ITALIC,10));
212
                        tz_Translation.setText("0");
213
                        tz_Translation.setEditable(true);
214
                        tz_Translation.addKeyListener(this);
215
                }
216
                return tz_Translation;
217
        }
218
        
219
        private JTextField getTx_Rotation() {
220
                if(tx_Rotation == null ) {
221
                        tx_Rotation = new JTextField();
222
                        tx_Rotation.setPreferredSize(new Dimension(120,20));
223
                        //tx_Rotation.setFont(new Font("",Font.ITALIC,10));
224
                        tx_Rotation.setText("0");
225
                        tx_Rotation.setEditable(true);
226
                        tx_Rotation.addKeyListener(this);
227
                }
228
                return tx_Rotation;
229
        }
230
        
231
        private JTextField getTy_Rotation() {
232
                if(ty_Rotation == null ) {
233
                        ty_Rotation = new JTextField();
234
                        ty_Rotation.setPreferredSize(new Dimension(120,20));
235
                        //ty_Rotation.setFont(new Font("",Font.ITALIC,10));
236
                        ty_Rotation.setText("0");
237
                        ty_Rotation.setEditable(true);
238
                        ty_Rotation.addKeyListener(this);
239
                }
240
                return ty_Rotation;
241
        }
242
        
243
        private JTextField getTz_Rotation() {
244
                if(tz_Rotation == null ) {
245
                        tz_Rotation = new JTextField();
246
                        tz_Rotation.setPreferredSize(new Dimension(120,20));
247
                        //tz_Rotation.setFont(new Font("",Font.ITALIC,10));
248
                        tz_Rotation.setText("0");
249
                        tz_Rotation.setEditable(true);
250
                        tz_Rotation.addKeyListener(this);
251
                }
252
                return tz_Rotation;
253
        }
254
        
255
        private JTextField getTscale() {
256
                if(tScale == null ) {
257
                        tScale = new JTextField();
258
                        tScale.setPreferredSize(new Dimension(120,20));
259
                        //tScale.setFont(new Font("",Font.ITALIC,10));
260
                        tScale.setText("0");
261
                        tScale.setEditable(true);
262
                        tScale.addKeyListener(this);
263
                }
264
                return tScale;
265
        }
266
                
267
        private JScrollPane getScrollPanelArea() {
268
                if(areaScrollPane == null) {
269
                        areaScrollPane = new JScrollPane(getInfo());
270
                        areaScrollPane.setVerticalScrollBarPolicy(
271
                                        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
272
                        areaScrollPane.setPreferredSize(new Dimension(420, 100));
273
                        areaScrollPane.setBorder(
274
                            BorderFactory.createCompoundBorder(
275
                                BorderFactory.createCompoundBorder(
276
                                                BorderFactory.createTitledBorder("Wkt"),
277
                                                BorderFactory.createEmptyBorder(2,2,2,2)),
278
                                areaScrollPane.getBorder()));
279
                }
280
                return areaScrollPane;
281
        }
282

    
283
        private Component getLabel() {
284
                if (wkt == null){
285
                        wkt = new JLabel();
286
                        wkt.setPreferredSize(new Dimension(90, 80));
287
                        wkt.setText("Cadena WKT: ");
288
                }                
289
                return wkt;
290
        }
291
        
292
        private Component getInfo() {
293
                if (info == null){
294
                        info = new JTextArea();
295
                        info.setLineWrap(true);
296
                        info.setWrapStyleWord(true);
297
                        info.setPreferredSize(new Dimension(400, 240));
298
                        info.setEditable(false);
299
                        info.setText(getWKT());
300
                }
301
                info.setText(getWKT());
302
                return info;
303
        }
304
        
305
        public ICrs getProjection() {
306
                if(tx_Translation.getText().equals("")){
307
                        tx_Translation.setText("0");
308
                }
309
                else if (ty_Translation.getText().equals("")){
310
                        ty_Translation.setText("0");
311
                }
312
                else if (tz_Translation.getText().equals("")){
313
                        tz_Translation.setText("0");
314
                }
315
                else if (tx_Rotation.getText().equals("")){
316
                        tx_Rotation.setText("0");
317
                }
318
                else if (ty_Rotation.getText().equals("")){
319
                        ty_Rotation.setText("0");
320
                }
321
                else if (tz_Rotation.getText().equals("")){
322
                        tz_Rotation.setText("0");
323
                }
324
                else if (tScale.getText().equals("")){
325
                        tScale.setText("0");
326
                }                
327
                String param = tx_Translation.getText()+","+
328
                                           ty_Translation.getText()+","+
329
                                           tz_Translation.getText()+","+
330
                                           tx_Rotation.getText()+","+
331
                                           ty_Rotation.getText()+","+
332
                                           tz_Rotation.getText()+","+
333
                                           tScale.getText() + " ";
334
                
335
                try {
336
                        ICrs crs = new CrsFactory().getCRS(getCode(),
337
                                        getWKT(),param);
338
                        return crs;
339
                } catch (org.gvsig.crs.CrsException e) {
340
                        e.printStackTrace();
341
                }
342
                return null;
343
        }
344
        
345
        public void setCode(int cod){
346
                codeEpsg = cod;
347
        }
348
        
349
        public int getCode(){
350
                return codeEpsg;
351
        }
352
        
353
        public void setWKT(String cad){
354
                cadWKT = cad;
355
                getInfo();
356
        }
357
        
358
        public String getWKT(){
359
                return cadWKT;
360
        }
361
                
362
        public static boolean isPressed() { return pressed; }
363
        
364
        public void keyPressed(KeyEvent e) {
365
                // TODO Auto-generated method stub
366
                if (e.getSource() == this.getTx_Translation()) {
367
                        if (e.getKeyCode() == 46 || (e.getKeyCode() >= 48 && e.getKeyCode() <= 57) || e.getKeyCode() >= 96 && e.getKeyCode() <= 105 || 
368
                                        (e.getKeyCode() >= 0 && e.getKeyCode()<= 31) || e.getKeyCode() == 127){                                                
369
                        }
370
                        else {
371
                                JOptionPane.showMessageDialog(TransformationManualPanel.this, 
372
                                                "Only number format.", 
373
                                                "Warning...", JOptionPane.WARNING_MESSAGE);
374
                                String aux = tx_Translation.getText();
375
                                if (aux.length() == 1 || aux.length() == 0){
376
                                        tx_Translation.setText("");
377
                                }
378
                                else {
379
                                        tx_Translation.setText(aux.substring(0, aux.length()-1));
380
                                }
381
                        }
382
                }
383
                
384
                if (e.getSource() == this.getTx_Rotation()) {
385
                        if (e.getKeyCode() == 46 || (e.getKeyCode() >= 48 && e.getKeyCode() <= 57) || e.getKeyCode() >= 96 && e.getKeyCode() <= 105 || 
386
                                        (e.getKeyCode() >= 0 && e.getKeyCode()<= 31) || e.getKeyCode() == 127){                                                
387
                        }
388
                        else {
389
                                JOptionPane.showMessageDialog(TransformationManualPanel.this, 
390
                                                "Only number format.", 
391
                                                "Warning...", JOptionPane.WARNING_MESSAGE);
392
                                String aux = tx_Rotation.getText();
393
                                if (aux.length() == 1 || aux.length() == 0){
394
                                        tx_Rotation.setText("");
395
                                }
396
                                else {
397
                                        tx_Rotation.setText(aux.substring(0, aux.length()-1));
398
                                }
399
                        }
400
                }
401
                
402
                if (e.getSource() == this.getTy_Translation()) {
403
                        if (e.getKeyCode() == 46 || (e.getKeyCode() >= 48 && e.getKeyCode() <= 57) || e.getKeyCode() >= 96 && e.getKeyCode() <= 105 || 
404
                                        (e.getKeyCode() >= 0 && e.getKeyCode()<= 31) || e.getKeyCode() == 127){                                                
405
                        }
406
                        else {
407
                                JOptionPane.showMessageDialog(TransformationManualPanel.this, 
408
                                                "Only number format.", 
409
                                                "Warning...", JOptionPane.WARNING_MESSAGE);
410
                                String aux = ty_Translation.getText();
411
                                if (aux.length() == 1 || aux.length() == 0){
412
                                        ty_Translation.setText("");
413
                                }
414
                                else {
415
                                        ty_Translation.setText(aux.substring(0, aux.length()-1));
416
                                }
417
                        }
418
                }
419
                
420
                if (e.getSource() == this.getTy_Rotation()) {
421
                        if (e.getKeyCode() == 46 || (e.getKeyCode() >= 48 && e.getKeyCode() <= 57) || e.getKeyCode() >= 96 && e.getKeyCode() <= 105 || 
422
                                        (e.getKeyCode() >= 0 && e.getKeyCode()<= 31) || e.getKeyCode() == 127){                                                
423
                        }
424
                        else {
425
                                JOptionPane.showMessageDialog(TransformationManualPanel.this, 
426
                                                "Only number format.", 
427
                                                "Warning...", JOptionPane.WARNING_MESSAGE);
428
                                String aux = ty_Rotation.getText();
429
                                if (aux.length() == 1 || aux.length() == 0){
430
                                        ty_Rotation.setText("");
431
                                }
432
                                else {
433
                                        ty_Rotation.setText(aux.substring(0, aux.length()-1));
434
                                }
435
                        }
436
                }
437
                
438
                if (e.getSource() == this.getTz_Translation()) {
439
                        if (e.getKeyCode() == 46 || (e.getKeyCode() >= 48 && e.getKeyCode() <= 57) || e.getKeyCode() >= 96 && e.getKeyCode() <= 105 || 
440
                                        (e.getKeyCode() >= 0 && e.getKeyCode()<= 31) || e.getKeyCode() == 127){                                                
441
                        }
442
                        else {
443
                                JOptionPane.showMessageDialog(TransformationManualPanel.this, 
444
                                                "Only number format.", 
445
                                                "Warning...", JOptionPane.WARNING_MESSAGE);
446
                                String aux = tz_Translation.getText();
447
                                if (aux.length() == 1 || aux.length() == 0){
448
                                        tz_Translation.setText("");
449
                                }
450
                                else {
451
                                        tz_Translation.setText(aux.substring(0, aux.length()-1));
452
                                }
453
                        }
454
                }
455
                
456
                if (e.getSource() == this.getTz_Rotation()) {
457
                        if (e.getKeyCode() == 46 || (e.getKeyCode() >= 48 && e.getKeyCode() <= 57) || e.getKeyCode() >= 96 && e.getKeyCode() <= 105 || 
458
                                        (e.getKeyCode() >= 0 && e.getKeyCode()<= 31) || e.getKeyCode() == 127){                                                
459
                        }
460
                        else {
461
                                JOptionPane.showMessageDialog(TransformationManualPanel.this, 
462
                                                "Only number format.", 
463
                                                "Warning...", JOptionPane.WARNING_MESSAGE);
464
                                String aux = tz_Rotation.getText();
465
                                if (aux.length() == 1 || aux.length() == 0){
466
                                        tz_Rotation.setText("");
467
                                }
468
                                else {
469
                                        tz_Rotation.setText(aux.substring(0, aux.length()-1));
470
                                }
471
                        }
472
                }
473
                
474
                if (e.getSource() == this.getTscale()) {
475
                        if (e.getKeyCode() == 46 || (e.getKeyCode() >= 48 && e.getKeyCode() <= 57) || e.getKeyCode() >= 96 && e.getKeyCode() <= 105 || 
476
                                        (e.getKeyCode() >= 0 && e.getKeyCode()<= 31) || e.getKeyCode() == 127){                                                
477
                        }
478
                        else {
479
                                JOptionPane.showMessageDialog(TransformationManualPanel.this, 
480
                                                "Only number format.", 
481
                                                "Warning...", JOptionPane.WARNING_MESSAGE);
482
                                String aux = tScale.getText();
483
                                if (aux.length() == 1 || aux.length() == 0){
484
                                        tScale.setText("");
485
                                }
486
                                else {
487
                                        tScale.setText(aux.substring(0, aux.length()-1));
488
                                }
489
                        }
490
                }
491
        }
492

    
493
        public void keyReleased(KeyEvent e) {
494
                // TODO Auto-generated method stub
495
                
496
        }
497

    
498
        public void keyTyped(KeyEvent e) {
499
                // TODO Auto-generated method stub
500
                
501
        }
502
        
503

    
504
}