Statistics
| Revision:

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

History | View | Annotate | Download (25.6 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

    
21
import org.gvsig.georeferencing.GeoreferencingToolsModule;
22
import org.gvsig.georeferencing.gui.dialogs.GeoreferencingDialog;
23
import org.gvsig.georeferencing.gui.listeners.GeorefPointSelectorListener;
24
import org.gvsig.georeferencing.gui.pointsTable.TableControlerPanel;
25
import org.gvsig.georeferencing.layers.FLyrPoints;
26

    
27
import com.iver.andami.PluginServices;
28
import com.iver.cit.gvsig.gui.View;
29

    
30
public class SelectPointsPanel extends JPanel implements ActionListener, KeyListener, FocusListener{
31

    
32
        //**********************Vars**********************************
33
        private String                                        pathToImages = "images/"; //"/com/iver/cit/gvsig/gui/panels/images/";
34
        private JPanel                                         pGeneral = null;
35
        private JPanel                                         pPointSelection = null;
36
        private JPanel                                         pControlPoint = null;
37
        private JButton                                 bSelectFromView = null;
38
        private FLyrPoints                                 lyrPoints = null;
39
        //private boolean                                 disableEvent = false;
40
        private int                                                lastIndexSelection = -1;
41
        private JButton                                 bExtended = null;
42
        private JPanel                                         pExtend = null;
43
        private TableControlerPanel         tableControlerPanel = null;
44
        private DataPointPanel                         dataPointPanel = null;
45
        private ErrorPointPanel                 errorPointPanel = null;
46
        private GeoreferencingDialog        grd = null;
47
        private boolean                                 update = false;
48
        /**
49
         * Valores ?ltimos que se han introducido en los JTextField para poder reponerlos.
50
         */
51
        public String                                         lastTx = "", lastTy = "", lastLong = "", lastLat = "";
52
        //**********************End Vars********************************
53
        
54
        //**********************Methods*********************************
55
        /**
56
         * Contructor. Inicializa el panel.
57
         */
58
        public SelectPointsPanel() {
59
                super();
60
                initialize();
61
        }
62
        
63
        /**
64
         * This is the default constructor
65
         */
66
        public SelectPointsPanel(GeoreferencingDialog grd) {
67
                super();
68
                initialize();
69
                this.grd = grd;
70
        }
71
        
72
        /**
73
         * This method initializes this
74
         * 
75
         * @return void
76
         */
77
        private void initialize() {
78
        this.setPreferredSize(new java.awt.Dimension(390,175));
79
        this.setSize(new java.awt.Dimension(390,175));
80
        this.setLocation(new java.awt.Point(0,0));
81
        this.add(getPGeneral(), null);
82
        }
83
                
84
        /**
85
         * Actualiza el n?mero de puntos del combo a partir de los contenidos en
86
         * la capa de puntos. Esta funci?n es usada desde otros paneles que cambien
87
         * el punto seleccionado para comunicar al control la nueva selecci?n.
88
         */
89
        public void updateComboPoint(int pointSelected){
90
                //disableEvent = true;
91
                try{
92
                        loadLyrPoint();
93
                }catch(InstantiationException exc){
94
                    JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),
95
                                        PluginServices.getText(this, "error_capa_puntos"));
96
                    return;
97
            }
98
                
99
                tableControlerPanel.setNItems(lyrPoints.getCountPoints());
100
                tableControlerPanel.getCPoint().setSelectedIndex(pointSelected);
101
                tableControlerPanel.checkArrows();
102
                lyrPoints.getPointManager().selectPoint(pointSelected, this.grd);
103
                //disableEvent = false;
104
        }
105
        
106
        /**
107
         * Comprueba si los valores de un punto en los campos de texto est?n
108
         * vacios y lanza una excepci?n si hay alguno sin informaci?n.
109
         * @throws NoSuchFieldException
110
         */
