Statistics
| Revision:

root / trunk / extensions / extGeoreferencing / src / com / iver / cit / gvsig / gui / Panels / SelectPointsPanel.java @ 3134

History | View | Annotate | Download (23.4 KB)

1 2844 nacho
package com.iver.cit.gvsig.gui.Panels;
2
3 2962 nacho
import java.awt.Component;
4 2958 nacho
import java.awt.FlowLayout;
5
import java.awt.GridBagConstraints;
6
import java.awt.GridBagLayout;
7 3014 nacho
import java.awt.event.ActionEvent;
8
import java.awt.event.ActionListener;
9 3049 nacho
import java.awt.event.FocusEvent;
10
import java.awt.event.FocusListener;
11 3014 nacho
import java.awt.event.KeyEvent;
12
import java.awt.event.KeyListener;
13 2962 nacho
import java.awt.geom.Point2D;
14 2958 nacho
15 3014 nacho
import javax.swing.ImageIcon;
16 2958 nacho
import javax.swing.JButton;
17
import javax.swing.JLabel;
18 2962 nacho
import javax.swing.JOptionPane;
19 2844 nacho
import javax.swing.JPanel;
20
import javax.swing.JTextField;
21
22
import com.iver.andami.PluginServices;
23 2958 nacho
import com.iver.cit.gvsig.fmap.layers.FLayer;
24 3049 nacho
import com.iver.cit.gvsig.fmap.layers.FLyrGeoRaster;
25 2958 nacho
import com.iver.cit.gvsig.fmap.layers.FLyrPoints;
26
import com.iver.cit.gvsig.gui.View;
27 3014 nacho
import com.iver.cit.gvsig.gui.Dialogs.GeoreferencingDialog;
28 3091 nacho
import com.iver.cit.gvsig.gui.toolListeners.GeorefPointSelectorListener;
29 2844 nacho
30 3049 nacho
public class SelectPointsPanel extends JPanel implements ActionListener, KeyListener, FocusListener{
31 2844 nacho
32
        private JPanel pGeneral = null;
33 2962 nacho
        private JPanel pPointSelection = null;
34
        private JPanel pControlPoint = null;
35
        private JPanel pInfoPoint = null;
36 2844 nacho
        private JPanel pX = null;
37
        private JPanel pY = null;
38
        private JPanel pLatitud = null;
39
        private JPanel pLongitud = null;
40
        private JTextField tX = null;
41
        private JLabel lX = null;
42
        private JLabel lY = null;
43
        private JTextField tY = null;
44 2977 nacho
        private JLabel lLongitud = null;
45 2844 nacho
        private JLabel lLatitud = null;
46
        private JTextField tLatitud = null;
47
        private JTextField tLongitud = null;
48
49 2962 nacho
        private JPanel pControls = null;
50
        private JPanel pSelectFromView = null;
51
        private JButton bSelectFromView = null;
52
        private FLyrPoints lyrPoints = null;
53 3064 nacho
        private boolean disableEvent = false;
54 2963 nacho
        private JButton bClear = null;
55
        private JButton bDelPoint = null;
56
        private int lastIndexSelection = -1;
57 3014 nacho
58 3012 nacho
        private JPanel pManagerPoint = null;
59 3014 nacho
        private JButton bExtended = null;
60
        private JPanel pExtend = null;
61
62
        private TableControlerPanel tableControlerPanel = null;
63
        private DataPointPanel dataPointPanel = null;
64
        private ErrorPointPanel errorPointPanel = null;
65
66
        private GeoreferencingDialog grd = null;
67
68 3049 nacho
        /**
69
         * Valores ?ltimos que se han introducido en los JTextField para poder reponerlos.
70
         */
71
        public String lastTx = "", lastTy = "", lastLong = "", lastLat = "";
72
73 3014 nacho
        public SelectPointsPanel() {
74
                super();
75
                initialize();
76
        }
77
78 2844 nacho
        /**
79
         * This is the default constructor
80
         */
81 3014 nacho
        public SelectPointsPanel(GeoreferencingDialog grd) {
82 2844 nacho
                super();
83
                initialize();
84 3014 nacho
                this.grd = grd;
85 2844 nacho
        }
86
87 3014 nacho
        private void init(){}
88
89 2844 nacho
        /**
90
         * This method initializes this
91
         *
92
         * @return void
93
         */
94
        private void initialize() {
95 3039 nacho
        this.setPreferredSize(new java.awt.Dimension(380,160));
96
        this.setSize(new java.awt.Dimension(380,160));
97 2844 nacho
        this.setLocation(new java.awt.Point(0,0));
98
        this.add(getPGeneral(), null);
99
        }
100
101
        /**
102
         * This method initializes pGeneral
103
         *
104
         * @return javax.swing.JPanel
105
         */
106
        private JPanel getPGeneral() {
107
                if (pGeneral == null) {
108
                        GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
109 3037 nacho
                        gridBagConstraints1.insets = new java.awt.Insets(0,0,0,0);
110 3012 nacho
                        gridBagConstraints1.gridy = 0;
111 2844 nacho
                        gridBagConstraints1.gridx = 0;
112
                        GridBagConstraints gridBagConstraints = new GridBagConstraints();
113 3012 nacho
                        gridBagConstraints.insets = new java.awt.Insets(5,0,5,0);
114
                        gridBagConstraints.gridy = 1;
115 2844 nacho
                        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
116
                        gridBagConstraints.gridheight = 1;
117
                        gridBagConstraints.gridx = 0;
118
                        pGeneral = new JPanel();
119
                        pGeneral.setLayout(new GridBagLayout());
120 3039 nacho
                        pGeneral.setPreferredSize(new java.awt.Dimension(390,158));
121 3012 nacho
                        gridBagConstraints.gridwidth = 1;
122 2962 nacho
                        pGeneral.add(getPPointSelection(), gridBagConstraints);
123
                        pGeneral.add(getPControlPoint(), gridBagConstraints1);
124 2844 nacho
                }
125
                return pGeneral;
126
        }
127
128
        /**
129
         * This method initializes pFileSelection
130
         *
131
         * @return javax.swing.JPanel
132
         */
133 2962 nacho
        private JPanel getPPointSelection() {
134
                if (pPointSelection == null) {
135 3064 nacho
                        //jLabel = new JLabel();
136 3037 nacho
                        FlowLayout flowLayout1 = new FlowLayout();
137 2844 nacho
                        FlowLayout flowLayout = new FlowLayout();
138 3037 nacho
                        flowLayout.setVgap(-3);
139 2844 nacho
                        flowLayout.setAlignment(java.awt.FlowLayout.LEFT);
140 2962 nacho
                        pPointSelection = new JPanel();
141
                        pPointSelection.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", java.awt.Font.BOLD, 12), java.awt.Color.black));
142 2963 nacho
                        pPointSelection.setName("");
143 2962 nacho
                        pPointSelection.setLayout(flowLayout);
144 3039 nacho
                        pPointSelection.setPreferredSize(new java.awt.Dimension(375,27));
145 3012 nacho
                        flowLayout.setHgap(0);
146 3014 nacho
                        if(this.tableControlerPanel == null){
147
                                tableControlerPanel = new TableControlerPanel();
148 3037 nacho
                                tableControlerPanel.setLayout(flowLayout1);
149
                                flowLayout1.setVgap(1);
150
                                flowLayout1.setHgap(0);
151 3064 nacho
                                //jLabel.setVerticalAlignment(javax.swing.SwingConstants.CENTER);
152
                                //tableControlerPanel.setLNumberOfPoints(jLabel);
153 3014 nacho
                                tableControlerPanel.getBFirst().addActionListener(this);
154
                                tableControlerPanel.getBLast().addActionListener(this);
155
                                tableControlerPanel.getBNext().addActionListener(this);
156
                                tableControlerPanel.getBPrev().addActionListener(this);
157 3037 nacho
                                tableControlerPanel.getBNew().addActionListener(this);
158 3014 nacho
                                tableControlerPanel.getCPoint().addActionListener(this);
159 3064 nacho
                                tableControlerPanel.getBClear().addActionListener(this);
160
                                tableControlerPanel.getBDelPoint().addActionListener(this);
161 3014 nacho
                        }
162
                        //pPointSelection.add(getPTableControl(), null);
163
                        pPointSelection.add(tableControlerPanel, null);
164 3012 nacho
                        pPointSelection.add(getBSelectFromView(), null);
165 3014 nacho
                        pPointSelection.add(getPExtend(), null);
166 2844 nacho
                }
167 2962 nacho
                return pPointSelection;
168 2844 nacho
        }
169
170
        /**
171
         * This method initializes pControls
172
         *
173
         */
174 2962 nacho
        private JPanel getPControlPoint() {
175
                if (pControlPoint == null) {
176
                        GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
177 2844 nacho
                        GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
178 3014 nacho
                        gridBagConstraints2.gridx = 0;
179 2962 nacho
                        gridBagConstraints2.insets = new java.awt.Insets(0,0,0,0);
180 2844 nacho
                        gridBagConstraints2.gridy = 0;
181 2962 nacho
                        pControlPoint = new JPanel();
182
                        pControlPoint.setLayout(new GridBagLayout());
183 3039 nacho
                        pControlPoint.setPreferredSize(new java.awt.Dimension(382,120));
184 2962 nacho
                        pControlPoint.setBorder(javax.swing.BorderFactory.createEmptyBorder(0,0,0,0));
185
                        gridBagConstraints11.gridy = 0;
186 3014 nacho
                        gridBagConstraints11.gridx = 1;
187
                        if(this.dataPointPanel == null){
188
                                dataPointPanel = new DataPointPanel();
189
                                dataPointPanel.getTX().addKeyListener(this);
190
                                dataPointPanel.getTY().addKeyListener(this);
191
                                dataPointPanel.getLatitud().addKeyListener(this);
192
                                dataPointPanel.getLongitud().addKeyListener(this);
193 3049 nacho
                                dataPointPanel.getTX().addFocusListener(this);
194
                                dataPointPanel.getTY().addFocusListener(this);
195
                                dataPointPanel.getLatitud().addFocusListener(this);
196
                                dataPointPanel.getLongitud().addFocusListener(this);
197 3014 nacho
                        }
198
                        pControlPoint.add(dataPointPanel, gridBagConstraints2);
199
200
                        if(this.errorPointPanel == null)
201
                                errorPointPanel = new ErrorPointPanel();
202
                        pControlPoint.add(errorPointPanel, gridBagConstraints11);
203 2844 nacho
                }
204 2962 nacho
                return pControlPoint;
205 2844 nacho
        }
206 3064 nacho
207 2844 nacho
        /**
208 3064 nacho
         * Actualiza el n?mero de puntos del combo a partir de los contenidos en
209
         * la capa de puntos. Esta funci?n es usada desde otros paneles que cambien
210
         * el punto seleccionado para comunicar al control la nueva selecci?n.
211 2987 nacho
         */
212 3064 nacho
        public void updateComboPoint(int pointSelected){
213
                disableEvent = true;
214
                try{
215
                        loadLyrPoint();
216
                }catch(InstantiationException exc){
217
                    JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),
218
                                        PluginServices.getText(this, "error_capa_puntos"));
219
                    return;
220 2963 nacho
            }
