Statistics
| Revision:

gvsig-raster / org.gvsig.raster.georeferencing / trunk / org.gvsig.raster.georeferencing / org.gvsig.raster.georeferencing.swing / org.gvsig.raster.georeferencing.swing.impl / src / main / java / org / gvsig / raster / georeferencing / swing / impl / view / synchronize / SynchronizationViewImpl.java @ 1717

History | View | Annotate | Download (12.6 KB)

1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2007 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
package org.gvsig.raster.georeferencing.swing.impl.view.synchronize;
20

    
21
import java.awt.Color;
22
import java.awt.geom.Point2D;
23

    
24
import org.gvsig.fmap.dal.coverage.datastruct.GeoPoint;
25
import org.gvsig.fmap.dal.coverage.datastruct.GeoPointList;
26
import org.gvsig.gui.beans.table.exceptions.NotInitializeException;
27
import org.gvsig.raster.georeferencing.swing.exception.InvalidRequestException;
28
import org.gvsig.raster.georeferencing.swing.impl.GeoreferencingSwingImplLibrary;
29
import org.gvsig.raster.georeferencing.swing.impl.tool.SelectPointTool;
30
import org.gvsig.raster.georeferencing.swing.impl.view.BaseZoomView;
31
import org.gvsig.raster.georeferencing.swing.impl.view.ViewPanelImpl;
32
import org.gvsig.raster.georeferencing.swing.view.GeoreferencingView;
33
import org.gvsig.raster.georeferencing.swing.view.IViewRequestManager;
34
import org.gvsig.raster.georeferencing.swing.view.SynchronizedViews;
35
import org.gvsig.raster.georeferencing.swing.view.ToolListener;
36
import org.gvsig.raster.swing.pagedtable.PagedTable;
37

    
38
/**
39
 * Gestor para operaciones con las vistas y zooms
40
 * 
41
 * 04/02/2008
42
 * @author Nacho Brodin nachobrodin@gmail.com
43
 */