111
        public void checkInfoPointText()throws NoSuchFieldException{
112
                if(        dataPointPanel.getTX().getText().equals("") ||
113
                                dataPointPanel.getTY().getText().equals("") ||
114
                                dataPointPanel.getLatitud().getText().equals("") ||
115
                                dataPointPanel.getLongitud().getText().equals("")){
116
                                //disableEvent = true;
117
                                try{
118
                                        tableControlerPanel.getCPoint().setSelectedIndex(lastIndexSelection);
119
                                        //disableEvent = false;
120
                                }catch(IllegalArgumentException ex){
121
                                        //Si el lastIndex tiene un valor erroneo no hacemos ninguna selecci?n
122
                                }
123
                                throw new NoSuchFieldException();
124
                }
125
        }
126
                
127
        /**
128
         * Esta funci?n resetea los controles del panel de info de un punto.
129
         */
130
        public void resetControls(boolean active){
131
                dataPointPanel.resetControls(null);
132
                getBSelectFromView().setEnabled(active);
133
                getTableControlerPanel().getBClear().setEnabled(active);
134
                getTableControlerPanel().getBDelPoint().setEnabled(active);
135
                if(!active)
136
                        getTableControlerPanel().resetControls();
137
        }
138
        
139
        /**
140
         * Cuando pasamos de un punto a otro o se va a crear uno nuevo
141
         * <UL>
142
         * <LI>Cargamos la capa FLyrPoint si no est? ya cargada.</LI>
143
         * <LI>Comprobamos que los campos no esten vacios y lanzamos una excepci?n si hay alg?n campo vacio si lo est?n.</LI>
144
         * <LI>Insertamos el nuevo punto seleccionado en los campos de informaci?n.</LI>
145
         * <LI>Checkeamos las flechas para ver si tenemos que activarlas o desactivarlas.</LI>
146
         * </UL>
147
         * @param changeSelection        Cambia la posici?n seleccionada del combo si es true
148
         * @param pos        Posici?n a la que cambia el combo si el parametro chageSelection es true
149
         */
150
        public void changePoint(boolean changeSelection, int pos){
151
            try{
152
                    loadLyrPoint();
153
                    checkInfoPointText();                        
154
                if(changeSelection){
155
                        lastIndexSelection = pos;
156
                        tableControlerPanel.setSelectedIndex(pos);
157
                }
158
                lyrPoints.getPointManager().selectPoint(tableControlerPanel.getSelectedIndex(), this.grd);
159
                tableControlerPanel.checkArrows();
160
            }catch(NoSuchFieldException exc){
161
                    JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),
162
                                        PluginServices.getText(this, "coordenadas_vacias"));
163
            }catch(InstantiationException e){
164
                        JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),
165
                                        PluginServices.getText(this, "error_capa_puntos"));
166
                }
167
        }
168
        
169
        /**
170
         * Obtiene una capa de puntos. Si no existe crea una.
171
         * @return
172
         */
173
        private void loadLyrPoint() throws InstantiationException{
174
                if(lyrPoints == null){
175
                        lyrPoints = this.grd.getLyrPoints();
176
                        if(lyrPoints == null)
177
                                throw new InstantiationException();
178
                }
179
        }
180
        
181
        /**
182
         * Este m?todo inicializa el bot?n seleccionar desde la vista. Cuando lo 
183
         * activamos se carga la herramienta de selecci?n de puntos desde la vista. 
184
         *         
185
         * @return javax.swing.JButton        
186
         */    
187
        public JButton getBSelectFromView() {
188
                if (bSelectFromView == null) {
189
                        bSelectFromView = new JButton();
190
                        bSelectFromView.setText("");
191
                        bSelectFromView.setPreferredSize(new java.awt.Dimension(22,22));
192
                        bSelectFromView.setIcon(new ImageIcon(getClass().getClassLoader().getResource(pathToImages + "selectfromview.png")));
193
                        bSelectFromView.setEnabled(false);
194
                        bSelectFromView.setToolTipText(PluginServices.getText(this, "selectfromview"));
195
                        bSelectFromView.addActionListener(new java.awt.event.ActionListener() { 
196
                                public void actionPerformed(java.awt.event.ActionEvent e) {
197
                                        View theView = (View) PluginServices.getMDIManager().getActiveView();
198
                                        try{
199
                                                loadLyrPoint();
200
                                                lyrPoints.setLastTool(theView.getMapControl().getTool());
201
                                                GeorefPointSelectorListener.posPoint = tableControlerPanel.getSelectedIndex();
202
                                                GeorefPointSelectorListener.firstPoint = true;
203
                                                theView.getMapControl().setTool("pointLyrSelection");
204
                                        }catch(InstantiationException exc){
205
                                                JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),
206
                                                                PluginServices.getText(this, "error_capa_puntos"));
207
                                        }
208
                                }
209
                        });