221 3064 nacho
222
                tableControlerPanel.setNItems(lyrPoints.getCountPoints());
223
                tableControlerPanel.getCPoint().setSelectedIndex(pointSelected);
224
                tableControlerPanel.checkArrows();
225
                lyrPoints.loadVisualPoint(pointSelected, this.grd);
226
                disableEvent = false;
227 2963 nacho
        }
228
229
        /**
230
         * Comprueba si los valores de un punto en los campos de texto est?n
231
         * vacios y lanza una excepci?n si hay alguno sin informaci?n.
232
         * @throws NoSuchFieldException
233
         */
234 3064 nacho
        public void checkInfoPointText()throws NoSuchFieldException{
235 3014 nacho
                if(        dataPointPanel.getTX().getText().equals("") ||
236
                                dataPointPanel.getTY().getText().equals("") ||
237
                                dataPointPanel.getLatitud().getText().equals("") ||
238
                                dataPointPanel.getLongitud().getText().equals("")){
239 3064 nacho
                                disableEvent = true;
240
                                try{
241
                                        tableControlerPanel.getCPoint().setSelectedIndex(lastIndexSelection);
242
                                        disableEvent = false;
243
                                }catch(IllegalArgumentException ex){
244
                                        //Si el lastIndex tiene un valor erroneo no hacemos ninguna selecci?n
245
                                }
246 2963 nacho
                                throw new NoSuchFieldException();
247
                }
248
        }
