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
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
import javax.xml.transform.TransformerException;
21

    
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
import com.iver.cit.gvsig.fmap.layers.FLyrPoints;
29
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
        /**
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
        //**********************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
                try{
107
                        tableControlerPanel.getCPoint().setSelectedIndex(pointSelected);
108
                }catch(IllegalArgumentException ex){
109
                        
110
                }
111
                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
                errorPointPanel.resetControls(null);
143
                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
                        
225
        /**
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
                if(e.getSource() == tableControlerPanel.getBNew()){
270
                        grd.getPointManager().newEmptyPoint();
271
                        //Desactivamos todos los controles para centrar la visi?n del usuario
272
                        //sobre la introducci?n de puntos
273
                        grd.getPointManager().disableAllControls();
274
                }
275
                                
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
        
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
        }
325
        
326
        /**
327
         * Control de eventos de las entradas de texto de los puntos
328
         */
329
        public void keyReleased(KeyEvent e) {
330
                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
                //Campo de texto de la coordenada X en pixeles
336
                Point2D pixel = null;
337
                Point2D map = null;
338
                
339
                //Si el evento es sobre TX
340
                if(e.getSource() == dataPointPanel.getTX()){
341
                        if(e.getKeyCode() == 10){
342
                                txEvent();
343
                                return;
344
                        }
345
                        
346
                        if(checkTextField(e.getKeyCode()))
347
                                lastBlockTx = tx;
348
                        else
349
                                dataPointPanel.getTX().setText(lastBlockTx);
350
                }
351
                
352
                //Si el evento es sobre TY                        
353
                if(e.getSource() == dataPointPanel.getTY()){
354
                        if(e.getKeyCode() == 10){
355
                                tyEvent();
356
                                return;
357
                        }
358
                        
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
                        }
371
                        
372
                        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
                        }
384
                        
385
                        if(checkTextField(e.getKeyCode()))
386
                                lastBlockLat = lat;
387
                        else
388
                                dataPointPanel.getLatitud().setText(lastBlockLat);
389
                }
390
                                
391
        }
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
                //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
                String tx = dataPointPanel.getTX().getText();
495
                String ty = dataPointPanel.getTY().getText();
496
                
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
                String lon = dataPointPanel.getLongitud().getText();
535
                String lat = dataPointPanel.getLatitud().getText();
536
                
537
                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
                }
547
        }
548
        
549
        /**
550
         * 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
         * 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
        public void focusLost(FocusEvent e) {
574
                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
                //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
                }
603
                                
604
        }
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
        public JButton getBExtended() {
665
                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
                        bExtended.setToolTipText(PluginServices.getText(this, "plegar_despl"));
670
                        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
 }