Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extGeoreferencing / src / org / gvsig / georeferencing / gui / selectPoints / SelectPointsPanel.java @ 5702

History | View | Annotate | Download (26.9 KB)

1 5217 nacho
package org.gvsig.georeferencing.gui.selectPoints;
2
3
import java.awt.Component;
4
import java.awt.FlowLayout;
5
import java.awt.GridBagConstraints;
6
import java.awt.GridBagLayout;
7
import java.awt.event.ActionEvent;
8
import java.awt.event.ActionListener;
9
import java.awt.event.FocusEvent;
10
import java.awt.event.FocusListener;
11
import java.awt.event.KeyEvent;
12
import java.awt.event.KeyListener;
13
import java.awt.geom.Point2D;
14
15
import javax.swing.ImageIcon;
16
import javax.swing.JButton;
17
import javax.swing.JOptionPane;
18
import javax.swing.JPanel;
19
import javax.swing.JTextField;
20 5598 nacho
import javax.xml.transform.TransformerException;
21 5217 nacho
22
import org.gvsig.georeferencing.GeoreferencingToolsModule;
23
import org.gvsig.georeferencing.gui.dialogs.GeoreferencingDialog;
24
import org.gvsig.georeferencing.gui.listeners.GeorefPointSelectorListener;
25
import org.gvsig.georeferencing.gui.pointsTable.TableControlerPanel;
26
27
import com.iver.andami.PluginServices;
28 5241 nacho
import com.iver.cit.gvsig.fmap.layers.FLyrPoints;
29 5217 nacho
import com.iver.cit.gvsig.gui.View;
30
31
public class SelectPointsPanel extends JPanel implements ActionListener, KeyListener, FocusListener{
32
33
        //**********************Vars**********************************
34
        private String                                        pathToImages = "images/"; //"/com/iver/cit/gvsig/gui/panels/images/";
35
        private JPanel                                         pGeneral = null;
36
        private JPanel                                         pPointSelection = null;
37
        private JPanel                                         pControlPoint = null;
38
        private JButton                                 bSelectFromView = null;
39
        private FLyrPoints                                 lyrPoints = null;
40
        //private boolean                                 disableEvent = false;
41
        private int                                                lastIndexSelection = -1;
42
        private JButton                                 bExtended = null;
43
        private JPanel                                         pExtend = null;
44
        private TableControlerPanel         tableControlerPanel = null;
45
        private DataPointPanel                         dataPointPanel = null;
46
        private ErrorPointPanel                 errorPointPanel = null;
47
        private GeoreferencingDialog        grd = null;
48
        private boolean                                 update = false;
49
        /**
50
         * Valores ?ltimos que se han introducido en los JTextField para poder reponerlos.
51
         */
52
        public String                                         lastTx = "", lastTy = "", lastLong = "", lastLat = "";
53 5598 nacho
        /**
54
         * Valores ?ltimos que se han introducido parcialmente en los JTextField para poder reponerlos si
55
         * al pulsar una tecla se introduce un valor erroneo.
56
         */
57
        public String                                         lastBlockTx = "", lastBlockTy = "", lastBlockLong = "", lastBlockLat = "";
58 5217 nacho
        //**********************End Vars********************************
59
60
        //**********************Methods*********************************
61
        /**
62
         * Contructor. Inicializa el panel.
63
         */
64
        public SelectPointsPanel() {
65
                super();
66
                initialize();
67
        }
68
69
        /**
70
         * This is the default constructor
71
         */
72
        public SelectPointsPanel(GeoreferencingDialog grd) {
73
                super();
74
                initialize();
75
                this.grd = grd;
76
        }
77
78
        /**
79
         * This method initializes this
80
         *
81
         * @return void
82
         */
83
        private void initialize() {
84
        this.setPreferredSize(new java.awt.Dimension(390,175));
85
        this.setSize(new java.awt.Dimension(390,175));
86
        this.setLocation(new java.awt.Point(0,0));
87
        this.add(getPGeneral(), null);
88
        }
89
90
        /**
91
         * Actualiza el n?mero de puntos del combo a partir de los contenidos en
92
         * la capa de puntos. Esta funci?n es usada desde otros paneles que cambien
93
         * el punto seleccionado para comunicar al control la nueva selecci?n.
94
         */
95
        public void updateComboPoint(int pointSelected){
96
                //disableEvent = true;
97
                try{
98
                        loadLyrPoint();
99
                }catch(InstantiationException exc){
100
                    JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),
101
                                        PluginServices.getText(this, "error_capa_puntos"));
102
                    return;
103
            }