249
250
        /**
251
         * Esta funci?n resetea los controles del panel de info de un punto.
252
         */
253 3011 nacho
        public void resetControls(boolean active){
254 3014 nacho
                dataPointPanel.getTX().setText("");
255
                dataPointPanel.getTY().setText("");
256
                dataPointPanel.getLatitud().setText("");
257
                dataPointPanel.getLongitud().setText("");
258 2964 nacho
                getBSelectFromView().setEnabled(active);
259 3064 nacho
                getTableControlerPanel().getBClear().setEnabled(active);
260
                getTableControlerPanel().getBDelPoint().setEnabled(active);
261 2963 nacho
        }
262
263
        /**
264
         * Cuando pasamos de un punto a otro o se va a crear uno nuevo
265
         * <UL>
266
         * <LI>Cargamos la capa FLyrPoint si no est? ya cargada.</LI>
267 3058 nacho
         * <LI>Comprobamos que los campos no esten vacios y lanzamos una excepci?n si hay alg?n campo vacio si lo est?n.</LI>
268 2963 nacho
         * <LI>Insertamos el nuevo punto seleccionado en los campos de informaci?n.</LI>
269
         * <LI>Checkeamos las flechas para ver si tenemos que activarlas o desactivarlas.</LI>
270
         * </UL>
271
         * @param changeSelection        Cambia la posici?n seleccionada del combo si es true
272
         * @param pos        Posici?n a la que cambia el combo si el parametro chageSelection es true
273
         */