44
public class SynchronizationViewImpl implements SynchronizedViews {
45
        //Dialogos
46
        private GeoreferencingView                viewRaster                     = null;
47
        private GeoreferencingView                viewMap                        = null;
48
        private GeoreferencingView                zoomMap                        = null;
49
        private GeoreferencingView                zoomRaster                     = null;
50
        
51
        //Gestores de peticiones
52
        private IViewRequestManager               viewRasterRequestManager       = null;
53
        private IViewRequestManager               viewMapRequestManager          = null;
54
        private IViewRequestManager               zoomRasterRequestManager       = null;
55
        private IViewRequestManager               zoomMapRequestManager          = null;
56
        
57
        private GeoPointList                      gpList                         = null;
58
        private GCPSynchronizationImpl            gcpSync                        = null;
59
        
60
        public SynchronizationViewImpl(GeoPointList gpList, ToolListener listener) {
61
                this.gpList = gpList;
62
                gcpSync = new GCPSynchronizationImpl(gpList, listener);
63
                
64
        }
65
        
66
        /**
67
         * Asigna las vistas
68
         * @param vRaster
69
         * @param vMap
70
         * @param zRaster
71
         * @param zMap
72
         */
73
        public void setViews(
74
                        GeoreferencingView vRaster, 
75
                        GeoreferencingView vMap, 
76
                        GeoreferencingView zRaster, 
77
                        GeoreferencingView zMap,
78
                        PagedTable table) {
79
                viewRaster = vRaster;
80
                viewMap = vMap;
81
                zoomMap = zMap;
82
                zoomRaster = zRaster;
83
                gcpSync.setViews(vMap, vRaster, zMap, zRaster, table);
84
        }
85

    
86
        /**
87
         * Asigna los gestores de peticiones.
88
         * @param vRaster
89
         * @param vMap
90
         * @param zRaster
91
         * @param zMap
92
         */
93
        public void setRequestsManager(
94
                        IViewRequestManager vRaster, 
95
                        IViewRequestManager vMap, 
96
                        IViewRequestManager zRaster, 
97
                        IViewRequestManager zMap) {
98
                viewRasterRequestManager = vRaster;
99
                viewMapRequestManager= vMap;
100
                zoomRasterRequestManager = zRaster;
101
                zoomMapRequestManager = zMap;
102
                gcpSync.setRequestsManager(vRaster, vMap, zRaster, zMap);
103
        }
104
        
105
        /**
106
         * Asigna el panel con la tabla
107
         * @param tablePanel
108
         */
109
        public void setGeoPointList(GeoPointList gpList) {
110
                this.gpList = gpList;
111
        }
112
        
113
        /**
114
         * Desactiva la tool activa de las vistas
115
         * @param active
116
         */
117
        public void sleepActiveTools() {
118
                if(zoomMap != null) 
119
                        ((BaseZoomView)zoomMap).getControl().sleepTools();
120
                if(zoomRaster != null) 
121
                        ((BaseZoomView)zoomRaster).getControl().sleepTools();
122
                if(viewRaster != null)
123
                        ((BaseZoomView)viewRaster).getControl().sleepTools();
124
                if(viewMap != null)
125
                        ((BaseZoomView)viewMap).getControl().sleepTools();
126
        }
127
        
128
        /**
129
         * Activa la tool activa de las vistas
130
         * @param active
131
         */
132
        public void awakeActiveTools() {
133
                if(zoomMap != null) 
134
                        ((BaseZoomView)zoomMap).getControl().awakeTools();
135
                if(zoomRaster != null) 
136
                        ((BaseZoomView)zoomRaster).getControl().awakeTools();
137
                if(viewRaster != null)
138
                        ((BaseZoomView)viewRaster).getControl().awakeTools();
139
                if(viewMap != null)
140
                        ((BaseZoomView)viewMap).getControl().awakeTools();
141
        }
142
        
143
        /**
144
         * Selecciona o deselecciona la tool de selecci?n de punto para cada vista
145
         * @param true para activar y false para desactivar
146
         */
147
        public void selectPointTool(boolean select) {
148
                if(zoomMap != null)
149
                        ((BaseZoomView)zoomMap).getControl().selectTool(SelectPointTool.class, select);
150
                if(zoomRaster != null)
151
                        ((BaseZoomView)zoomRaster).getControl().selectTool(SelectPointTool.class, select);
152
                if(viewRaster != null)
153
                        ((BaseZoomView)viewRaster).getControl().selectTool(SelectPointTool.class, select);
154
                if(viewMap != null)
155
                        ((BaseZoomView)viewMap).getControl().selectTool(SelectPointTool.class, select);
156
        }
157
        
158
        /**
159
         * Asigna el color de los gr?ficos.
160
         * @param c
161
         */
162
        public void setGraphicsColor(Color c) {
163
                if(viewRaster != null && viewRaster instanceof ViewPanelImpl) {
164
                        viewRaster.getCanvas().setTextColor(c);
165
                        ((ViewPanelImpl)viewRaster).getZoomCursorGraphicLayer().setColor(c);
166
                }
167
                if(viewMap != null && viewRaster instanceof ViewPanelImpl) {
168
                        viewMap.getCanvas().setTextColor(c);
169
                        ((ViewPanelImpl)viewMap).getZoomCursorGraphicLayer().setColor(c);
170
                }
171
                if(zoomRaster != null) 
172
                        zoomRaster.getCanvas().setTextColor(c);
173
                if(zoomMap != null) 
174
                        zoomMap.getCanvas().setTextColor(c);
175
        }
176
        
177
        /**
178
         * Asigna el color de los gr?ficos.
179
         * @param c
180
         */
181
        public void setBackgroundColor(Color c) {
182
                if(viewMapRequestManager != null)
183
                        viewMapRequestManager.setBackGroundColor(c);
184
                if(viewRasterRequestManager != null)
185
                        viewRasterRequestManager.setBackGroundColor(c);
186
                if(zoomMapRequestManager != null)
187
                        zoomMapRequestManager.setBackGroundColor(c);
188
                if(zoomRasterRequestManager != null)
189
                        zoomRasterRequestManager.setBackGroundColor(c);
190
                try {
191
                        if(viewRaster != null) {
192
                                viewRaster.getCanvas().setBackgroundColor(c);
193
                                viewRaster.getCanvas().setForceRequest(true);
194
                                ((BaseZoomView)viewRaster).getControl().getExtensionRequest().request(viewRaster.getCanvas().getExtent());
195
                        }
196
                        if(viewMap != null) {
197
                                viewMap.getCanvas().setBackgroundColor(c);
198
                                viewMap.getCanvas().setForceRequest(true);
199
                                ((BaseZoomView)viewMap).getControl().getExtensionRequest().request(viewMap.getCanvas().getExtent());
200
                        }
201
                        if(zoomRaster != null) { 
202
                                zoomRaster.getCanvas().setBackgroundColor(c);
203
                                zoomRaster.getCanvas().setForceRequest(true);
204
                                ((BaseZoomView)zoomRaster).getControl().getExtensionRequest().request(zoomRaster.getCanvas().getExtent());
205
                        }
206
                        if(zoomMap != null) { 
207
                                zoomMap.getCanvas().setBackgroundColor(c);
208
                                zoomMap.getCanvas().setForceRequest(true);
209
                                ((BaseZoomView)zoomMap).getControl().getExtensionRequest().request(zoomMap.getCanvas().getExtent());
210
                        }
211
                } catch (InvalidRequestException e) {
212
                }
213
        }
214
        
215
        /**
216
         * Centra las vistas sobre el punto pasado por par?metro
217
         * @param n N?mero de punto sobre el que se centrar? la visualizaci?n
218
         */
219
        public void centerToPoint(int n) {
220
                if(gpList.size() <= 0) {
221
                        GeoreferencingSwingImplLibrary.messageBoxError("no_selected_point", null);
222
                        return;
223
                }
224

    
225
                GeoPoint gp = gpList.get(n);
226
                double xMap = gp.getMapPoint().getX();
227
                double yMap = gp.getMapPoint().getY();
228
                double xRaster = gp.getPixelPoint().getX();
229
                double yRaster = gp.getPixelPoint().getY();
230

    
231
                if(viewRaster != null && viewMap instanceof ViewPanelImpl) 
232
                        ((ViewPanelImpl)viewRaster).setCenter(new Point2D.Double(xRaster, yRaster));
233
                if(zoomRaster != null) 
234
                        ((BaseZoomView)zoomRaster).getControl().setCenter(new Point2D.Double(xRaster, yRaster));
235
                if(viewMap != null && viewMap instanceof ViewPanelImpl) 
236
                        ((ViewPanelImpl)viewMap).setCenter(new Point2D.Double(xMap, yMap));
237
                if(zoomMap != null) 
238
                        ((BaseZoomView)zoomMap).getControl().setCenter(new Point2D.Double(xMap, yMap));
239
        }
240

    
241
        /**
242
         * Obtiene la vista con el mapa de referencia
243
         * @return ViewDialog
244
         */
245
        public GeoreferencingView getViewMap() {
246
                return viewMap;
247
        }
248

    
249
        /**
250
         * Obtiene la vista con el raster a georreferenciar
251
         * @return ViewDialog
252
         */
253
        public GeoreferencingView getViewRaster() {
254
                return viewRaster;
255
        }
256

    
257
        /**
258
         * Obtiene la vista con el zoom del mapa de referencia
259
         * @return ZoomMapDialog
260
         */
261
        public GeoreferencingView getZoomMap() {
262
                return zoomMap;
263
        }
264

    
265
        /**
266
         * Obtiene la vista con el zoom del raster a georreferenciar
267
         * @return ZoomRasterDialog
268
         */
269
        public GeoreferencingView getZoomRaster() {
270
                return zoomRaster;
271
        }
272

    
273
        /**
274
         * Obtiene el gestor de la vista con la cartograf?a de referencia
275
         * @return ViewMapRequestManager
276
         */
277
        public IViewRequestManager getViewMapRequestManager() {
278
                return viewMapRequestManager;
279
        }
280

    
281
        /**
282
         * Obtiene el gestor de la vista con el raster a georreferenciar
283
         * @return ViewRasterRequestManager
284
         */
285
        public IViewRequestManager getViewRasterRequestManager() {
286
                return viewRasterRequestManager;
287
        }
288

    
289
        /**
290
         * Obtiene el gestor de la vista zoom con la cartograf?a de referencia
291
         * @return ViewMapRequestManager
292
         */
293
        public IViewRequestManager getZoomMapRequestManager() {
294
                return zoomMapRequestManager;
295
        }
296

    
297
        /**
298
         * Obtiene el gestor de la vista zoom con el raster
299
         * @return ViewRasterRequestManager
300
         */
301
        public IViewRequestManager getZoomRasterRequestManager() {
302
                return zoomRasterRequestManager;
303
        }
304
        
305
        /**
306
         * Activa o desactiva la capa de puntos
307
         * @param active
308
         */
309
        public void setActiveLayerZoomCursor(boolean active) {
310
                gcpSync.setActiveLayerZoomCursor(active);
311
        }
312
        
313
        /**
314
         * Activa y desactiva los n?meros de punto de las capas gr?ficas
315
         * @param active
316
         */
317
        public void setActiveNumberPoint(boolean active) {
318
                gcpSync.setActiveNumberPoint(active);
319
        }
320
        
321
        /**
322
         * Activa o desactiva la capa de puntos
323
         * @param active
324
         */
325
        public void setActiveLayerPoints(boolean active) {
326
                gcpSync.setActiveLayerPoints(active);
327
        }
328
        
329
        /**
330
         * Recalcula las coordenadas de dibujado de los puntos de control
331
         * y redibuja estos en todas las vistas
332
         */
333
        public void redrawPoints() {
334
                gcpSync.redrawPoints();
335
        }
336
        
337
        /**
338
         * Elimina un punto de la lista a partir de su posici?n
339
         * @param position
340
         */
341
        public void removePoint(int position) {
342
                gcpSync.removePoint(position);
343
        }
344
        
345
        /**
346
         * Asigna la numeraci?n a los puntos de control. Tanto a la tabla como
347
         * a los GeoPuntos
348
         * @throws NotInitializeException
349
         */
350
        public void calcPointsNumeration() {
351
                gcpSync.calcPointsNumeration();
352
        }
353
        
354
        /**
355
         * Obtiene un punto (GeoPoint) a partir de su n?mero. Hay que tener en cuenta que el n?mero de
356
         * punto puede no coincidir con su posici?n en el array.
357
         * @return GeoPoint
358
         */
359
        public GeoPoint getPointByNumber(int number) {
360
                return gcpSync.getPointByNumber(number);
361
        }
362
        
363
        /**
364
         * Obtiene la posici?n de un punto a partir de su n?mero. Hay que tener en cuenta que el n?mero de
365
         * punto puede no coincidir con su posici?n en el array.
366
         * @return entero con la posici?n o -1 si no existe
367
         */
368
        public int getPointPositionByNumber(int number) {
369
                return gcpSync.getPointPositionByNumber(number);
370
        }
371
        
372
        /**
373
         * Activa o desactiva la visualizaci?n de un punto.
374
         * @param active true para activarlo y false para desactivarlo
375
         * @param position Posici?n del punto
376
         */
377
        public void setVisiblePoint(boolean visible, int position) {
378
                gcpSync.setVisiblePoint(visible, position);
379
        }
380
        
381
        /**
382
         * Asigna las coordenadas del mundo real y raster al punto indicado en el par?metro. 
383
         * @param point Punto a asignar las nuevas coordenadas
384
         * @param xMap Coordenada real en X
385
         * @param yMap Coordenada real en Y
386
         * @param xRaster Coordenada pixel en X
387
         * @param yRaster Coordenada pixel en Y
388
         */
389
        public void setCoordinates(int point, double xMap, double yMap, double xRaster, double yRaster) {
390
                gcpSync.setCoordinates(point, xMap, yMap, xRaster, yRaster);
391
        }
392
        
393
        /**
394
         * A?ade un punto a las capas gr?ficas
395
         * @param map Coordenadas del mapa del punto
396
         * @param raster Coordenadas pixel del punto
397
         * @return identificador del punto a?adido
398
         */
399
        public long addPoint(Point2D map, Point2D raster) {
400
                return gcpSync.addPoint(map, raster);
401
        }
402
}