104
105
                tableControlerPanel.setNItems(lyrPoints.getCountPoints());
106 5370 nacho
                try{
107
                        tableControlerPanel.getCPoint().setSelectedIndex(pointSelected);
108
                }catch(IllegalArgumentException ex){
109
110
                }
111 5217 nacho
                tableControlerPanel.checkArrows();
112
                lyrPoints.getPointManager().selectPoint(pointSelected, this.grd);
113
                //disableEvent = false;
114
        }
115
116
        /**
117
         * Comprueba si los valores de un punto en los campos de texto est?n
118
         * vacios y lanza una excepci?n si hay alguno sin informaci?n.
119
         * @throws NoSuchFieldException
120
         */
121
        public void checkInfoPointText()throws NoSuchFieldException{
122
                if(        dataPointPanel.getTX().getText().equals("") ||
123
                                dataPointPanel.getTY().getText().equals("") ||
124
                                dataPointPanel.getLatitud().getText().equals("") ||
125
                                dataPointPanel.getLongitud().getText().equals("")){
126
                                //disableEvent = true;
127
                                try{
128
                                        tableControlerPanel.getCPoint().setSelectedIndex(lastIndexSelection);
129
                                        //disableEvent = false;
130
                                }catch(IllegalArgumentException ex){
131
                                        //Si el lastIndex tiene un valor erroneo no hacemos ninguna selecci?n
132
                                }
133
                                throw new NoSuchFieldException();
134
                }
135
        }
136
137
        /**
138
         * Esta funci?n resetea los controles del panel de info de un punto.
139
         */
140
        public void resetControls(boolean active){
141
                dataPointPanel.resetControls(null);
142 5370 nacho
                errorPointPanel.resetControls(null);
143 5217 nacho
                getBSelectFromView().setEnabled(active);
144
                getTableControlerPanel().getBClear().setEnabled(active);
145
                getTableControlerPanel().getBDelPoint().setEnabled(active);
146
                if(!active)
147
                        getTableControlerPanel().resetControls();
148
        }
149
150
        /**
151
         * Cuando pasamos de un punto a otro o se va a crear uno nuevo
152
         * <UL>
153
         * <LI>Cargamos la capa FLyrPoint si no est? ya cargada.</LI>
154
         * <LI>Comprobamos que los campos no esten vacios y lanzamos una excepci?n si hay alg?n campo vacio si lo est?n.</LI>
155
         * <LI>Insertamos el nuevo punto seleccionado en los campos de informaci?n.</LI>
156
         * <LI>Checkeamos las flechas para ver si tenemos que activarlas o desactivarlas.</LI>
157
         * </UL>
158
         * @param changeSelection        Cambia la posici?n seleccionada del combo si es true
159
         * @param pos        Posici?n a la que cambia el combo si el parametro chageSelection es true
160
         */
161
        public void changePoint(boolean changeSelection, int pos){
162
            try{
163
                    loadLyrPoint();
164
                    checkInfoPointText();
165
                if(changeSelection){
166
                        lastIndexSelection = pos;
167
                        tableControlerPanel.setSelectedIndex(pos);
168
                }
169
                lyrPoints.getPointManager().selectPoint(tableControlerPanel.getSelectedIndex(), this.grd);
170
                tableControlerPanel.checkArrows();
171
            }catch(NoSuchFieldException exc){
172
                    JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),
173
                                        PluginServices.getText(this, "coordenadas_vacias"));
174
            }catch(InstantiationException e){
175
                        JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),
176
                                        PluginServices.getText(this, "error_capa_puntos"));
177
                }
178
        }
179
180
        /**
181
         * Obtiene una capa de puntos. Si no existe crea una.
182
         * @return
183
         */
184
        private void loadLyrPoint() throws InstantiationException{
185
                if(lyrPoints == null){
186
                        lyrPoints = this.grd.getLyrPoints();
187
                        if(lyrPoints == null)
188
                                throw new InstantiationException();
189
                }
190
        }
191
192
        /**
193
         * Este m?todo inicializa el bot?n seleccionar desde la vista. Cuando lo
194
         * activamos se carga la herramienta de selecci?n de puntos desde la vista.
195
         *
196
         * @return javax.swing.JButton
197
         */