274 3102 nacho
        public void changePoint(boolean changeSelection, int pos){
275 3064 nacho
                disableEvent = true;
276 2963 nacho
            try{
277 3064 nacho
                    loadLyrPoint();
278 3058 nacho
                    checkInfoPointText();
279 2963 nacho
                if(changeSelection){
280
                        lastIndexSelection = pos;
281 3064 nacho
                        tableControlerPanel.setSelectedIndex(pos);
282 2963 nacho
                }
283 3064 nacho
                lyrPoints.loadVisualPoint(tableControlerPanel.getSelectedIndex(), this.grd);
284
                tableControlerPanel.checkArrows();
285 2963 nacho
            }catch(NoSuchFieldException exc){
286
                    JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),
287
                                        PluginServices.getText(this, "coordenadas_vacias"));
288 3064 nacho
            }catch(InstantiationException e){
289
                        JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),
290
                                        PluginServices.getText(this, "error_capa_puntos"));
291
                }
292
            disableEvent = false;
293 2963 nacho
        }
294
295
        /**
296
         * Limpia la lista de puntos y borra el dialogo.
297
         */
298 3011 nacho
        public void clearList(){
299 3064 nacho
                try{
300
                    loadLyrPoint();
301 3102 nacho
                    if(lyrPoints != null)
302
                            lyrPoints.clearVisualList(this,
303
                                                                            grd.getConectorPanel().getDataPointsTabPanel().getTablePointsPanel(),
304
                                                                            grd.getConectorPanel().getAdjustGeorefPanel());
305 3064 nacho
                }catch(InstantiationException e){
306
                        JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),
307
                                        PluginServices.getText(this, "error_capa_puntos"));
308 2963 nacho
                }
309
        }
310
311
        /**
312 2962 nacho
         * Obtiene una capa de puntos. Si no existe crea una.
313
         * @return
314
         */
315 3064 nacho
        private void loadLyrPoint() throws InstantiationException{
316 2962 nacho
                //Buscamos una capa FlyrPoint en la vista y si no la hay la creamos
317
                View theView = (View) PluginServices.getMDIManager().getActiveView();
318
319
                if(lyrPoints == null){
320
                        for(int i=0;i<theView.getMapControl().getMapContext().getLayers().getLayersCount();i++){
321
                                FLayer lyr = theView.getMapControl().getMapContext().getLayers().getLayer(i);
322 3064 nacho
                                if(        lyr instanceof FLyrGeoRaster &&
323
                                        lyr.getName().startsWith("*") &&
324 3079 nacho
                                        lyr.isActive()){
325 3102 nacho
                                        try{
326
                                                lyrPoints = ((FLyrGeoRaster)lyr).getFLyrPoints();
327
                                        }catch(ClassCastException exc){
328
                                                throw new InstantiationException("No se ha podido obtener una capa de puntos");
329
                                        }
330 3079 nacho
331
                                }
332 2962 nacho
                        }
333
                }
334
335
        }
336
337 2844 nacho
338 2963 nacho
339 2844 nacho
        /**
340 2964 nacho
         * Este m?todo inicializa el bot?n seleccionar desde la vista. Cuando lo
341
         * activamos se carga la herramienta de selecci?n de puntos desde la vista.
342 2962 nacho
         *
343
         * @return javax.swing.JButton
344
         */
