Revision 1752 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/Georeferencing.java

View differences:

Georeferencing.java
38 38
import org.gvsig.fmap.dal.coverage.datastruct.GeoPointList;
39 39
import org.gvsig.fmap.geom.primitive.Envelope;
40 40
import org.gvsig.fmap.mapcontrol.MapControl;
41
import org.gvsig.gui.beans.incrementabletask.IIncrementable;
42
import org.gvsig.gui.beans.incrementabletask.IncrementableEvent;
43
import org.gvsig.gui.beans.incrementabletask.IncrementableListener;
44
import org.gvsig.gui.beans.incrementabletask.IncrementableTask;
41 45
import org.gvsig.i18n.Messages;
42 46
import org.gvsig.raster.georeferencing.app.georeferencingclient.listener.ApplicationControlsListener;
43 47
import org.gvsig.raster.georeferencing.app.georeferencingclient.listener.GeoreferencingProcessActions;
......
75 79
 * 26/12/2007
76 80
 * @author Nacho Brodin (nachobrodin@gmail.com)
77 81
 */
78
public class Georeferencing  {
82
public class Georeferencing implements IIncrementable, IncrementableListener {
79 83
	public static final int               UNDEFINED                      = -1;
80 84
	
81 85
	//Tipo de georreferenciacion
......
114 118
	private ApplicationControlsListener   appControlsListener            = null;
115 119
	private PointListListener             pointListListener              = null;
116 120
	public static boolean                 enableTableEvent               = true;
121
	protected IncrementableTask           incrementableLauncherTask      = null;
122
	private int                           percentLauncher                = 0;
123
	
124
	/**
125
	 * Crea la ventana de IncrementableTask
126
	 */
127
	public IncrementableTask getIncrementableTask() {
128
		if (incrementableLauncherTask == null) {
129
			incrementableLauncherTask = new IncrementableTask(this);
130
			incrementableLauncherTask.addIncrementableListener(this);
131
		}
132
		return incrementableLauncherTask;
133
	}
117 134
		
118 135
	public void initialize() {
119 136
		fManager = GeoreferencingFrameworkLocator.getManager();
......
143 160
		fManager.showWindow(launcher.getComponent(), 400, 380, Messages.getText("georeferencing"));
144 161
	}
145 162
	
163
	/**
164
	 * Gets the Mapcontrol for the view selected by the user 
165
	 * @return
166
	 */
146 167
	public MapControl getMapCtrl() {
147 168
		if(mapCtrl == null) {
148 169
			IWindow[] windowList = PluginServices.getMDIManager().getAllWindows();
......
158 179
		return mapCtrl;
159 180
	}
160 181
	
182
	/**
183
	 * Gets the Mapcontrol for the first view found. This is useful without reference cartography.
184
	 * When the application ends and the layer is loaded, the layer generated will be loaded 
185
	 * in the first view found. 
186
	 * @return
187
	 */
188
	public MapControl getFirstMapCtrl() {
189
		if(mapCtrl == null) {
190
			IWindow[] windowList = PluginServices.getMDIManager().getAllWindows();
191
			for (int i = 0; i < windowList.length; i++) {
192
				if(windowList[i] instanceof IView) {
193
					mapCtrl = ((IView)windowList[i]).getMapControl();
194
				}
195
			}			
196
		}
197
		return mapCtrl;
198
	}
199
	
161 200
	public void endLauncherDialog(GeoreferencingOptionsDataModel dataModel) {
162 201
		this.dataModel = dataModel;
163 202
		if(dataModel.getType() == Georeferencing.WITH_MAP)
......
166 205
			initWindowsWithoutMap(dataModel);
167 206
		createAppControlsListener();
168 207
		createPointListListener();
208
		initCartography();
209
		/*getIncrementableTask().showWindow();
210
		getIncrementableTask().start();
211
		
212
		SwingUtilities.invokeLater(new Runnable() {
213
			public void run() {
214
				initCartography();
215
			}
216
		});*/
169 217
	}
170 218
	
171 219
	/**
......
230 278
		return zoomRaster;
231 279
	}
232 280
	
233
	/**
234
	 * Colocaci?n inicial de las ventanas del espacio de trabajo. Carga la configuraci?n
235
	 * de ventanas con cartograf?a de referencia.
236
	 */
237
	private void initWindowsWithoutMap(GeoreferencingOptionsDataModel dataModel) {
238
		//RasterDataStore store = dataModel.getDataStore();
239
		
240
		getDataModel().setType(WITHOUT_MAP);
241
		
242
		viewRaster = getViewRaster();
243
		zoomRaster = getZoomRaster();
244
		
245
		PagedTable pt = getTableWrapper().getTable();
246
		
247
		//Creamos el layout
248
		LayoutEnvironment layoutEnv = fManager.createLayoutEnvironment();
249
		layoutEnv.setTable((JPanel)pt.getComponent());
250
		layoutEnv.setViewRasterToGeoref(viewRaster.getComponent());
251
		layoutEnv.setViewZoomRasterToGeoref(zoomRaster.getComponent());
252
		layoutEnv.setControlBar(getGeorefControlPanel().getComponent());
253
		
254
		fManager.createLayout(layoutEnv);
255
		GeoreferencingView[] v = new GeoreferencingView[]{null, viewRaster, null, zoomRaster};
256
		IViewRequestManager[] rm = new IViewRequestManager[]{null, viewRasterRequestManager, null, zoomRasterRequestManager};
257
		syncViews = sManager.createSyncViews(v, rm, getGeorefControlPanel(), pt, listener);
258
	
259
		try {
260
			viewRaster.setCursorSize(zoomRaster.getCanvasWidth() / ZOOM_RATIO, zoomRaster.getCanvasHeight() / ZOOM_RATIO);
261
			viewRaster.setCursorPosition(viewRaster.getCanvasWidth() / 2, viewRaster.getCanvasHeight() / 2);
262
			
263
			//Inicializamos la vista de raster
264
			viewRasterRequestManager.initRequest(dataModel.getRasterExtent());
265
						
266
			//Inicializamos el zoom de raster
267
			Rectangle2D ext = viewRaster.getCursorAdjustedWorldCoordinates(zoomRaster.getCanvasWidth(), zoomRaster.getCanvasHeight());
268
			zoomRasterRequestManager.initRequest(dataModel.getRasterExtent());
269
			zoomRasterRequestManager.request(ext);
270
		
271
		} catch (InvalidRequestException e1) {
272
			GeoreferencingSwingImplLibrary.messageBoxError("error_setview_preview", null, e1);
273
			fManager.closeAllWindows();
274
		}catch (Exception e1) {
275
			GeoreferencingSwingImplLibrary.messageBoxError("error_setview_preview", null, e1);
276
			fManager.closeAllWindows();
277
		}
278
		
279
		buildNewPointList();
280
	}
281
	
282 281
	public TableWrapper getTableWrapper() {
283 282
		if(table == null) {
284 283
			table = new TableWrapper(
......
340 339
	 * Colocaci?n inicial de las ventanas del espacio de trabajo. Carga la configuraci?n
341 340
	 * de ventanas con cartograf?a de referencia.
342 341
	 */
342
	private void initWindowsWithoutMap(GeoreferencingOptionsDataModel dataModel) {
343
		//RasterDataStore store = dataModel.getDataStore();
344
		getDataModel().setType(WITHOUT_MAP);
345
		
346
		viewRaster = getViewRaster();
347
		zoomRaster = getZoomRaster();
348
		
349
		PagedTable pt = getTableWrapper().getTable();
350
		
351
		//Creamos el layout
352
		LayoutEnvironment layoutEnv = fManager.createLayoutEnvironment();
353
		layoutEnv.setTable((JPanel)pt.getComponent());
354
		layoutEnv.setViewRasterToGeoref(viewRaster.getComponent());
355
		layoutEnv.setViewZoomRasterToGeoref(zoomRaster.getComponent());
356
		layoutEnv.setControlBar(getGeorefControlPanel().getComponent());
357
		
358
		fManager.createLayout(layoutEnv);
359
		GeoreferencingView[] v = new GeoreferencingView[]{null, viewRaster, null, zoomRaster};
360
		IViewRequestManager[] rm = new IViewRequestManager[]{null, viewRasterRequestManager, null, zoomRasterRequestManager};
361
		syncViews = sManager.createSyncViews(v, rm, getGeorefControlPanel(), pt, listener);
362
	
363
		try {
364
			viewRaster.setCursorSize(zoomRaster.getCanvasWidth() / ZOOM_RATIO, zoomRaster.getCanvasHeight() / ZOOM_RATIO);
365
			viewRaster.setCursorPosition(viewRaster.getCanvasWidth() / 2, viewRaster.getCanvasHeight() / 2);
366
		} catch (Exception e1) {
367
			GeoreferencingSwingImplLibrary.messageBoxError("error_setview_preview", null, e1);
368
			fManager.closeAllWindows();
369
		}
370
		
371
		buildNewPointList();
372
	}
373
	
374
	/**
375
	 * Colocaci?n inicial de las ventanas del espacio de trabajo. Carga la configuraci?n
376
	 * de ventanas con cartograf?a de referencia.
377
	 */
343 378
	private void initWindowsWithMap(GeoreferencingOptionsDataModel dataModel) {
344 379
		getDataModel().setType(WITH_MAP);
345 380

  
......
347 382
		zoomRaster = getZoomRaster();
348 383
		viewMap = getViewMap();
349 384
		zoomMap = getZoomMap();
350
		
351 385
		PagedTable pt = getTableWrapper().getTable();
352 386
		
353 387
		//Creamos el layout
......
375 409
			if(getMapCtrl().getMapContext().getLayers().getFullEnvelope() == null)
376 410
				GeoreferencingSwingImplLibrary.messageBoxError("error_setview_preview", null);
377 411
			
378
			//Inicializamos la vista de mapa
379
			Envelope e = getMapCtrl().getMapContext().getLayers().getFullEnvelope();
380
			Rectangle2D r = new Rectangle2D.Double(e.getMinimum(0), e.getMinimum(1), e.getLength(0), e.getLength(1));
381
			viewMapRequestManager.initRequest(r);
382
			
412
			processActions.setViewMapRequest(viewMapRequestManager);
413
		} catch (Exception e1) {
414
			GeoreferencingSwingImplLibrary.messageBoxError("error_setview_preview", this, e1);
415
			fManager.closeAllWindows();
416
		}
417
		buildNewPointList();
418
	}
419
	
420
	/**
421
	 * Initializes views with the cartography
422
	 * @throws InvalidRequestException
423
	 */
424
	private void initCartography() {
425
		try {
426
			percentLauncher = 10;
427
			if(getDataModel().getType() == WITH_MAP) {
428
				//Inicializamos la vista de mapa
429
				Envelope e = getMapCtrl().getMapContext().getLayers().getFullEnvelope();
430
				Rectangle2D r = new Rectangle2D.Double(e.getMinimum(0), e.getMinimum(1), e.getLength(0), e.getLength(1));
431
				viewMapRequestManager.initRequest(r);
432

  
433
				percentLauncher = 25;
434
				//Inicializamos el zoom de mapa
435
				Rectangle2D ext = viewMap.getCursorAdjustedWorldCoordinates(zoomMap.getCanvasWidth(), zoomMap.getCanvasHeight());
436
				zoomMapRequestManager.initRequest(ext);
437
			}
438

  
439
			percentLauncher = 50;
383 440
			//Inicializamos la vista de raster
384 441
			viewRasterRequestManager.initRequest(dataModel.getRasterExtent());
385
			
386
			//Inicializamos el zoom de mapa
387
			Rectangle2D ext = viewMap.getCursorAdjustedWorldCoordinates(zoomMap.getCanvasWidth(), zoomMap.getCanvasHeight());
388
			zoomMapRequestManager.initRequest(ext);
389
			
442

  
443
			percentLauncher = 75;
390 444
			//Inicializamos el zoom de raster
391
			ext = viewRaster.getCursorAdjustedWorldCoordinates(zoomRaster.getCanvasWidth(), zoomRaster.getCanvasHeight());
445
			Rectangle2D ext = viewRaster.getCursorAdjustedWorldCoordinates(zoomRaster.getCanvasWidth(), zoomRaster.getCanvasHeight());
392 446
			zoomRasterRequestManager.initRequest(dataModel.getRasterExtent());
393 447
			zoomRasterRequestManager.request(ext);
394
			
395
			processActions.setViewMapRequest(viewMapRequestManager);
448

  
449
			percentLauncher = 100;
396 450
		} catch (InvalidRequestException e1) {
397
			GeoreferencingSwingImplLibrary.messageBoxError("error_setview_preview", this, e1);
451
			GeoreferencingSwingImplLibrary.messageBoxError("error_setview_preview", null, e1);
398 452
			fManager.closeAllWindows();
399
		}catch (Exception e1) {
400
			GeoreferencingSwingImplLibrary.messageBoxError("error_setview_preview", this, e1);
401
			fManager.closeAllWindows();
402
		}
403
		
404
		buildNewPointList();
453
		} /*finally {
454
			getIncrementableTask().processFinalize();
455
		}*/
405 456
	}
406 457

  
407 458
	public ViewRasterRequestManager getZoomRasterRequestManager() {
......
430 481
	public GeoreferencingOptionsDataModel getDataModel() {
431 482
		return GeoreferencingSwingLocator.getSwingManager().getDataModel();
432 483
	}
484
	
485
	//***********************************************
486
	//Launcher process
487

  
488
	public void actionCanceled(IncrementableEvent e) {
433 489
		
490
	}
491

  
492
	public void actionResumed(IncrementableEvent e) {
493
		
494
	}
495

  
496
	public void actionSuspended(IncrementableEvent e) {
497
		
498
	}
499

  
500
	public String getLabel() {
501
		return Messages.getText("loading_georef_windows");
502
	}
503

  
504
	public String getLog() {
505
		return Messages.getText("loading_georef_windows");
506
	}
507

  
508
	public int getPercent() {
509
		return percentLauncher;
510
	}
511

  
512
	public String getTitle() {
513
		return Messages.getText("loading");
514
	}
515

  
516
	public boolean isCancelable() {
517
		return false;
518
	}
519

  
520
	public boolean isPausable() {
521
		return false;
522
	}
523
		
434 524
}

Also available in: Unified diff