210
                }
211
                return bSelectFromView;
212
        }
213
        
214
        /**
215
         * Checkea un textField para que contenga caracteres validos. Consideramos validos
216
         * los caracteres del 0 al 9, el punto, DEL, Supr, flechas y Enter teniendo en cuenta que el 
217
         * c?digo ascii del teclado numerico es distinto.
218
         */
219
        public boolean checkTextField(JTextField tf, int code, String lastText){
220
                
221
                //Si el caracter es erroneo pasamos de el y reponemos el texto que habia
222
                if(        (code >= 0 && code <= 7) || 
223
                        code == 9 || 
224
                        (code >= 11 && code <= 36) ||
225
                        (code >= 41 && code <= 45) ||
226
                        code == 47 ||
227
                        (code >= 58 && code <= 95) ||
228
                        (code >= 106 && code <= 109) ||
229
                        (code >= 111 && code <= 126) ||
230
                        code >= 128){
231
                        tf.setText(lastText);
232
                        return false;
233
                }
234
                
235
                return true;
236
        }
237
                
238
        /**
239
         * Control de eventos de TableControlerPanel
240
         */
241
        public void actionPerformed(ActionEvent e) {
242
                
243
                //Bot?n de ir al punto inicial
244
                if(e.getSource() == tableControlerPanel.getBFirst()){
245
                        if(tableControlerPanel.getItemCount() >= 1)
246
                                changePoint(true, 0);
247
                }
248
                
249
                //Bot?n de ir al punto anterior
250
                if(e.getSource() == tableControlerPanel.getBPrev()){
251
                        if(tableControlerPanel.getSelectedIndex() != 0)                                 
252
                               changePoint(true, tableControlerPanel.getSelectedIndex() - 1);
253
                }
254
                
255
                //Bot?n de ir al punto siguiente
256
                if(e.getSource() == tableControlerPanel.getBNext()){
257
                        if(tableControlerPanel.getSelectedIndex() != (tableControlerPanel.getItemCount() - 1))
258
                        changePoint(true, tableControlerPanel.getSelectedIndex() + 1);
259
                
260
                }
261
                
262
                //Bot?n de ir al punto final
263
                if(e.getSource() == tableControlerPanel.getBLast()){
264
                        if(tableControlerPanel.getItemCount() >= 1)
265
                                changePoint(true, tableControlerPanel.getItemCount() - 1);
266
                }
267
                
268
                //Combo de selecci?n de punto
269
                if(e.getSource() == tableControlerPanel.getCPoint()){
270
                        if(tableControlerPanel.getSelectedIndex() != -1){
271
                                try{ 
272
                                        loadLyrPoint();
273
                                }catch(InstantiationException exc){
274
                                        return;
275
                                }
276
                                lyrPoints.getPointManager().selectPoint(tableControlerPanel.getSelectedIndex(), grd);
277
                                tableControlerPanel.checkArrows();
278
                        }
279
                }
280
                
281
                //Bot?n de nuevo punto
282
                if(e.getSource() == tableControlerPanel.getBNew())
283
                        grd.getPointManager().newEmptyPoint();
284
                                
285
                TableControlerPanel ctrlPanel = grd.getConectorPanel().getDataPointsTabPanel().getTablePointsPanel().getTableControlerPanel();
286
                
287
                //Bot?n de eliminado de todos los puntos
288
                if(        e.getSource() == getTableControlerPanel().getBClear() ||
289
                        e.getSource() == ctrlPanel.getBClear()){
290
                        grd.getPointManager().deleteAllPoints();
291
                }
292
                
293
                //Bot?n de eliminado de un punto
294
                if(e.getSource() == getTableControlerPanel().getBDelPoint() ||
295
                                e.getSource() == ctrlPanel.getBDelPoint()){
296
                        grd.getPointManager().deletePoint();
297
                }
298
                
299
                //Bot?n de extensi?n del cuadro de dialogo
300
                if(e.getSource() == this.getBExtended())
301
                        this.setEnlarge(grd.isEnlarge());
302
                
303
        }