198
        public JButton getBSelectFromView() {
199
                if (bSelectFromView == null) {
200
                        bSelectFromView = new JButton();
201
                        bSelectFromView.setText("");
202
                        bSelectFromView.setPreferredSize(new java.awt.Dimension(22,22));
203
                        bSelectFromView.setIcon(new ImageIcon(getClass().getClassLoader().getResource(pathToImages + "selectfromview.png")));
204
                        bSelectFromView.setEnabled(false);
205
                        bSelectFromView.setToolTipText(PluginServices.getText(this, "selectfromview"));
206
                        bSelectFromView.addActionListener(new java.awt.event.ActionListener() {
207
                                public void actionPerformed(java.awt.event.ActionEvent e) {
208
                                        View theView = (View) PluginServices.getMDIManager().getActiveView();
209
                                        try{
210
                                                loadLyrPoint();
211
                                                lyrPoints.setLastTool(theView.getMapControl().getTool());
212
                                                GeorefPointSelectorListener.posPoint = tableControlerPanel.getSelectedIndex();
213
                                                GeorefPointSelectorListener.firstPoint = true;
214
                                                theView.getMapControl().setTool("pointLyrSelection");
215
                                        }catch(InstantiationException exc){
216
                                                JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),
217
                                                                PluginServices.getText(this, "error_capa_puntos"));
218
                                        }
219
                                }
220
                        });
221
                }
222
                return bSelectFromView;
223
        }
224 5598 nacho
225 5217 nacho
        /**
226
         * Control de eventos de TableControlerPanel
227
         */
228
        public void actionPerformed(ActionEvent e) {
229
230
                //Bot?n de ir al punto inicial
231
                if(e.getSource() == tableControlerPanel.getBFirst()){
232
                        if(tableControlerPanel.getItemCount() >= 1)
233
                                changePoint(true, 0);
234
                }
235
236
                //Bot?n de ir al punto anterior
237
                if(e.getSource() == tableControlerPanel.getBPrev()){
238
                        if(tableControlerPanel.getSelectedIndex() != 0)
239
                               changePoint(true, tableControlerPanel.getSelectedIndex() - 1);
240
                }
241
242
                //Bot?n de ir al punto siguiente
243
                if(e.getSource() == tableControlerPanel.getBNext()){
244
                        if(tableControlerPanel.getSelectedIndex() != (tableControlerPanel.getItemCount() - 1))
245
                        changePoint(true, tableControlerPanel.getSelectedIndex() + 1);
246
247
                }
248
249
                //Bot?n de ir al punto final
250
                if(e.getSource() == tableControlerPanel.getBLast()){
251
                        if(tableControlerPanel.getItemCount() >= 1)
252
                                changePoint(true, tableControlerPanel.getItemCount() - 1);
253
                }
254
255
                //Combo de selecci?n de punto
256
                if(e.getSource() == tableControlerPanel.getCPoint()){
257
                        if(tableControlerPanel.getSelectedIndex() != -1){
258
                                try{
259
                                        loadLyrPoint();
260
                                }catch(InstantiationException exc){
261
                                        return;
262
                                }
263
                                lyrPoints.getPointManager().selectPoint(tableControlerPanel.getSelectedIndex(), grd);
264
                                tableControlerPanel.checkArrows();
265
                        }
266
                }
267
268
                //Bot?n de nuevo punto
269 5304 nacho
                if(e.getSource() == tableControlerPanel.getBNew()){
270 5217 nacho
                        grd.getPointManager().newEmptyPoint();
271 5304 nacho
                        //Desactivamos todos los controles para centrar la visi?n del usuario
272
                        //sobre la introducci?n de puntos
273
                        grd.getPointManager().disableAllControls();
274
                }
275 5217 nacho
276
                TableControlerPanel ctrlPanel = grd.getConectorPanel().getDataPointsTabPanel().getTablePointsPanel().getTableControlerPanel();
277
278
                //Bot?n de eliminado de todos los puntos
279
                if(        e.getSource() == getTableControlerPanel().getBClear() ||
280
                        e.getSource() == ctrlPanel.getBClear()){
281
                        grd.getPointManager().deleteAllPoints();
282
                }
283
284
                //Bot?n de eliminado de un punto
285
                if(e.getSource() == getTableControlerPanel().getBDelPoint() ||
286
                                e.getSource() == ctrlPanel.getBDelPoint()){
287
                        grd.getPointManager().deletePoint();
288
                }
289
290
                //Bot?n de extensi?n del cuadro de dialogo
291
                if(e.getSource() == this.getBExtended())
292
                        this.setEnlarge(grd.isEnlarge());
293
294
        }
295
296
        /* (non-Javadoc)
297
         * @see java.awt.event.KeyListener#keyPressed(java.awt.event.KeyEvent)
298
         */
299
        public void keyPressed(KeyEvent e) {
300
                // TODO Auto-generated method stu
301
        }
