Revision 1712 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

View differences:

ViewDialogListener.java
21 21
 */
22 22
package org.gvsig.raster.georeferencing.app.georeferencingclient.listener;
23 23

  
24
import java.awt.geom.Rectangle2D;
25

  
24 26
import org.gvsig.raster.georeferencing.app.georeferencingclient.Georeferencing;
25
import org.gvsig.raster.georeferencing.swing.view.GeoreferencingView;
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;
26 37
import org.gvsig.raster.georeferencing.swing.view.ViewEvent;
27 38
import org.gvsig.raster.georeferencing.swing.view.ViewListener;
28 39

  
29 40
/** 
30 41
 * @author Nacho Brodin (nachobrodin@gmail.com)
31 42
 */
32
public class ViewDialogListener implements ViewListener {
43
public class ViewDialogListener implements ViewListener, ToolListener {
44
	private Georeferencing app = null;
33 45
	
34
	public ViewDialogListener(GeoreferencingView view, Georeferencing app) {
46
	public ViewDialogListener(Georeferencing app) {
47
		this.app = app;
35 48
	}
36 49

  
37 50
	public void addingTool(ViewEvent ev) {
......
49 62
		
50 63
	}
51 64

  
65
	/**
66
	 * Cuando cambia el zoom de alguna vista hay que recalcular la posici?n
67
	 * del cursor de zoom
68
	 */
52 69
	public void zoomViewChanged(ViewEvent ev) {
53
		// TODO Auto-generated method stub
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) {
54 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
//		}
55 169
	}
56 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

  
57 279
}

Also available in: Unified diff