Statistics
| Revision:

gvsig-raster / org.gvsig.raster.georeferencing / trunk / org.gvsig.raster.georeferencing / org.gvsig.raster.georeferencing.app / org.gvsig.raster.georeferencing.app.georeferencingclient / src / main / java / org / gvsig / raster / georeferencing / app / georeferencingclient / listener / ViewDialogListener.java @ 1712

History | View | Annotate | Download (10.4 KB)

1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.georeferencing.app.georeferencingclient.listener;
23

    
24
import java.awt.geom.Rectangle2D;
25

    
26
import org.gvsig.raster.georeferencing.app.georeferencingclient.Georeferencing;
27
import org.gvsig.raster.georeferencing.swing.GeoreferencingSwingLibrary;
28
import org.gvsig.raster.georeferencing.swing.exception.InvalidRequestException;
29
import org.gvsig.raster.georeferencing.swing.impl.GeoreferencingSwingImplLibrary;
30
import org.gvsig.raster.georeferencing.swing.impl.layer.GCPsGraphicLayer;
31
import org.gvsig.raster.georeferencing.swing.impl.layer.ZoomCursorGraphicLayer;
32
import org.gvsig.raster.georeferencing.swing.impl.tool.PanTool;
33
import org.gvsig.raster.georeferencing.swing.impl.tool.SelectPointTool;
34
import org.gvsig.raster.georeferencing.swing.impl.tool.ZoomRectangleTool;
35
import org.gvsig.raster.georeferencing.swing.view.ToolEvent;
36
import org.gvsig.raster.georeferencing.swing.view.ToolListener;
37
import org.gvsig.raster.georeferencing.swing.view.ViewEvent;
38
import org.gvsig.raster.georeferencing.swing.view.ViewListener;
39

    
40
/** 
41
 * @author Nacho Brodin (nachobrodin@gmail.com)
42
 */