302 5598 nacho
303
        /**
304
         * Checkea un textField para que contenga caracteres validos. Consideramos validos
305
         * los caracteres del 0 al 9, el punto, DEL, Supr, flechas y Enter teniendo en cuenta que el
306
         * c?digo ascii del teclado numerico es distinto.
307
         */
308
        public boolean checkTextField(int code){
309
310
                //Si el caracter es erroneo pasamos de el y reponemos el texto que habia
311
                if(        (code >= 0 && code <= 7) ||
312
                        code == 9 ||
313
                        (code >= 11 && code <= 36) ||
314
                        (code >= 41 && code <= 45) ||
315
                        code == 47 ||
316
                        (code >= 58 && code <= 95) ||
317
                        (code >= 106 && code <= 109) ||
318
                        (code >= 111 && code <= 126) ||
319
                        code >= 128){
320
                        return false;
321
                }
322
323
                return true;
324 5217 nacho
        }
325
326
        /**
327
         * Control de eventos de las entradas de texto de los puntos
328
         */
329
        public void keyReleased(KeyEvent e) {
330 5598 nacho
                String tx = dataPointPanel.getTX().getText();
331
                String ty = dataPointPanel.getTY().getText();
332
                String lon = dataPointPanel.getLongitud().getText();
333
                String lat = dataPointPanel.getLatitud().getText();
334
335 5217 nacho
                //Campo de texto de la coordenada X en pixeles
336
                Point2D pixel = null;
337
                Point2D map = null;
338
339 5598 nacho
                //Si el evento es sobre TX
340
                if(e.getSource() == dataPointPanel.getTX()){
341
                        if(e.getKeyCode() == 10){
342
                                txEvent();
343
                                return;
344 5217 nacho
                        }
345
346 5598 nacho
                        if(checkTextField(e.getKeyCode()))
347
                                lastBlockTx = tx;
348
                        else
349
                                dataPointPanel.getTX().setText(lastBlockTx);
350
                }
351 5217 nacho
352 5598 nacho
                //Si el evento es sobre TY
353
                if(e.getSource() == dataPointPanel.getTY()){
354
                        if(e.getKeyCode() == 10){
355
                                tyEvent();
356
                                return;
357 5217 nacho
                        }
358 5598 nacho
359
                        if(checkTextField(e.getKeyCode()))
360
                                lastBlockTy = ty;
361
                        else
362
                                dataPointPanel.getTY().setText(lastBlockTy);
363
                }
364
365
                //Si el evento es sobre Longitud
366
                if(e.getSource() == dataPointPanel.getLongitud()){
367
                        if(e.getKeyCode() == 10){
368
                                lonEvent();
369
                                return;
370 5217 nacho
                        }
371
372 5598 nacho
                        if(checkTextField(e.getKeyCode()))
373
                                lastBlockLong = lon;
374
                        else
375
                                dataPointPanel.getLongitud().setText(lastBlockLong);
376
                }
377
378
                //Si el evento es sobre Latitud
379
                if(e.getSource() == dataPointPanel.getLatitud()){
380
                        if(e.getKeyCode() == 10){
381
                                latEvent();
382
                                return;
383 5304 nacho
                        }
384 5217 nacho
385 5598 nacho
                        if(checkTextField(e.getKeyCode()))
386
                                lastBlockLat = lat;
387
                        else
388
                                dataPointPanel.getLatitud().setText(lastBlockLat);
389 5217 nacho
                }
390 5598 nacho
391 5217 nacho
        }
392
393
        /* (non-Javadoc)
394
         * @see java.awt.event.KeyListener#keyTyped(java.awt.event.KeyEvent)
395
         */
396
        public void keyTyped(KeyEvent e) {
397
                // TODO Auto-generated method stub
398
399
        }
400
401
        /* (non-Javadoc)
402
         * @see java.awt.event.FocusListener#focusGained(java.awt.event.FocusEvent)
403
         */
404
        public void focusGained(FocusEvent arg0) {
405
                // TODO Auto-generated method stub
406
407
        }
408
409
        /**
410
         * Cancela la selecci?n de puntos sobre la vista de forma gr?fica. Esta acci?n
411
         * conllevar? seleccionar la ?ltima herramienta del mapCtrl
412
         */