345 2964 nacho
        public JButton getBSelectFromView() {
346 2962 nacho
                if (bSelectFromView == null) {
347
                        bSelectFromView = new JButton();
348 3012 nacho
                        bSelectFromView.setText("");
349 3037 nacho
                        bSelectFromView.setPreferredSize(new java.awt.Dimension(22,22));
350 3014 nacho
                        bSelectFromView.setIcon(new ImageIcon(getClass().getResource("/com/iver/cit/gvsig/gui/Panels/images/selectfromview.png")));
351 2964 nacho
                        bSelectFromView.setEnabled(false);
352 2962 nacho
                        bSelectFromView.addActionListener(new java.awt.event.ActionListener() {
353
                                public void actionPerformed(java.awt.event.ActionEvent e) {
354
                                        View theView = (View) PluginServices.getMDIManager().getActiveView();
355 3064 nacho
                                        try{
356
                                                loadLyrPoint();
357
                                                lyrPoints.setLastTool(theView.getMapControl().getTool());
358 3091 nacho
                                                GeorefPointSelectorListener.posPoint = tableControlerPanel.getSelectedIndex();
359
                                                GeorefPointSelectorListener.firstPoint = true;
360 3064 nacho
                                                theView.getMapControl().setTool("pointLyrSelection");
361
                                        }catch(InstantiationException exc){
362
                                                JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),
363
                                                                PluginServices.getText(this, "error_capa_puntos"));
364
                                        }
365 2962 nacho
                                }
366
                        });
367
                }
368
                return bSelectFromView;
369
        }
370
371
        /**
372 3049 nacho
         * Checkea un textField para que contenga caracteres validos. Consideramos validos
373
         * los caracteres del 0 al 9, el punto, DEL, Supr, flechas y Enter teniendo en cuenta que el
374
         * c?digo ascii del teclado numerico es distinto.
375 2963 nacho
         */
376 3049 nacho
        public boolean checkTextField(JTextField tf, int code, String lastText){
377
                        System.out.println(code);
378
                //Si el caracter es erroneo pasamos de el y reponemos el texto que habia
379
                if(        (code >= 0 && code <= 7) ||
380
                        code == 9 ||
381
                        (code >= 11 && code <= 36) ||
382
                        (code >= 41 && code <= 45) ||
383
                        code == 47 ||
384
                        (code >= 58 && code <= 95) ||
385
                        (code >= 106 && code <= 109) ||
386
                        (code >= 111 && code <= 126) ||
387
                        code >= 128){
388
                        tf.setText(lastText);
389
                        return false;
390 2963 nacho
                }
391
392 3049 nacho
                return true;
393 2963 nacho
        }
394 3014 nacho
395 2963 nacho
        /**
396 3064 nacho
         * @return Returns the lyrPoints.
397
         */
398
        public FLyrPoints getLyrPoints() {
399
                if(lyrPoints == null){
400
                        try{
401
                                loadLyrPoint();
402
                                        }catch(InstantiationException exc){
403
                                JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),
404
                                                PluginServices.getText(this, "error_capa_puntos"));
405
                        }
406 3012 nacho
                }
407 3064 nacho
                return lyrPoints;
408 3012 nacho
        }
409 3064 nacho
410 3012 nacho
        /**
411
         * This method initializes jButton
412
         *
413
         * @return javax.swing.JButton
414
         */
415 3014 nacho
        private JButton getBExtended() {
416
                if (bExtended == null) {
417
                        bExtended = new JButton();
418 3037 nacho
                        bExtended.setPreferredSize(new java.awt.Dimension(22,22));
419 3014 nacho
                        bExtended.setIcon(new ImageIcon(getClass().getResource("/com/iver/cit/gvsig/gui/Panels/images/down.png")));
420
                        bExtended.addActionListener(this);
421 3012 nacho
                }
422 3014 nacho
                return bExtended;
423 3012 nacho
        }
424
        /**
425
         * This method initializes jPanel
426
         *
427
         * @return javax.swing.JPanel
428
         */