304

    
305
        /* (non-Javadoc)
306
         * @see java.awt.event.KeyListener#keyPressed(java.awt.event.KeyEvent)
307
         */
308
        public void keyPressed(KeyEvent e) {
309
                // TODO Auto-generated method stu
310
        }
311

    
312
        /**
313
         * Actualiza los valores del punto nuevo introducido desde el teclado llamando a la funci?n
314
         * de la capa updataData que actualizar? los controles necesarios para que se refresquen la vista
315
         * mini imagenes, textfields, tabla y capa de puntos. 
316
         * @param pixel Pixel de la imagen
317
         * @param map Coordenadas de la vista.
318
         */
319
        private void updatePointsValue(Point2D pixel, Point2D map){
320
                
321
                //Si se modifica el pixel tenemos que controlar que no se salga de la imagen.
322
                //Si se sale avisamos y reponemos su valor.
323
                if( pixel != null &&
324
                        (pixel.getX() < 0 || 
325
                        pixel.getX() > grd.getLyrGeoRaster().getImageWidth() ||
326
                        pixel.getY() < 0 || 
327
                        pixel.getY() > grd.getLyrGeoRaster().getImageHeight())){
328
                                JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),
329
                                                PluginServices.getText(this, "fuera_de_extent"));
330
                                dataPointPanel.getTX().setText(lastTx);
331
                                dataPointPanel.getTY().setText(lastTy);
332
                                dataPointPanel.getLatitud().setText(lastLat);
333
                                dataPointPanel.getLongitud().setText(lastLong);
334
                                update = false;
335
                                return;
336
                        }
337
                
338
                //Capturamos los ?ltimos valores de los JtextField por si hay que reponerlos
339
                if(pixel != null){
340
                        if( !lastTx.equals(dataPointPanel.getTX().getText()) )
341
                                lastTx = dataPointPanel.getTX().getText();
342
                        if( !lastTy.equals(dataPointPanel.getTY().getText()) )
343
                                lastTy = dataPointPanel.getTY().getText();
344
                }
345
                
346
                if(map != null){
347
                        if( !lastLat.equals(dataPointPanel.getLatitud().getText()) )
348
                                lastLat = dataPointPanel.getLatitud().getText();
349
                        if( !lastLong.equals(dataPointPanel.getLongitud().getText()) )
350
                                lastLong = dataPointPanel.getLongitud().getText();
351
                }
352
                
353
                View theView = null;
354
                try{
355
                        theView = (View)PluginServices.getMDIManager().getActiveView();
356
                }catch(ClassCastException exc){
357
                        return;
358
                }                
359
                
360
                //Actualizamos los puntos
361
                grd.getPointManager().updateData(Integer.valueOf(this.grd.getSelectPointsPanel().getTableControlerPanel().getSelectedItem()).intValue(),
362
                                                                                                                pixel, 
363
                                                                                                                map, 
364
                                                                                                                this.grd,
365
                                                                                                                theView);
366
                update = false;
367
                
368
        }
369
        
370
        /**
371
         * Control de eventos de las entradas de texto de los puntos
372
         */