413
        private void abortSelectPoints(){
414 5598 nacho
                //Si todos los puntos est?n rellenos deseleccionamos la herramienta de selecci?n de puntos
415
                GeorefPointSelectorListener.firstPoint = true;
416
417
                //Activamos los controles de esta ya que habr? sido desactivados al llamar a newEmptyPoint
418
                GeoreferencingToolsModule.setEnabled(true);
419
420
                com.iver.cit.gvsig.gui.View theView = null;
421
                try{
422
                        theView = (com.iver.cit.gvsig.gui.View)PluginServices.getMDIManager().getActiveView();
423
                        theView.getMapControl().setTool(grd.getLyrPoints().getLastTool());
424
                }catch(ClassCastException exc){
425
                        //No se selecciona la herramienta
426
                }
427
        }
428
429
        /**
430
         * Validaci?n de que el par?metro tenga formato numerico y de si
431
         * este valor est? dentro de los l?mites de la imagen
432
         * @param tx Campo TX
433
         * @return true si es valido y false si no lo es
434
         */
435
        private boolean validateTX(String tx){
436
                double x = 0D;
437
                try{
438
                        x = Double.valueOf(tx).doubleValue();
439
                        if(x > grd.getLyrGeoRaster().getImageWidth() || x < 0)
440
                                throw new NumberFormatException();
441
                }catch(NumberFormatException exc){
442
                        //Si no es valido reponemos lastValue
443
                        dataPointPanel.getTX().setText(lastTx);
444
                        return false;
445
                }
446
447
                lastTx = tx;
448
                return true;
449
        }
450
451
452
        /**
453
         * Validaci?n de que el par?metro tenga formato numerico y de si
454
         * este valor est? dentro de los l?mites de la imagen
455
         * @param ty Campo TY
456
         * @return true si es valido y false si no lo es
457
         */
458
        private boolean validateTY(String ty){
459
                double y = 0D;
460
                try{
461
                        y = Double.valueOf(ty).doubleValue();
462
                        if(y > grd.getLyrGeoRaster().getImageHeight() || y < 0)
463
                                throw new NumberFormatException();
464
                }catch(NumberFormatException exc){
465
                        //Si no es valido reponemos lastValue
466
                        dataPointPanel.getTY().setText(lastTy);
467
                        return false;
468
                }
469
470
                lastTy = ty;
471
                return true;
472
        }
473
474
        /**
475
         * Validaci?n de que el par?metro tenga formato numerico
476
         * @param t Valor del campo
477
         * @return true si es valido y false si no lo es
478
         */
479
        private boolean validateNumericFormat(String field){
480
                double d = 0D;
481
                try{
482
                        d = Double.valueOf(field).doubleValue();
483
                }catch(NumberFormatException exc){
484
                        return false;
485
                }
486
                return true;
487
        }
488
489
        /**
490
         * Funci?n que se ejecuta cuando TX pierde el foco o se pulsa enter sobre
491
         * el JTextField
492
         */
493
        private void txEvent(){
494 5217 nacho
                String tx = dataPointPanel.getTX().getText();
495
                String ty = dataPointPanel.getTY().getText();
496 5598 nacho
497
                if(!validateTX(tx)) return;
498
499
                if(!ty.equals("")){
500
                        if(!validateTY(ty)) return;
501
                        else{
502
                                lastBlockTx = "";
503
                                //Llamamos a la funci?n que gestiona la entrada del primer punto
504
                                grd.getPointManager().selectFirstPoint(tx, ty);
505
                        }
506
                }
507
        }
508
509
        /**
510
         * Funci?n que se ejecuta cuando TY pierde el foco o se pulsa enter sobre
511
         * el JTextField
512
         */
513
        private void tyEvent(){
514
                String tx = dataPointPanel.getTX().getText();
515
                String ty = dataPointPanel.getTY().getText();
516
517
                if(!validateTY(ty)) return;
518
519
                if(!tx.equals("")){
520
                        if(!validateTX(tx)) return;
521
                        else{
522
                                lastBlockTy = "";
523
                                //Llamamos a la funci?n que gestiona la entrada del primer punto
524
                                grd.getPointManager().selectFirstPoint(tx, ty);
525
                        }
526
                }
527
        }
528
529
        /**
530
         * Funci?n que se ejecuta cuando el campo de texto Longitud pierde el foco o se
531
         * pulsa enter sobre el JTextField
532
         */
533
        private void lonEvent(){
534 5217 nacho
                String lon = dataPointPanel.getLongitud().getText();
535
                String lat = dataPointPanel.getLatitud().getText();
536
537 5598 nacho
                if(!validateNumericFormat(lon))
538
                        return;
539
540
                lastLong = lon;
541
                if(!lat.equals("")){
542
                        lastLat = lat;
543
                        lastBlockLat = "";
544
                        //Llamamos a la funci?n que gestiona la entrada del segundo punto
545
                        grd.getPointManager().selectSecondPoint(lon, lat);
546 5217 nacho
                }
547
        }