429 3014 nacho
        private JPanel getPExtend() {
430
                if (pExtend == null) {
431 3012 nacho
                        FlowLayout flowLayout21 = new FlowLayout();
432 3014 nacho
                        pExtend = new JPanel();
433
                        pExtend.setLayout(flowLayout21);
434 3012 nacho
                        flowLayout21.setHgap(0);
435
                        flowLayout21.setVgap(0);
436
                        flowLayout21.setAlignment(java.awt.FlowLayout.RIGHT);
437 3037 nacho
                        pExtend.setPreferredSize(new java.awt.Dimension(35,22));
438 3014 nacho
                        pExtend.add(getBExtended(), null);
439 3012 nacho
                }
440 3014 nacho
                return pExtend;
441 3012 nacho
        }
442 3014 nacho
443
        /**
444
         * @return Returns the dataPointPanel.
445
         */
446
        public DataPointPanel getDataPointPanel() {
447
                return dataPointPanel;
448
        }
449
450
        /**
451
         * @param dataPointPanel The dataPointPanel to set.
452
         */
453
        public void setDataPointPanel(DataPointPanel dataPointPanel) {
454
                this.dataPointPanel = dataPointPanel;
455
        }
456
457
        /**
458
         * @return Returns the tableControlerPanel.
459
         */
460
        public TableControlerPanel getTableControlerPanel() {
461
                return tableControlerPanel;
462
        }
463
464
        /**
465
         * @param tableControlerPanel The tableControlerPanel to set.
466
         */
467
        public void setTableControlerPanel(TableControlerPanel tableControlerPanel) {
468
                this.tableControlerPanel = tableControlerPanel;
469
        }
470
471
        /**
472
         * Control de eventos de TableControlerPanel
473
         */
474
        public void actionPerformed(ActionEvent e) {
475
476
                //Bot?n de ir al punto inicial
477
                if(e.getSource() == tableControlerPanel.getBFirst()){
478 3064 nacho
                        if(tableControlerPanel.getItemCount() >= 1)
479 3014 nacho
                                changePoint(true, 0);
480
                }
481
482
                //Bot?n de ir al punto anterior
483
                if(e.getSource() == tableControlerPanel.getBPrev()){
484 3064 nacho
                        if(tableControlerPanel.getSelectedIndex() != 0)
485
                               changePoint(true, tableControlerPanel.getSelectedIndex() - 1);
486 3014 nacho
                }
487
488
                //Bot?n de ir al punto siguiente
489
                if(e.getSource() == tableControlerPanel.getBNext()){
490 3064 nacho
                        if(tableControlerPanel.getSelectedIndex() != (tableControlerPanel.getItemCount() - 1))
491
                        changePoint(true, tableControlerPanel.getSelectedIndex() + 1);
492 3014 nacho
493
                }
494
495
                //Bot?n de ir al punto final
496
                if(e.getSource() == tableControlerPanel.getBLast()){
497 3064 nacho
                        if(tableControlerPanel.getItemCount() >= 1)
498
                                changePoint(true, tableControlerPanel.getItemCount() - 1);
499 3014 nacho
                }
500
501
                //Combo de selecci?n de punto
502
                if(e.getSource() == tableControlerPanel.getCPoint()){
503 3064 nacho
                        if(tableControlerPanel.getSelectedIndex() != -1){
504
                                 if(!disableEvent){
505 3134 nacho
                                        try{
506
                                                loadLyrPoint();
507
                                        }catch(InstantiationException exc){
508
                                                return;
509
                                        }
510 3064 nacho
                                        lyrPoints.loadVisualPoint(tableControlerPanel.getSelectedIndex(), grd);
511
                                         tableControlerPanel.checkArrows();
512 3014 nacho
                                 }
513
                        }
514
                }
515
516 3037 nacho
                //Bot?n de nuevo punto
517
                if(e.getSource() == tableControlerPanel.getBNew()){
518
                        try{
519 3064 nacho
                                disableEvent = true;
520
                                loadLyrPoint();
521
                                if(this.getTableControlerPanel().getItemCount() > 0)
522 3058 nacho
                                        checkInfoPointText();
523 3037 nacho
                                lyrPoints.addPoint(null, null);
524
                                tableControlerPanel.getCPoint().addItem("" + lyrPoints.getCountPoints());
525
                                tableControlerPanel.getLNumberOfPoints().setText(PluginServices.getText(this, "de ") + " " + lyrPoints.getCountPoints());
526
                                lastIndexSelection = lyrPoints.getCountPoints() - 1;
527 3064 nacho
                                tableControlerPanel.setSelectedIndex(tableControlerPanel.getItemCount() - 1);
528 3112 nacho
                                grd.resetControls(true);
529 3064 nacho
                                tableControlerPanel.checkArrows();
530 3037 nacho
                        }catch(NoSuchFieldException exc){
531
                                JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),
532
                                                PluginServices.getText(this, "coordenadas_vacias"));
533 3064 nacho
                        }catch(InstantiationException exc){
534
                                JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),
