Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extGeoreferencing / src / com / iver / cit / gvsig / fmap / layers / FLyrPoints.java @ 3102

History | View | Annotate | Download (20.5 KB)

1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 *
19
 * For more information, contact:
20
 *
21
 *  Generalitat Valenciana
22
 *   Conselleria d'Infraestructures i Transport
23
 *   Av. Blasco Ib??ez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *      +34 963862235
28
 *   gvsig@gva.es
29
 *      www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   IVER T.I. S.A
34
 *   Salamanca 50
35
 *   46005 Valencia
36
 *   Spain
37
 *
38
 *   +34 963163400
39
 *   dac@iver.es
40
 */
41
package com.iver.cit.gvsig.fmap.layers;
42

    
43
import java.awt.Color;
44
import java.awt.Dimension;
45
import java.awt.Graphics2D;
46
import java.awt.geom.Point2D;
47
import java.awt.geom.Rectangle2D;
48
import java.awt.image.BufferedImage;
49
import java.util.ArrayList;
50
import java.util.Iterator;
51

    
52
import javax.swing.table.DefaultTableModel;
53

    
54
import com.iver.andami.PluginServices;
55
import com.iver.cit.gvsig.fmap.DriverException;
56
import com.iver.cit.gvsig.fmap.ViewPort;
57
import com.iver.cit.gvsig.fmap.operations.Cancellable;
58
import com.iver.cit.gvsig.gui.View;
59
import com.iver.cit.gvsig.gui.Dialogs.GeoreferencingDialog;
60
import com.iver.cit.gvsig.gui.Panels.AdjustGeorefPanel;
61
import com.iver.cit.gvsig.gui.Panels.DataPointPanel;
62
import com.iver.cit.gvsig.gui.Panels.SelectPointsPanel;
63
import com.iver.cit.gvsig.gui.Panels.TablePointsPanel;
64
import com.iver.cit.gvsig.gui.Panels.TablePointsPanel.PointTable;
65

    
66

    
67
/**
68
 * Clase de capa de marcado de puntos sobre una vista. Dibuja un puntero sobre 
69
 * cada punto en la vista.
70
 *
71
 * @author Nacho Brodin (brodin_ign@gva.es)
72
 */