548
549
        /**
550 5598 nacho
         * Funci?n que se ejecuta cuando el campo de texto Latitud pierde el foco o se
551
         * pulsa enter sobre el JTextField
552
         */
553
        private void latEvent(){
554
                String lon = dataPointPanel.getLongitud().getText();
555
                String lat = dataPointPanel.getLatitud().getText();
556
557
                if(!validateNumericFormat(lon))
558
                        return;
559
560
                lastLat = lat;
561
                if(!lon.equals("")){
562
                        lastLong = lon;
563
                        lastBlockLong = "";
564
                        //Llamamos a la funci?n que gestiona la entrada del segundo punto
565
                        grd.getPointManager().selectSecondPoint(lon, lat);
566
                }
567
        }
568
569
        /**
570 5217 nacho
         * Los campos de texto de las coordenadas cuando pierden el foco actualizan el valor del pixel
571
         * en la cap, vista, mini imagen y tabla
572
         */
573 5598 nacho
        public void focusLost(FocusEvent e) {
574 5217 nacho
                String tx = dataPointPanel.getTX().getText();
575
                String ty = dataPointPanel.getTY().getText();
576
                String lon = dataPointPanel.getLongitud().getText();
577
                String lat = dataPointPanel.getLatitud().getText();
578
579 5598 nacho
                //Si el elemento que pierde el foco es TX
580
                if(e.getSource() == dataPointPanel.getTX())
581
                        txEvent();
582
583
                //Si el elemento que pierde el foco es TY
584
                if(e.getSource() == dataPointPanel.getTY())
585
                        tyEvent();
586
587
                //Si el elemento que pierde el foco es Longitud
588
                if(e.getSource() == dataPointPanel.getLongitud())
589
                        lonEvent();
590
591
                //Si el elemento que pierde el foco es Latitud
592
                if(e.getSource() == dataPointPanel.getLatitud())
593
                        latEvent();
594
595
                //Si est?n rellenos todos los campos restauramos los controles
596
                if(        !dataPointPanel.getTX().getText().equals("") &&
597
                        !dataPointPanel.getTY().getText().equals("") &&
598
                        !dataPointPanel.getLongitud().getText().equals("") &&
599
                        !dataPointPanel.getLatitud().getText().equals("")){
600
                                grd.getPointManager().restoreControlsValue();
601
                                this.abortSelectPoints();
602 5217 nacho
                }
603 5598 nacho
604 5217 nacho
        }
605
606
        //**********************End Methods*******************************
607
608
        //**********************Setters & Getters*************************
609
        /**
610
         * Extiende o pliega el panel inferior controlando el icono del bot?n. Si se
611
         * asigna true quiere decir que el panel est? desplegado, en este caso lo plegar?.
612
         * Si se asigna false quiere decir que el panel est? plegado, en este caso lo
613
         * desplegar?.
614
         * @param enlarge True para recogerlo y false para desplegarlo
615
         */
616
        public void setEnlarge(boolean enlarge){
617
                if(enlarge){
618
                        grd.setEnlarge(!enlarge);
619
                        bExtended.setIcon(new ImageIcon(getClass().getClassLoader().getResource(pathToImages + "down.png")));
620
                }else{
621
                        grd.setEnlarge(!enlarge);
622
                        bExtended.setIcon(new ImageIcon(getClass().getClassLoader().getResource(pathToImages + "up.png")));
623
                        if(lyrPoints != null){
624
                                //lyrPoints.getPointManager().selectPoint(tableControlerPanel.getSelectedIndex(), this.grd);
625
                                if(lyrPoints.isNewPoint(grd.getSelectedPoint())){
626
                                        grd.getConectorPanel().getAdjustGeorefPanel().getZoomLeft().setEnabled(false);
627
                                        grd.getConectorPanel().getAdjustGeorefPanel().getZoomRight().setEnabled(false);
628
                                }
629
                                grd.getZoomControlRight().draw();
630
                                grd.getZoomControlLeft().draw();
631
                        }
632
                }
633
        }
634
635
        /**
636
         * @return Returns the errorPointPanel.
637
         */
638
        public ErrorPointPanel getErrorPointPanel() {
639
                if(this.errorPointPanel == null)
640
                        errorPointPanel = new ErrorPointPanel();
641
                        errorPointPanel.setPreferredSize(new java.awt.Dimension(175,130));
642
                return errorPointPanel;
643
        }
644
        /**
645
         * @return Returns the lyrPoints.
646
         */