535
                                                PluginServices.getText(this, "error_capa_puntos"));
536 3037 nacho
                        }
537 3064 nacho
                        disableEvent = false;
538 3037 nacho
                }
539
540 3064 nacho
                //Bot?n de eliminado de todos los puntos
541
                if(e.getSource() == getTableControlerPanel().getBClear()){
542
                        clearList();
543
                }
544
545
                //Bot?n de eliminado de un punto
546
                if(e.getSource() == getTableControlerPanel().getBDelPoint()){
547
                        if(lyrPoints.length() == 1) //Si solo hay un punto reseteamos
548
                                clearList();
549
                        else{
550
                                disableEvent = true;
551
                                int posSelect = tableControlerPanel.getSelectedIndex();
552
                                if(posSelect == -1)
553
                                        return;
554
                                lyrPoints.deleteVisualPoint(posSelect, grd);
555
556
                                if(posSelect == 0){
557
                                        lastIndexSelection = posSelect;
558
                                }else{
559
                                                lastIndexSelection = posSelect -1 ;
560
                                }
561
                                disableEvent = false;
562
                        }
563
                }
564
565 3037 nacho
                //Bot?n de extensi?n del cuadro de dialogo
566 3014 nacho
                if(e.getSource() == this.getBExtended()){
567
                        if(grd.isEnlarge()){
568
                                grd.setEnlarge(false);
569
                                bExtended.setIcon(new ImageIcon(getClass().getResource("/com/iver/cit/gvsig/gui/Panels/images/down.png")));
570
                        }else{
571
                                grd.setEnlarge(true);
572
                                bExtended.setIcon(new ImageIcon(getClass().getResource("/com/iver/cit/gvsig/gui/Panels/images/up.png")));
573 3102 nacho
                                if(lyrPoints != null)
574
                                        lyrPoints.loadVisualPoint(tableControlerPanel.getSelectedIndex(), this.grd);
575 3014 nacho
                        }
576
                }
577
578
        }
579
580
        /* (non-Javadoc)
581
         * @see java.awt.event.KeyListener#keyPressed(java.awt.event.KeyEvent)
582
         */
583
        public void keyPressed(KeyEvent e) {
584 3049 nacho
                // TODO Auto-generated method stu
585 3014 nacho
        }
586
587
        /**
588 3049 nacho
         * Actualiza los valores del punto nuevo introducido desde el teclado llamando a la funci?n
589
         * de la capa updataData que actualizar? los controles necesarios para que se refresquen la vista
590
         * mini imagenes, textfields, tabla y capa de puntos.
591
         * @param pixel Pixel de la imagen
592
         * @param map Coordenadas de la vista.
593
         */
594
        private void updatePointsValue(Point2D pixel, Point2D map){
595
                //Actualizamos los controles con los nuevos valores
596
                View theView = (View) PluginServices.getMDIManager().getActiveView();
597
                for(int i=0;i<theView.getMapControl().getMapContext().getLayers().getLayersCount();i++){
598
                        FLayer lyr = theView.getMapControl().getMapContext().getLayers().getLayer(i);
599
                        if(        lyr instanceof FLyrGeoRaster &&
600
                                lyr.getName().startsWith("*") &&
601
                                lyr.isActive()){
602 3064 nacho
                                ((FLyrGeoRaster)lyr).updateData(Integer.valueOf(this.grd.getSelectPointsPanel().getTableControlerPanel().getSelectedItem()).intValue(),
603 3049 nacho
                                                                                                pixel,
604
                                                                                                map,
605
                                                                                                this.grd,
606
                                                                                                theView,
607
                                                                                                lyrPoints);
608
                        }
609
                }
610
        }
611
612
        /**
613 3014 nacho
         * Control de eventos de las entradas de texto de los puntos
614
         */