43
public class ViewDialogListener implements ViewListener, ToolListener {
44
        private Georeferencing app = null;
45
        
46
        public ViewDialogListener(Georeferencing app) {
47
                this.app = app;
48
        }
49

    
50
        public void addingTool(ViewEvent ev) {
51
                // TODO Auto-generated method stub
52
                
53
        }
54

    
55
        public void endDraw(ViewEvent ev) {
56
                // TODO Auto-generated method stub
57
                
58
        }
59

    
60
        public void startDraw(ViewEvent ev) {
61
                // TODO Auto-generated method stub
62
                
63
        }
64

    
65
        /**
66
         * Cuando cambia el zoom de alguna vista hay que recalcular la posici?n
67
         * del cursor de zoom
68
         */
69
        public void zoomViewChanged(ViewEvent ev) {
70
                Rectangle2D ext = null;
71
                try {
72
                        if(app.getViewRaster() != null && app.getZoomRaster() != null && app.getZoomRasterRequestManager() != null) {
73
                                ext = app.getViewRaster().getCursorAdjustedWorldCoordinates(app.getZoomRaster().getCanvasWidth(), app.getZoomRaster().getCanvasHeight());
74
                                app.getZoomRasterRequestManager().request(ext);
75
                        }
76
                        if(app.getViewMap() != null && app.getZoomMap() != null && app.getZoomMapRequestManager() != null) {
77
                                ext = app.getViewMap().getCursorAdjustedWorldCoordinates(app.getZoomMap().getCanvasWidth(), app.getZoomMap().getCanvasHeight());
78
                                app.getZoomMapRequestManager().request(ext);
79
                        }
80
                }catch(InvalidRequestException ex) {
81
                        GeoreferencingSwingImplLibrary.messageBoxError("error_set_view", null, ex);
82
                }
83
        }
84

    
85
        /**
86
         * Controla los eventos de finalizaci?n de la capa con el 
87
         * cursor gr?fico que controla el ?rea de la miniimagen asociada y
88
         * la terminaci?n de la operaci?n de mover punto
89
         */
90
        public void endAction(ToolEvent ev) {
91
                
92
                //-----------------
93
                //Operaci?n de zoom
94
                if(ev.getSource() instanceof ZoomCursorGraphicLayer) {
95
                        try {        
96
                                Rectangle2D ext = null;
97
                                if(app.getViewRaster() != null) {
98
                                        ext = app.getViewRaster().getCursorAdjustedWorldCoordinates(app.getZoomRaster().getCanvasWidth(), app.getZoomRaster().getCanvasHeight());
99
                                        app.getZoomRasterRequestManager().request(ext);
100
                                }
101
                                if(app.getViewMap() != null) {
102
                                        ext = app.getViewMap().getCursorAdjustedWorldCoordinates(app.getZoomMap().getCanvasWidth(), app.getZoomMap().getCanvasHeight());
103
                                        app.getZoomMapRequestManager().request(ext);
104
                                }
105
                        } catch (InvalidRequestException e1) {
106
                                GeoreferencingSwingImplLibrary.messageBoxError("error_setview_preview", null, e1);
107
                        }
108
                }
109
                
110
                //-----------
111
                //Mover punto
112
//                if(ev.getSource() instanceof GCPsGraphicLayer) {
113
//                        buttonsListener.setEnableTableEvent(false);
114
//                        //Se redibujan, se obtienen las coordenadas del punto y se actualiza la tabla
115
//                        if(app.getSyncViews() != null)
116
//                                app.getSyncViews().redrawPoints();
117
//                        GPGraphic gPoint = ((GCPsGraphicLayer)ev.getSource()).getLastPoint();
118
//                        Point2D pRaster = gPoint.getGeoPoint().pixelPoint;
119
//                        Point2D pMap = gPoint.getGeoPoint().mapPoint;
120
//                        try {
121
//                                table.updatePoint(        new Double(pMap.getX()), 
122
//                                                                        new Double(pMap.getY()), 
123
//                                                                        new Double(pRaster.getX()), 
124
//                                                                        new Double(pRaster.getY()), 
125
//                                                                        gPoint.getGeoPoint().number);
126
//                                table.getTable().getTable().getJTable().setRowSelectionInterval(gPoint.getGeoPoint().number, gPoint.getGeoPoint().number);
127
//                        } catch (NotInitializeException e) {
128
//                                RasterToolsUtil.messageBoxError("no_rows_selected", table, e);
129
//                        } catch (ArrayIndexOutOfBoundsException e) {
130
//                                RasterToolsUtil.messageBoxError("no_rows_selected", table, e);
131
//                        }
132
//                        if(getOptions().isCenterView())
133
//                                viewsManager.centerToPoint(gPoint.getGeoPoint().number);
134
//                        buttonsListener.setEnableTableEvent(true);
135
//                }
136
//                
137
//                //------------------
138
//                //Selecci?n de punto
139
//                if(ev.getSource() instanceof SelectPointTool) {
140
//                        try {
141
//                                //Se obtiene el punto seleccionado, se actualiza la tabla y se redibujan
142
//                                int nPoint = table.getTable().getSelectedRow();
143
//                                GeoPoint gp = layersPointManager.getPointByNumber(nPoint);
144
//                                
145
//                                if(ev.getSource() == viewRasterSelectPointTool || ev.getSource() == zoomRasterSelectPointTool) {
146
//                                        Point2D[] p = (Point2D[])((SelectPointTool)ev.getSource()).getResult();
147
//                                        table.updateRasterPoint(new Double(p[1].getX()), new Double(p[1].getY()), nPoint);
148
//                                        if(gp != null) {
149
//                                                gp.pixelPoint = p[1];
150
//                                                layersPointManager.redrawPoints();
151
//                                        }
152
//                                }
153
//                                if(ev.getSource() == viewMapSelectPointTool || ev.getSource() == zoomMapSelectPointTool) {
154
//                                        Point2D[] p = (Point2D[])((SelectPointTool)ev.getSource()).getResult();
155
//                                        table.updateMapPoint(new Double(p[1].getX()), new Double(p[1].getY()), nPoint);
156
//                                        if(gp != null) {
157
//                                                gp.mapPoint = p[1];
158
//                                                layersPointManager.redrawPoints();
159
//                                        }
160
//                                }
161
//                                if(getOptions().isCenterView())
162
//                                        viewsManager.centerToPoint(nPoint);
163
//                        } catch (NotInitializeException e) {
164
//                                RasterToolsUtil.messageBoxError("no_rows_selected", table, e);
165
//                        } catch (ArrayIndexOutOfBoundsException e) {
166
//                                RasterToolsUtil.messageBoxError("no_rows_selected", table, e);
167
//                        }
168
//                }
169
        }
170

    
171
        public void offTool(ToolEvent ev) {
172
                
173
                //-----------------
174
                //Operaci?n de zoom
175
                if(ev.getSource() instanceof ZoomCursorGraphicLayer) {
176
                        app.getSyncViews().setActiveLayerPoints(true);
177
                        app.getSyncViews().awakeActiveTools();
178
                        return;
179
                }
180
                
181
                //-----------
182
                //Mover punto
183
                if(ev.getSource() instanceof GCPsGraphicLayer) {
184
                        app.getSyncViews().setActiveLayerZoomCursor(true);
185
                        app.getSyncViews().awakeActiveTools();
186
                        return;
187
                }
188
                
189
                //Selecci?n de punto
190
                /*if(ev.getSource() instanceof SelectPointTool) {
191
                }
192
                //Selecci?n de zoom ventana
193
                if(ev.getSource() instanceof ZoomRectangleTool) {
194
                }*/
195
        }
196

    
197
        /**
198
         *  <P>
199
         *  Controla las prioridades de eventos sobre la vista en las herramientas y capas de selecci?n.
200
         *  Esto es necesario para que no se mezclen eventos entre capas.
201
         *  <P></P>
202
         *  Prioridades:
203
         *  </P>
204
         *  <UL>
205
         *  <LI>Capa de ZoomCursorGraphicLayer</LI>
206
         *  <LI>Capa de GCPsGraphicLayer</LI>
207
         *  <LI>Tool de selecci?n de zoom rectangulo</LI>
208
         *  <LI>Tool de selecci?n de puntos</LI>
209
         *  </UL>
210
         */
211
        public void onTool(ToolEvent ev) {
212
                
213
                //---------------------------
214
                //Operaci?n de cursor de zoom 
215
                if(ev.getSource() instanceof ZoomCursorGraphicLayer) {
216
                        app.getSyncViews().setActiveLayerPoints(false);
217
                        app.getSyncViews().sleepActiveTools();
218
                        return;
219
                }
220
                
221
                //-----------
222
                //Mover punto
223
                if(ev.getSource() instanceof GCPsGraphicLayer) {
224
                        app.getSyncViews().setActiveLayerZoomCursor(false);
225
                        app.getSyncViews().sleepActiveTools();
226
                        return;
227
                }
228
                
229
                //------------------
230
                //Selecci?n de punto
231
                if(ev.getSource() instanceof SelectPointTool) {
232
                        if(app.getViewMap() != null) {
233
                                app.getViewMap().selectTool(GeoreferencingSwingLibrary.ZOOM_RECTANGLE_TOOL, false);
234
                                app.getViewMap().selectTool(GeoreferencingSwingLibrary.PAN_TOOL, false);
235
                                app.getViewMap().setSelectZoomAreaButtonSelected(false);
236
                                app.getViewMap().setMoveButtonSelected(false);
237
                        }
238
                        if(app.getViewRaster() != null) { 
239
                                app.getViewRaster().selectTool(GeoreferencingSwingLibrary.ZOOM_RECTANGLE_TOOL, false);
240
                                app.getViewRaster().selectTool(GeoreferencingSwingLibrary.PAN_TOOL, false);
241
                                app.getViewRaster().setSelectZoomAreaButtonSelected(false);
242
                                app.getViewRaster().setMoveButtonSelected(false);
243
                        }
244
                }
245
                
246
                //-------------------------
247
                //Selecci?n de zoom ventana
248
                if(ev.getSource() instanceof ZoomRectangleTool) {
249
                        if(app.getViewMap() != null) {
250
                                app.getViewMap().selectTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, false);
251
                                app.getViewMap().selectTool(GeoreferencingSwingLibrary.PAN_TOOL, false);
252
                                app.getViewMap().setMoveButtonSelected(false);
253
                        }
254
                        if(app.getViewRaster() != null) { 
255
                                app.getViewRaster().selectTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, false);
256
                                app.getViewRaster().selectTool(GeoreferencingSwingLibrary.PAN_TOOL, false);
257
                                app.getViewRaster().setMoveButtonSelected(false);
258
                        }
259
                        app.getGeorefControlPanel().getToolSelectPointButton().setSelected(false);
260
                }
261
                
262
                //---------------------------
263
                //Selecci?n de desplazamiento
264
                if(ev.getSource() instanceof PanTool) {
265
                        if(app.getViewMap() != null) {
266
                                app.getViewMap().selectTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, false);
267
                                app.getViewMap().selectTool(GeoreferencingSwingLibrary.ZOOM_RECTANGLE_TOOL, false);
268
                                app.getViewMap().setSelectZoomAreaButtonSelected(false);
269
                        }
270
                        if(app.getViewRaster() != null) { 
271
                                app.getViewRaster().selectTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, false);
272
                                app.getViewRaster().selectTool(GeoreferencingSwingLibrary.ZOOM_RECTANGLE_TOOL, false);
273
                                app.getViewRaster().setSelectZoomAreaButtonSelected(false);
274
                        }
275
                        app.getGeorefControlPanel().getToolSelectPointButton().setSelected(false);
276
                }
277
        }
278

    
279
}