73
public class FLyrPoints extends FLyrDefault {
74
        
75
        /**
76
         * Punto de la capa que representa una coordenada en pixeles de la imagen a
77
         * georreferenciar, una coordenada de la vista, el viewPort de las mini imagenes
78
         * ,el centro de estas y el flag activo que dice si el punto tiene que ser tomado en 
79
         * cuenta o no. 
80
         * @author Nacho Brodin (brodin_ign@gva.es)
81
         *
82
         */
83
        public class GeoPoint{
84
                public Point2D pixelPoint = null;
85
                public Point2D mapPoint = null;
86
                public ViewPort leftViewPort =  null, rightViewPort = null;
87
                public Point2D  leftCenterPoint = null, rightCenterPoint = null;
88
                public boolean active = true;
89
                public GeoPoint(Point2D p, Point2D m){
90
                        this.pixelPoint = p;
91
                        this.mapPoint = m;
92
                }
93
                
94
                /**
95
                 * Hace una copia de la instancia del punto.
96
                 * @return GeoPoint
97
                 */
98
                public GeoPoint cloneGeoPoint(){
99
                        Point2D pixel = null;
100
                        Point2D map = null;
101
                        if(pixelPoint != null)
102
                                pixel = (Point2D)pixelPoint.clone();
103
                        if(mapPoint != null)
104
                                map = (Point2D)mapPoint.clone();
105
                        
106
                        GeoPoint gp = new GeoPoint(pixel, map);
107
                        
108
                        if(leftViewPort != null){
109
                                gp.leftViewPort = new ViewPort(leftViewPort.getProjection());
110
                                gp.leftViewPort.setExtent((Rectangle2D)leftViewPort.getExtent().clone());
111
                                gp.leftViewPort.setImageSize((Dimension)leftViewPort.getImageSize().clone());
112
                                gp.leftViewPort.setScale();
113
                        }
114
                        
115
                        if(rightViewPort != null){
116
                                gp.rightViewPort = new ViewPort(rightViewPort.getProjection());
117
                                gp.rightViewPort.setExtent((Rectangle2D)rightViewPort.getExtent().clone());
118
                                gp.rightViewPort.setImageSize((Dimension)rightViewPort.getImageSize().clone());
119
                                gp.rightViewPort.setScale();
120
                        }
121
                
122
                        if(leftCenterPoint != null)
123
                                gp.leftCenterPoint = (Point2D)this.leftCenterPoint.clone();
124
                        if(rightCenterPoint != null)
125
                                gp.rightCenterPoint = (Point2D)this.rightCenterPoint.clone();
126
                        gp.active = this.active;
127
                        return gp;
128
                }
129

    
130
        }
131
        
132
        /**
133
         * Estado de la capa de puntos. 
134
         * @author Nacho Brodin (brodin_ign@gva.es)
135
         *
136
         */
137
        public class FLyrPointsState{
138
                public ArrayList pointList = new ArrayList();
139
                public boolean showNumber = true;
140
                public String lastTool = "zoomIn";
141
        }
142
        
143
        private ArrayList pointList = new ArrayList();
144
        private final int DIAM_CIRCLE = 18;
145
        private String lastTool = "zoomIn";
146
        private boolean showNumber = true;
147
        private FLyrPointsState state = null;
148
        
149
        /**
150
         * Obtiene el array de puntos
151
         * @return
152
         */
153
        public ArrayList getListPoint(){
154
                return pointList;
155
        }
156
        
157
        /**
158
         * Salva el estado actual de la capa de puntos. Podr? ser recuperado
159
         * este ?ltimo estado salvado con la funci?n recoveryState
160
         *
161
         */
162
        public void saveState(){
163
                if(state == null)
164
                        state = new FLyrPointsState();
165
                else
166
                        state.pointList.clear();
167

    
168
                for(int i=0;i<pointList.size();i++)
169
                        state.pointList.add(((GeoPoint)pointList.get(i)).cloneGeoPoint());
170
                
171
                state.showNumber = showNumber;
172
                state.lastTool = lastTool;
173
        }
174
        
175
        /**
176
         * Recupera el estado de la capa de puntos desde la ?ltima vez que se
177
         * ejecut? la funci?n saveState. Si no hay ning?n estdo salvado es que
178
         * al principio estaba la capa vacia por lo que reiniciamos la capa de puntos.
179
         */
180
        public void recoveryState(){
181
                if(state != null){
182
                        pointList.clear();
183
                        for(int i=0;i<state.pointList.size();i++)
184
                                pointList.add(((GeoPoint)state.pointList.get(i)).cloneGeoPoint());
185
                        
186
                        showNumber = state.showNumber;
187
                        lastTool = state.lastTool;
188
                }else{
189
                        pointList = new ArrayList();
190
                        showNumber = true;
191
                        lastTool = "zoomIn";
192
                        state = null;
193
                }
194
        }
195
        
196
        /**
197
         * Asigna el array de puntos 
198
         * @param list
199
         */
200
        public void setListPoint(ArrayList list){
201
                pointList = list;
202
        }
203
        
204
        /**
205
         * Dibujado de la capa de raster georeferenciado aplicando la 
206
         * transformaci?n del viewPort.
207
         */
208
        public void draw(BufferedImage image, Graphics2D g, ViewPort vp,
209
                        Cancellable cancel,double scale) throws DriverException {
210
                
211
                View theView = (View) PluginServices.getMDIManager().getActiveView();
212
                //BufferedImage img = theView.getMapControl().getImage();
213
                //g.drawImage(img, 0, 0, null);
214
                int dpto = (DIAM_CIRCLE >> 1);
215
                int incr = 5;
216
                Point2D pto = null;
217
                FLyrGeoRaster lyrGeoRaster = null;
218
                //Obtenemos la capa de puntos y la capa de georaster
219
                
220
                for(int i=0;i<theView.getMapControl().getMapContext().getLayers().getLayersCount();i++){
221
                        FLayer lyr = theView.getMapControl().getMapContext().getLayers().getLayer(i);
222
                        if(        lyr instanceof FLyrGeoRaster && 
223
                                lyr.getName().startsWith("*") &&
224
                                lyr.isActive())
225
                                lyrGeoRaster = (FLyrGeoRaster)lyr;
226
                }
227
                
228
                if(lyrGeoRaster != null){
229
                        for(int i=0; i<pointList.size();i++){
230
                                
231
                                //Punto de la imagen
232
                                pto = ((GeoPoint)pointList.get(i)).pixelPoint;
233
                                
234
                                if(((GeoPoint)pointList.get(i)).active){
235
                                        if(pto != null){
236
                                                Point2D p = lyrGeoRaster.img2World(pto);
237
                                                p = vp.fromMapPoint(p);
238
                                                drawPixelCrux(g, p, i);
239
                                                
240
                                        }
241
                                        
242
                                        //Punto de la vista
243
                                        pto = ((GeoPoint)pointList.get(i)).mapPoint;
244
                                        if(pto != null){
245
                                                Point2D p = vp.fromMapPoint(pto);
246
                                                drawMapCrux(g, p, i);
247
                                        }
248
                                }
249
                        }
250
                } 
251
        }
252
        
253
        /**
254
         * Dibuja sobre el graphics pasado la cruz del punto que marca
255
         * el pixel de la imagen.
256
         * @param g Graphics
257
         */
258
        private void drawPixelCrux(Graphics2D g, Point2D p, int pointNumber){
259
                int dpto = (DIAM_CIRCLE >> 1);
260
                int incr = 5;
261
                g.setColor(Color.WHITE);
262
                g.drawOval(        (int)p.getX() - dpto + 1, 
263
                                        (int)p.getY() - dpto + 1, 
264
                                        DIAM_CIRCLE - 2, 
265
                                        DIAM_CIRCLE - 2);
266
                g.drawLine((int)p.getX() - incr, (int)p.getY() - 1, (int)p.getX() - 1, (int)p.getY() - 1);
267
                g.drawLine((int)p.getX() - incr, (int)p.getY() + 1, (int)p.getX() - 1, (int)p.getY() + 1);
268
                
269
                g.drawLine((int)p.getX() + incr, (int)p.getY() - 1, (int)p.getX() + 1, (int)p.getY() - 1);
270
                g.drawLine((int)p.getX() + incr, (int)p.getY() + 1, (int)p.getX() + 1, (int)p.getY() + 1);
271
                
272
                g.drawLine((int)p.getX() - 1, (int)p.getY() - incr, (int)p.getX() - 1, (int)p.getY() - 1);
273
                g.drawLine((int)p.getX() + 1, (int)p.getY() - incr, (int)p.getX() + 1, (int)p.getY() - 1);
274
                
275
                g.drawLine((int)p.getX() - 1, (int)p.getY() + incr, (int)p.getX() - 1, (int)p.getY() + 1);
276
                g.drawLine((int)p.getX() + 1, (int)p.getY() + incr, (int)p.getX() + 1, (int)p.getY() + 1);
277
                
278
                g.setColor(Color.red);
279
                g.drawOval(        (int)p.getX() - dpto, 
280
                                        (int)p.getY() - dpto, 
281
                                        DIAM_CIRCLE, 
282
                                        DIAM_CIRCLE);
283
                g.drawLine((int)p.getX(), (int)p.getY() - dpto - incr, (int)p.getX(), (int)p.getY() + dpto + incr);
284
                g.drawLine((int)p.getX() - dpto - incr, (int)p.getY(), (int)p.getX() + dpto + incr, (int)p.getY());
285
                //g.drawLine((int)p.getX() - dpto, (int)p.getY() - dpto , (int)p.getX() - dpto + DIAM_CIRCLE, (int)p.getY() - dpto + DIAM_CIRCLE);
286
                //g.drawLine((int)p.getX() - dpto, (int)p.getY() - dpto + DIAM_CIRCLE, (int)p.getX() - dpto + DIAM_CIRCLE, (int)p.getY() - dpto);
287
                
288
                if(showNumber){
289
                        g.setColor(Color.WHITE);
290
                        g.drawString(String.valueOf(pointNumber + 1), (int)(p.getX() + dpto + 4), (int)(p.getY() - dpto - 4) );
291
                        g.setColor(Color.red);
292
                        g.drawString(String.valueOf(pointNumber + 1), (int)(p.getX() + dpto + 1), (int)(p.getY() - dpto - 1) );
293
                }
294
        }
295
        
296
        /**
297
         * Dibuja sobre el graphics pasado la cruz del punto que marca
298
         * la coordenada de la vista.
299
         * @param g Graphics
300
         */
301
        private void drawMapCrux(Graphics2D g, Point2D p, int pointNumber){
302
                int dpto = (DIAM_CIRCLE >> 1);
303
                int incr = 5;
304
                g.setColor(Color.WHITE);
305
                g.drawRect(        (int)p.getX() - dpto + 1, 
306
                                        (int)p.getY() - dpto + 1, 
307
                                        DIAM_CIRCLE - 2, 
308
                                        DIAM_CIRCLE - 2);
309
                g.drawLine((int)p.getX() - incr, (int)p.getY() - 1, (int)p.getX() - 1, (int)p.getY() - 1);
310
                g.drawLine((int)p.getX() - incr, (int)p.getY() + 1, (int)p.getX() - 1, (int)p.getY() + 1);
311
                
312
                g.drawLine((int)p.getX() + incr, (int)p.getY() - 1, (int)p.getX() + 1, (int)p.getY() - 1);
313
                g.drawLine((int)p.getX() + incr, (int)p.getY() + 1, (int)p.getX() + 1, (int)p.getY() + 1);
314
                
315
                g.drawLine((int)p.getX() - 1, (int)p.getY() - incr, (int)p.getX() - 1, (int)p.getY() - 1);
316
                g.drawLine((int)p.getX() + 1, (int)p.getY() - incr, (int)p.getX() + 1, (int)p.getY() - 1);
317
                
318
                g.drawLine((int)p.getX() - 1, (int)p.getY() + incr, (int)p.getX() - 1, (int)p.getY() + 1);
319
                g.drawLine((int)p.getX() + 1, (int)p.getY() + incr, (int)p.getX() + 1, (int)p.getY() + 1);
320
                
321
                g.setColor(new Color(45, 8 , 165));
322
                g.drawRect(        (int)p.getX() - dpto, 
323
                                        (int)p.getY() - dpto, 
324
                                        DIAM_CIRCLE, 
325
                                        DIAM_CIRCLE);
326
                g.drawLine((int)p.getX(), (int)p.getY() - dpto - incr, (int)p.getX(), (int)p.getY() + dpto + incr);
327
                g.drawLine((int)p.getX() - dpto - incr, (int)p.getY(), (int)p.getX() + dpto + incr, (int)p.getY());
328
                if(showNumber){
329
                        g.setColor(Color.WHITE);
330
                        g.drawString(String.valueOf(pointNumber + 1), (int)(p.getX() + dpto + 4), (int)(p.getY() - dpto - 4) );
331
                        g.setColor(new Color(45, 8 , 165));
332
                        g.drawString(String.valueOf(pointNumber + 1), (int)(p.getX() + dpto + 1), (int)(p.getY() - dpto - 1) );
333
                }
334
        }
335
        
336
        /* (non-Javadoc)
337
         * @see com.iver.cit.gvsig.fmap.layers.FLayer#print(java.awt.Graphics2D, com.iver.cit.gvsig.fmap.ViewPort, com.iver.cit.gvsig.fmap.operations.Cancellable, double)
338
         */
339
        public void print(Graphics2D g, ViewPort viewPort, Cancellable cancel,
340
                        double scale) throws DriverException {
341
                // TODO Auto-generated method stub
342

    
343
        }
344
        
345
        /**
346
         * Elimina los puntos de la lista que no tiene las dos coordenadas asignadas.
347
         */
348
        public void clean(){
349
                Iterator iter = pointList.iterator();
350
                while (iter.hasNext()) {
351
                        GeoPoint gp = (GeoPoint) iter.next();
352
                        if(gp.mapPoint == null || gp.pixelPoint == null)
353
                                iter.remove();
354
                }
355
        }
356
        /**
357
         * A?ade un punto a la lista
358
         * @param point punto para la lista
359
         */
360
        public void addPoint(Point2D pixel, Point2D map){
361
                pointList.add(new GeoPoint(pixel, map));
362
        }
363
        
364
        /**
365
         * Obtiene el punto de la posici?n pos 
366
         */
367
        public GeoPoint getPoint(int pos){
368
                return (GeoPoint)pointList.get(pos);
369
        }
370
        
371
        /**
372
         * Elimina la lista de puntos almacenada
373
         */
374
        public void clear(){
375
                pointList = new ArrayList();
376
        }
377
        
378
        /**
379
         * Elimina el punto de la posici?n indicada por el par?metro pos
380
         * @param pos        Posici?n del punto a eliminar
381
         */
382
        public void remove(int pos){
383
                pointList.remove(pos);
384
        }
385
        
386
        /**
387
         *Elimina el ?ltimo punto de la lista.
388
         */
389
        public void delLastPoint(){
390
                pointList.remove(pointList.size() - 1);
391
        }
392
        
393
        /**
394
         * Obtiene le ?ltimo punto de la lista
395
         *
396
         */
397
        public GeoPoint getLastPoint(){
398
                return (GeoPoint)pointList.get(pointList.size());
399
        }
400
        
401
        /**
402
         * Devuelve el n?mero de puntos de la capa
403
         * @return
404
         */
405
        public int length(){
406
                return pointList.size();
407
        }
408
        
409
        /**
410
         * Actualiza un punto de la lista de una posici?n determinada
411
         * @param point punto para la lista
412
         */
413
        public void updatePoint(Point2D pixel, Point2D map, int pos){
414
                GeoPoint gp = (GeoPoint)pointList.get(pos);
415
                if(pixel != null)
416
                        gp.pixelPoint = pixel;
417
                if(map != null)
418
                        gp.mapPoint = map;
419
        }
420
        
421
        /**
422
         * Devuelve el n?mero de puntos de la lista
423
         * @return
424
         */
425
        public int getCountPoints(){
426
                if(pointList != null)
427
                        return pointList.size();
428
                else 
429
                        return 0;
430
        }
431
        
432
        /**
433
         * Activa o desactiva el punto de una posici?n de la lista
434
         * @param n        N?mero de punto
435
         * @param active        true activo, false desactivo
436
         */
437
        public void setPointActive(int n, boolean active){
438
                if(n < 0 || n >= this.length())
439
                        return;
440
                ((GeoPoint)pointList.get(n)).active = active;
441
        }
442
        
443
        /**
444
         * Dice si un punto de la lista est? activo o no
445
         * @param n        Posici?n del punto 
446
         * @return        true si est? activo y false si no lo est?.
447
         */
448
        public boolean isPointActive(int n){
449
                if(n < 0 || n >= this.length())
450
                        return false;
451
                return ((GeoPoint)pointList.get(n)).active;
452
        }
453
        
454
        /**
455
         * Obtiene el extent de la capa
456
         * @return extent en Rectangle2D.
457
         */
458
        public Rectangle2D getFullExtent()throws DriverException {
459
                View theView = (View) PluginServices.getMDIManager().getActiveView();
460
                return theView.getMapControl().getMapContext().getViewPort().getExtent();
461
        }
462
        
463
        /**
464
         * @return Returns the lastTool.
465
         */
466
        public String getLastTool() {
467
                return lastTool;
468
        }
469
        
470
        /**
471
         * @param lastTool The lastTool to set.
472
         */
473
        public void setLastTool(String lastTool) {
474
                this.lastTool = lastTool;
475
        }
476
        
477
        /**
478
         *Asigna el extent para las mini imagenes. Estas deben ser recuperadas cuando se selecciona
479
         *un punto
480
         */
481
        public void setMiniExtent(int nPoint, Point2D centerPoint, ViewPort vp, boolean isRight){
482
                if(isRight){
483
                        ((GeoPoint)pointList.get(nPoint)).rightCenterPoint = centerPoint;
484
                        ((GeoPoint)pointList.get(nPoint)).rightViewPort = vp;
485
                }else{
486
                        ((GeoPoint)pointList.get(nPoint)).leftCenterPoint = centerPoint;
487
                        ((GeoPoint)pointList.get(nPoint)).leftViewPort = vp;
488
                }
489
        }
490
        
491
        /**
492
         * Obtiene el extent de la mini imagen
493
         * @param nPoint Punto de la lista
494
         * @return
495
         */
496
        public ViewPort getMiniExtent(int nPoint, boolean isRight){
497
                if(isRight)
498
                        return ((GeoPoint)pointList.get(nPoint)).rightViewPort;
499
                else
500
                        return ((GeoPoint)pointList.get(nPoint)).leftViewPort;
501
                
502
        }
503
        
504
        /**
505
         * Obtiene el punto central de la mini imagen
506
         * @param nPoint Punto de la lista
507
         * @return
508
         */
509
        public Point2D getCenterPoint(int nPoint, boolean isRight){
510
                if(isRight)
511
                        return ((GeoPoint)pointList.get(nPoint)).rightCenterPoint;
512
                else
513
                        return ((GeoPoint)pointList.get(nPoint)).leftCenterPoint;
514
        }
515
        
516
        /**
517
         * Recorta los decimales para el visualizado en la selecci?n de puntos
518
         * @param s        Cadena de entrada
519
         * @return Cadena de salida con decimales recortados
520
         */
521
        public static String tailDecimal(String s){
522
                int len = 5;
523
                int index = s.indexOf("."); 
524
                if( index == -1)
525
                        return s;
526
                else{
527
                        if((index + len) >= s.length())
528
                                return s;
529
                        return s.substring(0, index + len + 1);
530
                }
531
        }
532
        
533
        /**
534
         * Busca el punto en la capa FLyrPoint que corresponde con la posicion pos
535
         * y carga la informaci?n de este en el panel de informaci?n pasado por par?metro.
536
         * @param pos Posici?n del punto
537
         * @param panel donde se carga la informaci?n
538
         */
539
        public void loadVisualPoint(int pos, GeoreferencingDialog dialog){
540
                GeoPoint pto = null;
541
                try{
542
                        pto = this.getPoint(pos);
543
                }catch(ArrayIndexOutOfBoundsException exc){
544
                        //Todavia no hay puntos por lo que no hacemos nada
545
                        return;
546
                }
547
                DataPointPanel dpp = dialog.getConectorPanel().getDataPointsTabPanel().getSelectPointsPanel().getDataPointPanel();
548
                
549
                //Llenamos los JTextField con los valores del punto
550
                if(pto.pixelPoint != null){
551
                        dpp.getTX().setText(""+pto.pixelPoint.getX());
552
                        dpp.getTY().setText(""+pto.pixelPoint.getY());
553
            }
554
            if(pto.mapPoint != null){
555
                    dpp.getLatitud().setText(tailDecimal(""+pto.mapPoint.getY()));
556
                    dpp.getLongitud().setText(tailDecimal(""+pto.mapPoint.getX()));
557
            }
558
            
559
            //El Checkbox de activaci?n
560
            dialog.getOptionsPanel().getCbActivePoint().setSelected(pto.active);
561
                        
562
            //Seleccionamos la fila de la tabla
563
            PointTable table = dialog.getConectorPanel().getDataPointsTabPanel().getTablePointsPanel().getJTable();
564
            try{
565
                    table.getTable().setRowSelectionInterval(pos, pos);
566
            }catch(IllegalArgumentException exc){
567
                    System.err.println("Intervalo erroneo "+pos);
568
            }
569
            
570
            //Cargamos las mini imagenes
571
            dialog.getZoomControlLeft().setCenterPoint(getCenterPoint(pos, false));
572
            dialog.getZoomControlLeft().setNewViewPort(getMiniExtent(pos, false));
573
            dialog.getZoomControlLeft().draw();
574
            
575
            dialog.getZoomControlRight().setCenterPoint(getCenterPoint(pos, true));
576
            dialog.getZoomControlRight().setNewViewPort(getMiniExtent(pos, true));
577
            dialog.getZoomControlRight().draw();
578
        }
579
        
580
        /**
581
         * Limpia la lista de puntos .
582
         */
583
        public void clearVisualList(SelectPointsPanel spp, TablePointsPanel tpp, AdjustGeorefPanel agp){
584
                //Limpiamos la lista de puntos
585
                clear();
586
                //Limpiamos los controles del Selector de puntos
587
                spp.resetControls(false);
588
                spp.getTableControlerPanel().resetControls();
589
                
590
                //Limpiamos la tabla y sus controles
591
                tpp.clearTable();
592
                tpp.getTableControlerPanel().resetControls();
593
                                
594
                //Limpiamos las miniimagenes
595
                agp.getZoomLeft().clear();
596
                agp.getZoomRight().clear();
597
                
598
                //Actualizamos la vista
599
                View theView = null;
600
                try{
601
                        theView = (View) PluginServices.getMDIManager().getActiveView();
602
                        theView.getMapControl().getMapContext().invalidate();
603
                }catch(ClassCastException exc){
604
                        return;
605
                }
606
        }
607

    
608
        /**
609
         * Elimina un punto de la lista y lo elimina del panel 
610
         * @param pos        Posici?n del punto
611
         * @param grd        Panel a limpiar
612
         */
613
        public void deleteVisualPoint(int pos, GeoreferencingDialog grd){
614
                remove(pos);
615
                
616
                //Actualiza los controles de tabla y selector
617
                grd.getSelectPointsPanel().getTableControlerPanel().setNItems(this.length());
618
                grd.getConectorPanel().getDataPointsTabPanel().
619
                        getTablePointsPanel().getTableControlerPanel().setNItems(this.length());
620
                
621
                //Elimina la fila de la tabla y renumera los puntos
622
                ((DefaultTableModel)grd.getConectorPanel().getDataPointsTabPanel().
623
                                getTablePointsPanel().getJTable().getTable().getModel()).removeRow(pos);
624
                for(int i=0;i<length();i++)
625
                        ((DefaultTableModel)grd.getConectorPanel().getDataPointsTabPanel().
626
                                        getTablePointsPanel().getJTable().getTable().getModel()).setValueAt(String.valueOf(i), i, 0);
627
                        
628
                
629
                //Carga los puntos
630
                if(pos == 0){
631
                        grd.getSelectPointsPanel().getTableControlerPanel().setSelectedIndex(pos);
632
                        loadVisualPoint(pos, grd);
633
                }else{
634
                        grd.getConectorPanel().getDataPointsTabPanel().getTablePointsPanel().getTableControlerPanel().setSelectedIndex(pos - 1);
635
                        loadVisualPoint(pos - 1, grd);
636
                }
637
                
638
                //Redibujamos la vista
639
                View theView = null;
640
                try{
641
                        theView = (View) PluginServices.getMDIManager().getActiveView();
642
                        theView.getMapControl().getMapContext().invalidate();
643
                }catch(ClassCastException exc){
644
                        return;
645
                }
646
        }
647
        
648
        /**
649
         * Muestra en consola los puntos de la capa
650
         */
651
        public void showPoints(){
652
                for(int i=0;i<pointList.size();i++){
653
                        if(((GeoPoint)pointList.get(i)).pixelPoint != null && ((GeoPoint)pointList.get(i)).mapPoint != null){
654
                                System.out.println("PUNTO "+i+": ");
655
                                System.out.println("pix->"+((GeoPoint)pointList.get(i)).pixelPoint.getX()+" "+((GeoPoint)pointList.get(i)).pixelPoint.getY());
656
                                System.out.println("map->"+((GeoPoint)pointList.get(i)).mapPoint.getX()+" "+((GeoPoint)pointList.get(i)).mapPoint.getY());
657
                                System.out.println("extRight->"+((GeoPoint)pointList.get(i)).rightViewPort.getExtent());
658
                                System.out.println("extLeft->"+((GeoPoint)pointList.get(i)).leftViewPort.getExtent());
659
                        }else
660
                                System.out.println("PUNTO "+i+": NULL");
661
                }
662
        }
663

    
664
        /**
665
         * @return Returns the showNumber.
666
         */
667
        public boolean isShowNumber() {
668
                return showNumber;
669
        }
670

    
671
        /**
672
         * @param showNumber The showNumber to set.
673
         */
674
        public void setShowNumber(boolean showNumber) {
675
                this.showNumber = showNumber;
676
        }
677
}