615
        public void keyReleased(KeyEvent e) {
616
                //Campo de texto de la coordenada X en pixeles
617 3049 nacho
                Point2D pixel = null;
618
                Point2D map = null;
619
                boolean update = false;
620 3014 nacho
621 3049 nacho
                try{
622
                        if(e.getSource() == dataPointPanel.getTX()){
623
                                if(checkTextField(dataPointPanel.getTX(), e.getKeyCode(), lastTx)){
624
                                        pixel = new Point2D.Double();
625
                                        pixel.setLocation(        Double.valueOf(dataPointPanel.getTX().getText()).doubleValue(),
626
                                                                                Double.valueOf(dataPointPanel.getTY().getText()).doubleValue());
627
                                        if(e.getKeyCode() == 10)
628
                                                update = true;
629
                                        lastTx = dataPointPanel.getTX().getText();
630
                                }
631
                        }
632
633
                        //Campo de texto de la coordenada Y en pixeles
634
                        if(e.getSource() == dataPointPanel.getTY()){
635
                                if(checkTextField(dataPointPanel.getTY(), e.getKeyCode(), lastTy)){
636
                                        pixel = new Point2D.Double();
637
                                        pixel.setLocation(        Double.valueOf(dataPointPanel.getTX().getText()).doubleValue(),
638
                                                                                Double.valueOf(dataPointPanel.getTY().getText()).doubleValue());
639
                                        if(e.getKeyCode() == 10)
640
                                                update = true;
641
                                        lastTy = dataPointPanel.getTY().getText();
642
                                }
643
                        }
644
645
                        //Campo de texto de la coordenada X en coordenadas del mundo
646
                        if(e.getSource() == dataPointPanel.getLatitud()){
647
                                if(checkTextField(dataPointPanel.getLatitud(), e.getKeyCode(), lastLat)){
648
                                        map = new Point2D.Double();
649
                                        map.setLocation(        Double.valueOf(dataPointPanel.getLongitud().getText()).doubleValue(),
650
                                                                                Double.valueOf(dataPointPanel.getLatitud().getText()).doubleValue());
651
                                        if(e.getKeyCode() == 10)
652
                                                update = true;
653
                                        lastLat = dataPointPanel.getLatitud().getText();
654
                                }
655
                        }
656
657
                        //Campo de texto de la coordenada Y en coordenadas del mundo
658
                        if(e.getSource() == dataPointPanel.getLongitud()){
659
                                if(checkTextField(dataPointPanel.getLongitud(), e.getKeyCode(), lastLong)){
660
                                        map = new Point2D.Double();
661
                                        map.setLocation(        Double.valueOf(dataPointPanel.getLongitud().getText()).doubleValue(),
662
                                                                                Double.valueOf(dataPointPanel.getLatitud().getText()).doubleValue());
663
                                        if(e.getKeyCode() == 10)
664
                                                update = true;
665
                                        lastLong = dataPointPanel.getLongitud().getText();
666
                                }
667
                        }
668
669
                        if(update)
670
                                this.updatePointsValue(pixel, map);
671
672
                }catch(NumberFormatException exc){
673
                        System.out.println("Formato numerico erroneo");
674 3014 nacho
                }
675
676
        }
677
678
        /* (non-Javadoc)
679
         * @see java.awt.event.KeyListener#keyTyped(java.awt.event.KeyEvent)
680
         */
681
        public void keyTyped(KeyEvent e) {
682
                // TODO Auto-generated method stub
683
684
        }
685 3049 nacho
686
        /* (non-Javadoc)
687
         * @see java.awt.event.FocusListener#focusGained(java.awt.event.FocusEvent)
688
         */
689
        public void focusGained(FocusEvent arg0) {
690
                // TODO Auto-generated method stub
691 3014 nacho
692 3049 nacho
        }
693
694
        /**
695
         * Los campos de texto de las coordenadas cuando pierden el foco actualizan el valor del pixel
696
         * en la cap, vista, mini imagen y tabla
697
         */
698
        public void focusLost(FocusEvent arg0) {
699
                Point2D pixel = new Point2D.Double();
700
                Point2D map = new Point2D.Double();
701
                pixel.setLocation(Double.valueOf(dataPointPanel.getTX().getText()).doubleValue(),
702
                                                  Double.valueOf(dataPointPanel.getTY().getText()).doubleValue());
703
                map.setLocation(Double.valueOf(dataPointPanel.getLongitud().getText()).doubleValue(),
704
                                                Double.valueOf(dataPointPanel.getLatitud().getText()).doubleValue());
705
                this.updatePointsValue(pixel, map);
706 3014 nacho
707 3049 nacho
        }
708
709 3014 nacho
 }