647
        public FLyrPoints getLyrPoints() {
648
                if(lyrPoints == null){
649
                        try{
650
                                loadLyrPoint();
651
                                        }catch(InstantiationException exc){
652
                                JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),
653
                                                PluginServices.getText(this, "error_capa_puntos"));
654
                        }
655
                }
656
                return lyrPoints;
657
        }
658
659
        /**
660
         * This method initializes jButton
661
         *
662
         * @return javax.swing.JButton
663
         */
664 5304 nacho
        public JButton getBExtended() {
665 5217 nacho
                if (bExtended == null) {
666
                        bExtended = new JButton();
667
                        bExtended.setPreferredSize(new java.awt.Dimension(42,22));
668
                        bExtended.setIcon(new ImageIcon(getClass().getClassLoader().getResource(pathToImages + "down.png")));
669 5447 nacho
                        bExtended.setToolTipText(PluginServices.getText(this, "plegar_despl"));
670 5217 nacho
                        bExtended.addActionListener(this);
671
                }
672
                return bExtended;
673
        }
674
675
        /**
676
         * This method initializes jPanel
677
         *
678
         * @return javax.swing.JPanel
679
         */
680
        private JPanel getPExtend() {
681
                if (pExtend == null) {
682
                        FlowLayout flowLayout21 = new FlowLayout();
683
                        pExtend = new JPanel();
684
                        pExtend.setLayout(flowLayout21);
685
                        flowLayout21.setHgap(0);
686
                        flowLayout21.setVgap(1);
687
                        flowLayout21.setAlignment(java.awt.FlowLayout.LEFT);
688
                        pExtend.setPreferredSize(new java.awt.Dimension(70,22));
689
                        pExtend.add(getBSelectFromView(), null);
690
                        pExtend.add(getBExtended(), null);
691
                }
692
                return pExtend;
693
        }
694
695
        /**
696
         * @return Returns the dataPointPanel.
697
         */
698
        public DataPointPanel getDataPointPanel() {
699
                return dataPointPanel;
700
        }
701
702
        /**
703
         * @param dataPointPanel The dataPointPanel to set.
704
         */
705
        public void setDataPointPanel(DataPointPanel dataPointPanel) {
706
                this.dataPointPanel = dataPointPanel;
707
        }
708
709
        /**
710
         * @return Returns the tableControlerPanel.
711
         */
712
        public TableControlerPanel getTableControlerPanel() {
713
                return tableControlerPanel;
714
        }
715
716
        /**
717
         * @param tableControlerPanel The tableControlerPanel to set.
718
         */
719
        public void setTableControlerPanel(TableControlerPanel tableControlerPanel) {
720
                this.tableControlerPanel = tableControlerPanel;
721
        }
722
723
        /**
724
         * This method initializes pGeneral
725
         *
726
         * @return javax.swing.JPanel
727
         */
728
        private JPanel getPGeneral() {
729
                if (pGeneral == null) {
730
                        GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
731
                        gridBagConstraints1.insets = new java.awt.Insets(0,0,0,0);
732
                        gridBagConstraints1.gridy = 0;
733
                        gridBagConstraints1.gridx = 0;
734
                        GridBagConstraints gridBagConstraints = new GridBagConstraints();
735
                        gridBagConstraints.insets = new java.awt.Insets(5,0,5,0);
736
                        gridBagConstraints.gridy = 1;
737
                        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
738
                        gridBagConstraints.gridheight = 1;
739
                        gridBagConstraints.gridx = 0;
740
                        pGeneral = new JPanel();
741
                        pGeneral.setLayout(new GridBagLayout());
742
                        pGeneral.setPreferredSize(new java.awt.Dimension(390,175));
743
                        gridBagConstraints.gridwidth = 1;
744
                        pGeneral.add(getPPointSelection(), gridBagConstraints);
745
                        pGeneral.add(getPControlPoint(), gridBagConstraints1);
746
                }
747
                return pGeneral;
748
        }
749
750
        /**
751
         * This method initializes pFileSelection
752
         *
753
         * @return javax.swing.JPanel
754
         */
755
        private JPanel getPPointSelection() {
756
                if (pPointSelection == null) {
757
                        //jLabel = new JLabel();
758
                        FlowLayout flowLayout1 = new FlowLayout();
759
                        FlowLayout flowLayout = new FlowLayout();
760
                        flowLayout.setVgap(-3);
761
                        flowLayout.setAlignment(java.awt.FlowLayout.LEFT);
762
                        pPointSelection = new JPanel();
763
                        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));
764
                        pPointSelection.setName("");
765
                        pPointSelection.setLayout(flowLayout);