373
        public void keyReleased(KeyEvent e) {
374
                //Campo de texto de la coordenada X en pixeles
375
                Point2D pixel = null;
376
                Point2D map = null;
377
                
378
                try{
379
                        if(e.getSource() == dataPointPanel.getTX()){
380
                                if(checkTextField(dataPointPanel.getTX(), e.getKeyCode(), lastTx)){
381
                                        pixel = new Point2D.Double();
382
                                        pixel.setLocation(        Double.valueOf(dataPointPanel.getTX().getText()).doubleValue(), 
383
                                                                                Double.valueOf(dataPointPanel.getTY().getText()).doubleValue());
384
                                        
385
                                        if(e.getKeyCode() == 10)
386
                                                update = true;
387
                                }
388
                        }
389
                        
390
                        //Campo de texto de la coordenada Y en pixeles
391
                        if(e.getSource() == dataPointPanel.getTY()){
392
                                if(checkTextField(dataPointPanel.getTY(), e.getKeyCode(), lastTy)){
393
                                        pixel = new Point2D.Double();
394
                                        pixel.setLocation(        Double.valueOf(dataPointPanel.getTX().getText()).doubleValue(), 
395
                                                                                Double.valueOf(dataPointPanel.getTY().getText()).doubleValue());
396
                
397
                                        if(e.getKeyCode() == 10)
398
                                                update = true;
399
                                }
400
                        }
401
        
402
                        //Campo de texto de la coordenada X en coordenadas del mundo
403
                        if(e.getSource() == dataPointPanel.getLatitud()){
404
                                if(checkTextField(dataPointPanel.getLatitud(), e.getKeyCode(), lastLat)){
405
                                        map = new Point2D.Double();
406
                                        map.setLocation(        Double.valueOf(dataPointPanel.getLongitud().getText()).doubleValue(), 
407
                                                                                Double.valueOf(dataPointPanel.getLatitud().getText()).doubleValue());
408
                                        if(e.getKeyCode() == 10)
409
                                                update = true;
410
                                }
411
                        }
412
        
413
                        //Campo de texto de la coordenada Y en coordenadas del mundo
414
                        if(e.getSource() == dataPointPanel.getLongitud()){
415
                                if(checkTextField(dataPointPanel.getLongitud(), e.getKeyCode(), lastLong)){
416
                                        map = new Point2D.Double();
417
                                        map.setLocation(        Double.valueOf(dataPointPanel.getLongitud().getText()).doubleValue(), 
418
                                                                                Double.valueOf(dataPointPanel.getLatitud().getText()).doubleValue());
419
                                        if(e.getKeyCode() == 10)
420
                                                update = true;
421
                                }
422
                        }
423
                        
424
                        if(update)
425
                                this.updatePointsValue(pixel, map);
426
                        
427
                        this.abortSelectPoints();
428
                        
429
                }catch(NumberFormatException exc){
430
                        System.out.println("Formato numerico erroneo");
431
                }
432
                
433
        }
434

    
435
        /* (non-Javadoc)
436
         * @see java.awt.event.KeyListener#keyTyped(java.awt.event.KeyEvent)
437
         */
438
        public void keyTyped(KeyEvent e) {
439
                // TODO Auto-generated method stub
440
                
441
        }
442
        
443
        /* (non-Javadoc)
444
         * @see java.awt.event.FocusListener#focusGained(java.awt.event.FocusEvent)
445
         */
446
        public void focusGained(FocusEvent arg0) {
447
                // TODO Auto-generated method stub
448

    
449
        }
450
        
451
        /**
452
         * Cancela la selecci?n de puntos sobre la vista de forma gr?fica. Esta acci?n
453
         * conllevar? seleccionar la ?ltima herramienta del mapCtrl
454
         */
455
        private void abortSelectPoints(){
456
                String tx = dataPointPanel.getTX().getText();
457
                String ty = dataPointPanel.getTY().getText();
458
                String lon = dataPointPanel.getLongitud().getText();
459
                String lat = dataPointPanel.getLatitud().getText();
460
                
461
                if(!tx.equals("") && !ty.equals("") && !lon.equals("") && !lat.equals("")){
462
                        //Si todos los puntos est?n rellenos deseleccionamos la herramienta de selecci?n de puntos
463
                        GeorefPointSelectorListener.firstPoint = true;
464
                        //Activamos los controles de esta ya que habr? sido desactivados al llamar a newEmptyPoint
465
                        GeoreferencingToolsModule.setEnabled(true);
466
                        com.iver.cit.gvsig.gui.View theView = null;
467
                        try{
468
                                theView = (com.iver.cit.gvsig.gui.View)PluginServices.getMDIManager().getActiveView();
469
                                theView.getMapControl().setTool(grd.getLyrPoints().getLastTool());
470
                        }catch(ClassCastException exc){
471
                                //No se selecciona la herramienta
472
                        }
473
                }
474
        }
475
        
476
        /**
477
         * Los campos de texto de las coordenadas cuando pierden el foco actualizan el valor del pixel
478
         * en la cap, vista, mini imagen y tabla
479
         */
480
        public void focusLost(FocusEvent arg0) {
481
                String tx = dataPointPanel.getTX().getText();
482
                String ty = dataPointPanel.getTY().getText();
483
                String lon = dataPointPanel.getLongitud().getText();
484
                String lat = dataPointPanel.getLatitud().getText();
485
                
486
                if(!tx.equals("") && !ty.equals("") && !lon.equals("") && !lat.equals("")){
487
                        Point2D pixel = new Point2D.Double();
488
                        Point2D map = new Point2D.Double();
489
                        pixel.setLocation(Double.valueOf(tx).doubleValue(),
490
                                                          Double.valueOf(ty).doubleValue());
491
                        map.setLocation(Double.valueOf(lon).doubleValue(),
492
                                                        Double.valueOf(lat).doubleValue());
493
                        //Si update es true significa q se ha pulsado Enter por lo q ya se est? actualizando
494
                        //y no hace falta que se haga de nuevo pq podr?a salir un mensaje de error dos veces
495
                        if(!update)
496
                                this.updatePointsValue(pixel, map);
497
                        this.abortSelectPoints();                        
498
                }
499
        }
500

    
501
        //**********************End Methods*******************************
502
        
503
        //**********************Setters & Getters*************************
504
        /**
505
         * Extiende o pliega el panel inferior controlando el icono del bot?n. Si se
506
         * asigna true quiere decir que el panel est? desplegado, en este caso lo plegar?.
507
         * Si se asigna false quiere decir que el panel est? plegado, en este caso lo 
508
         * desplegar?.
509
         * @param enlarge True para recogerlo y false para desplegarlo
510
         */
511
        public void setEnlarge(boolean enlarge){
512
                if(enlarge){
513
                        grd.setEnlarge(!enlarge);
514
                        bExtended.setIcon(new ImageIcon(getClass().getClassLoader().getResource(pathToImages + "down.png")));
515
                }else{
516
                        grd.setEnlarge(!enlarge);
517
                        bExtended.setIcon(new ImageIcon(getClass().getClassLoader().getResource(pathToImages + "up.png")));
518
                        if(lyrPoints != null){
519
                                //lyrPoints.getPointManager().selectPoint(tableControlerPanel.getSelectedIndex(), this.grd);
520
                                if(lyrPoints.isNewPoint(grd.getSelectedPoint())){
521
                                        grd.getConectorPanel().getAdjustGeorefPanel().getZoomLeft().setEnabled(false);
522
                                        grd.getConectorPanel().getAdjustGeorefPanel().getZoomRight().setEnabled(false);
523
                                }
524
                                grd.getZoomControlRight().draw();
525
                                grd.getZoomControlLeft().draw();
526
                        }
527
                }
528
        }
529
        
530
        /**
531
         * @return Returns the errorPointPanel.
532
         */
533
        public ErrorPointPanel getErrorPointPanel() {
534
                if(this.errorPointPanel == null)
535
                        errorPointPanel = new ErrorPointPanel();
536
                        errorPointPanel.setPreferredSize(new java.awt.Dimension(175,130));
537
                return errorPointPanel;
538
        }
539
        /**
540
         * @return Returns the lyrPoints.
541
         */
542
        public FLyrPoints getLyrPoints() {
543
                if(lyrPoints == null){
544
                        try{
545
                                loadLyrPoint();
546
                                        }catch(InstantiationException exc){
547
                                JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),
548
                                                PluginServices.getText(this, "error_capa_puntos"));
549
                        }
550
                }
551
                return lyrPoints;
552
        }
553
        
554
        /**
555
         * This method initializes jButton        
556
         *         
557
         * @return javax.swing.JButton        
558
         */    
559
        private JButton getBExtended() {
560
                if (bExtended == null) {
561
                        bExtended = new JButton();
562
                        bExtended.setPreferredSize(new java.awt.Dimension(42,22));
563
                        bExtended.setIcon(new ImageIcon(getClass().getClassLoader().getResource(pathToImages + "down.png")));
564
                        bExtended.addActionListener(this);
565
                }
566
                return bExtended;
567
        }