766
                        pPointSelection.setPreferredSize(new java.awt.Dimension(375,27));
767
                        flowLayout.setHgap(0);
768
                        if(this.tableControlerPanel == null){
769
                                tableControlerPanel = new TableControlerPanel();
770
                                tableControlerPanel.setLayout(flowLayout1);
771
                                flowLayout1.setVgap(1);
772
                                flowLayout1.setHgap(0);
773
                                //jLabel.setVerticalAlignment(javax.swing.SwingConstants.CENTER);
774
                                //tableControlerPanel.setLNumberOfPoints(jLabel);
775
                                tableControlerPanel.getBFirst().addActionListener(this);
776
                                tableControlerPanel.getBLast().addActionListener(this);
777
                                tableControlerPanel.getBNext().addActionListener(this);
778
                                tableControlerPanel.getBPrev().addActionListener(this);
779
                                tableControlerPanel.getBNew().addActionListener(this);
780
                                tableControlerPanel.getCPoint().addActionListener(this);
781
                                tableControlerPanel.getBClear().addActionListener(this);
782
                                tableControlerPanel.getBDelPoint().addActionListener(this);
783
                        }
784
                        //pPointSelection.add(getPTableControl(), null);
785
                        pPointSelection.add(tableControlerPanel, null);
786
                        pPointSelection.add(getPExtend(), null);
787
                }
788
                return pPointSelection;
789
        }
790
791
        /**
792
         * This method initializes pControls
793
         *
794
         */
795
        private JPanel getPControlPoint() {
796
                if (pControlPoint == null) {
797
                        GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
798
                        GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
799
                        gridBagConstraints2.gridx = 0;
800
                        gridBagConstraints2.insets = new java.awt.Insets(0,0,0,0);
801
                        gridBagConstraints2.gridy = 0;
802
                        pControlPoint = new JPanel();
803
                        pControlPoint.setLayout(new GridBagLayout());
804
                        pControlPoint.setPreferredSize(new java.awt.Dimension(380,130));
805
                        pControlPoint.setBorder(javax.swing.BorderFactory.createEmptyBorder(0,0,0,0));
806
                        gridBagConstraints11.gridy = 0;
807
                        gridBagConstraints11.gridx = 1;
808
                        if(this.dataPointPanel == null){
809
                                dataPointPanel = new DataPointPanel();
810
                                dataPointPanel.setPreferredSize(new java.awt.Dimension(200,130));
811
                                dataPointPanel.getTX().addKeyListener(this);
812
                                dataPointPanel.getTY().addKeyListener(this);
813
                                dataPointPanel.getLatitud().addKeyListener(this);
814
                                dataPointPanel.getLongitud().addKeyListener(this);
815
                                dataPointPanel.getTX().addFocusListener(this);
816
                                dataPointPanel.getTY().addFocusListener(this);
817
                                dataPointPanel.getLatitud().addFocusListener(this);
818
                                dataPointPanel.getLongitud().addFocusListener(this);
819
                        }
820
                        pControlPoint.add(dataPointPanel, gridBagConstraints2);
821
822
                        getErrorPointPanel();
823
                        pControlPoint.add(errorPointPanel, gridBagConstraints11);
824
                }
825
                return pControlPoint;
826
        }
827
828
        /**
829
         * Asigna la ruta donde est?n las imagenes
830
         * @param pathToImages
831
         */
832
        public void setPathToImages(String pathToImages) {
833
                this.pathToImages = pathToImages;
834
        }
835
836
        /**
837
         * Obtiene el ?ltimo indice seleccionado de la lista de puntos
838
         * @return entero con el ?ltimo indice seleccionado de la lista de puntos
839
         */
840
        public int getLastIndexSelection() {
841
                return lastIndexSelection;
842
        }
843
844
        /**
845
         * Asigna el ?ltimo indice seleccionado de la lista de puntos
846
         * @param entero con el ?ltimo indice seleccionado de la lista de puntos
847
         */
848
        public void setLastIndexSelection(int lastIndexSelection) {
849
                this.lastIndexSelection = lastIndexSelection;
850
        }
851
852
        /**
853
     * Activa o desactiva este panel y todos los que lo componen
854
     * @param enabled variable booleana para la activaci?n y/o desactivaci?n
855
     */
856
    public void setEnabled(boolean enabled){
857
            this.dataPointPanel.setEnabled(enabled);
858
            this.errorPointPanel.setEnabled(enabled);
859
            this.tableControlerPanel.setEnabled(enabled);
860
            this.getBSelectFromView().setEnabled(enabled);
861
    }
862
        //**********************End Setters & Getters*********************
863
 }