568
        
569
        /**
570
         * This method initializes jPanel        
571
         *         
572
         * @return javax.swing.JPanel        
573
         */    
574
        private JPanel getPExtend() {
575
                if (pExtend == null) {
576
                        FlowLayout flowLayout21 = new FlowLayout();
577
                        pExtend = new JPanel();
578
                        pExtend.setLayout(flowLayout21);
579
                        flowLayout21.setHgap(0);
580
                        flowLayout21.setVgap(1);
581
                        flowLayout21.setAlignment(java.awt.FlowLayout.LEFT);
582
                        pExtend.setPreferredSize(new java.awt.Dimension(70,22));
583
                        pExtend.add(getBSelectFromView(), null);
584
                        pExtend.add(getBExtended(), null);
585
                }
586
                return pExtend;
587
        }
588

    
589
        /**
590
         * @return Returns the dataPointPanel.
591
         */
592
        public DataPointPanel getDataPointPanel() {
593
                return dataPointPanel;
594
        }
595

    
596
        /**
597
         * @param dataPointPanel The dataPointPanel to set.
598
         */
599
        public void setDataPointPanel(DataPointPanel dataPointPanel) {
600
                this.dataPointPanel = dataPointPanel;
601
        }
602
        
603
        /**
604
         * @return Returns the tableControlerPanel.
605
         */
606
        public TableControlerPanel getTableControlerPanel() {
607
                return tableControlerPanel;
608
        }
609

    
610
        /**
611
         * @param tableControlerPanel The tableControlerPanel to set.
612
         */
613
        public void setTableControlerPanel(TableControlerPanel tableControlerPanel) {
614
                this.tableControlerPanel = tableControlerPanel;
615
        }
616
        
617
        /**
618
         * This method initializes pGeneral        
619
         *         
620
         * @return javax.swing.JPanel        
621
         */
622
        private JPanel getPGeneral() {
623
                if (pGeneral == null) {
624
                        GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
625
                        gridBagConstraints1.insets = new java.awt.Insets(0,0,0,0);
626
                        gridBagConstraints1.gridy = 0;
627
                        gridBagConstraints1.gridx = 0;
628
                        GridBagConstraints gridBagConstraints = new GridBagConstraints();
629
                        gridBagConstraints.insets = new java.awt.Insets(5,0,5,0);
630
                        gridBagConstraints.gridy = 1;
631
                        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
632
                        gridBagConstraints.gridheight = 1;
633
                        gridBagConstraints.gridx = 0;
634
                        pGeneral = new JPanel();
635
                        pGeneral.setLayout(new GridBagLayout());
636
                        pGeneral.setPreferredSize(new java.awt.Dimension(390,175));
637
                        gridBagConstraints.gridwidth = 1;
638
                        pGeneral.add(getPPointSelection(), gridBagConstraints);
639
                        pGeneral.add(getPControlPoint(), gridBagConstraints1);
640
                }
641
                return pGeneral;
642
        }
643

    
644
        /**
645
         * This method initializes pFileSelection        
646
         *         
647
         * @return javax.swing.JPanel        
648
         */
649
        private JPanel getPPointSelection() {
650
                if (pPointSelection == null) {
651
                        //jLabel = new JLabel();
652
                        FlowLayout flowLayout1 = new FlowLayout();
653
                        FlowLayout flowLayout = new FlowLayout();
654
                        flowLayout.setVgap(-3);
655
                        flowLayout.setAlignment(java.awt.FlowLayout.LEFT);
656
                        pPointSelection = new JPanel();
657
                        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));
658
                        pPointSelection.setName("");
659
                        pPointSelection.setLayout(flowLayout);
660
                        pPointSelection.setPreferredSize(new java.awt.Dimension(375,27));
661
                        flowLayout.setHgap(0);
662
                        if(this.tableControlerPanel == null){
663
                                tableControlerPanel = new TableControlerPanel();
664
                                tableControlerPanel.setLayout(flowLayout1);
665
                                flowLayout1.setVgap(1);
666
                                flowLayout1.setHgap(0);
667
                                //jLabel.setVerticalAlignment(javax.swing.SwingConstants.CENTER);
668
                                //tableControlerPanel.setLNumberOfPoints(jLabel);
669
                                tableControlerPanel.getBFirst().addActionListener(this);
670
                                tableControlerPanel.getBLast().addActionListener(this);
671
                                tableControlerPanel.getBNext().addActionListener(this);
672
                                tableControlerPanel.getBPrev().addActionListener(this);
673
                                tableControlerPanel.getBNew().addActionListener(this);
674
                                tableControlerPanel.getCPoint().addActionListener(this);
675
                                tableControlerPanel.getBClear().addActionListener(this);
676
                                tableControlerPanel.getBDelPoint().addActionListener(this);
677
                        }
678
                        //pPointSelection.add(getPTableControl(), null);
679
                        pPointSelection.add(tableControlerPanel, null);
680
                        pPointSelection.add(getPExtend(), null);
681
                }
682
                return pPointSelection;
683
        }
684

    
685
        /**
686
         * This method initializes pControls        
687
         *                 
688
         */
689
        private JPanel getPControlPoint() {
690
                if (pControlPoint == null) {
691
                        GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
692
                        GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
693
                        gridBagConstraints2.gridx = 0;
694
                        gridBagConstraints2.insets = new java.awt.Insets(0,0,0,0);
695
                        gridBagConstraints2.gridy = 0;
696
                        pControlPoint = new JPanel();
697
                        pControlPoint.setLayout(new GridBagLayout());
698
                        pControlPoint.setPreferredSize(new java.awt.Dimension(380,130));
699
                        pControlPoint.setBorder(javax.swing.BorderFactory.createEmptyBorder(0,0,0,0));
700
                        gridBagConstraints11.gridy = 0;
701
                        gridBagConstraints11.gridx = 1;
702
                        if(this.dataPointPanel == null){
703
                                dataPointPanel = new DataPointPanel();
704
                                dataPointPanel.setPreferredSize(new java.awt.Dimension(200,130));
705
                                dataPointPanel.getTX().addKeyListener(this);
706
                                dataPointPanel.getTY().addKeyListener(this);
707
                                dataPointPanel.getLatitud().addKeyListener(this);
708
                                dataPointPanel.getLongitud().addKeyListener(this);
709
                                dataPointPanel.getTX().addFocusListener(this);
710
                                dataPointPanel.getTY().addFocusListener(this);
711
                                dataPointPanel.getLatitud().addFocusListener(this);
712
                                dataPointPanel.getLongitud().addFocusListener(this);
713
                        }
714
                        pControlPoint.add(dataPointPanel, gridBagConstraints2);
715
                
716
                        getErrorPointPanel();
717
                        pControlPoint.add(errorPointPanel, gridBagConstraints11);
718
                }
719
                return pControlPoint;
720
        }
721
        
722
        /**
723
         * Asigna la ruta donde est?n las imagenes
724
         * @param pathToImages
725
         */
726
        public void setPathToImages(String pathToImages) {
727
                this.pathToImages = pathToImages;
728
        }
729
        
730
        /**
731
         * Obtiene el ?ltimo indice seleccionado de la lista de puntos
732
         * @return entero con el ?ltimo indice seleccionado de la lista de puntos
733
         */
734
        public int getLastIndexSelection() {
735
                return lastIndexSelection;
736
        }
737

    
738
        /**
739
         * Asigna el ?ltimo indice seleccionado de la lista de puntos
740
         * @param entero con el ?ltimo indice seleccionado de la lista de puntos
741
         */
742
        public void setLastIndexSelection(int lastIndexSelection) {
743
                this.lastIndexSelection = lastIndexSelection;
744
        }
745
        
746
        /**
747
     * Activa o desactiva este panel y todos los que lo componen
748
     * @param enabled variable booleana para la activaci?n y/o desactivaci?n
749
     */
750
    public void setEnabled(boolean enabled){
751
            this.dataPointPanel.setEnabled(enabled);
752
            this.errorPointPanel.setEnabled(enabled);
753
            this.tableControlerPanel.setEnabled(enabled);
754
            this.getBSelectFromView().setEnabled(enabled);
755
    }
756
        //**********************End Setters & Getters*********************
757
 }