Revision 1712
org.gvsig.raster.georeferencing/trunk/org.gvsig.raster.georeferencing/org.gvsig.raster.georeferencing.framework/org.gvsig.raster.georeferencing.framework.andami/src/main/java/org/gvsig/raster/georeferencing/framework/andami/GeoreferencingAndamiFrameworkManagerImpl.java | ||
---|---|---|
135 | 135 |
mainPanel.add(env.getControlBar(), gbc); |
136 | 136 |
|
137 | 137 |
gbc.gridy = 2; |
138 |
JPanel p = fixPanelWithReference(env.getTable(), env.getViewZoomRasterToGeoref(), env.getViewZoomBaseCartography());
|
|
138 |
JPanel p = fixPanelWithReference(env.getTable(), env.getViewZoomBaseCartography(), env.getViewZoomRasterToGeoref());
|
|
139 | 139 |
mainPanel.add(p, gbc); |
140 | 140 |
|
141 | 141 |
MDIFrame mdi = (MDIFrame)PluginServices.getMainFrame(); |
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 | ||
---|---|---|
34 | 34 |
import org.gvsig.app.project.documents.Document; |
35 | 35 |
import org.gvsig.app.project.documents.view.ViewDocument; |
36 | 36 |
import org.gvsig.app.project.documents.view.gui.IView; |
37 |
import org.gvsig.fmap.dal.coverage.datastruct.GeoPoint; |
|
38 |
import org.gvsig.fmap.dal.coverage.datastruct.GeoPointList; |
|
37 | 39 |
import org.gvsig.fmap.dal.coverage.store.RasterDataStore; |
38 | 40 |
import org.gvsig.fmap.geom.primitive.Envelope; |
39 | 41 |
import org.gvsig.fmap.mapcontrol.MapControl; |
... | ... | |
41 | 43 |
import org.gvsig.raster.georeferencing.app.georeferencingclient.gui.CheckBoxColumnEditor; |
42 | 44 |
import org.gvsig.raster.georeferencing.app.georeferencingclient.gui.CheckBoxColumnRenderer; |
43 | 45 |
import org.gvsig.raster.georeferencing.app.georeferencingclient.gui.GCPModel; |
46 |
import org.gvsig.raster.georeferencing.app.georeferencingclient.listener.ApplicationControlsListener; |
|
44 | 47 |
import org.gvsig.raster.georeferencing.app.georeferencingclient.listener.LauncherDialogListener; |
45 |
import org.gvsig.raster.georeferencing.app.georeferencingclient.listener.TableDialogListener; |
|
46 | 48 |
import org.gvsig.raster.georeferencing.app.georeferencingclient.listener.ViewDialogListener; |
49 |
import org.gvsig.raster.georeferencing.app.georeferencingclient.listener.ViewMapRequestManager; |
|
47 | 50 |
import org.gvsig.raster.georeferencing.app.georeferencingclient.listener.ViewRasterRequestManager; |
48 | 51 |
import org.gvsig.raster.georeferencing.framework.GeoreferencingFrameworkLocator; |
49 | 52 |
import org.gvsig.raster.georeferencing.framework.GeoreferencingFrameworkManager; |
... | ... | |
58 | 61 |
import org.gvsig.raster.georeferencing.swing.impl.GeoreferencingSwingImplLibrary; |
59 | 62 |
import org.gvsig.raster.georeferencing.swing.impl.tool.SelectPointTool; |
60 | 63 |
import org.gvsig.raster.georeferencing.swing.view.GeoreferencingView; |
64 |
import org.gvsig.raster.georeferencing.swing.view.IViewRequestManager; |
|
61 | 65 |
import org.gvsig.raster.georeferencing.swing.view.SynchronizedViews; |
62 |
import org.gvsig.raster.georeferencing.swing.view.ToolEvent; |
|
63 |
import org.gvsig.raster.georeferencing.swing.view.ToolListener; |
|
64 |
import org.gvsig.raster.georeferencing.swing.view.ViewEvent; |
|
65 | 66 |
import org.gvsig.raster.swing.RasterSwingLocator; |
66 | 67 |
import org.gvsig.raster.swing.RasterSwingManager; |
67 | 68 |
import org.gvsig.raster.swing.pagedtable.ModelLoader; |
... | ... | |
79 | 80 |
* 26/12/2007 |
80 | 81 |
* @author Nacho Brodin (nachobrodin@gmail.com) |
81 | 82 |
*/ |
82 |
public class Georeferencing implements ToolListener {
|
|
83 |
public class Georeferencing { |
|
83 | 84 |
public static final int UNDEFINED = -1; |
84 | 85 |
//Algoritmo |
85 | 86 |
public static final int POLYNOMIAL = 0; |
... | ... | |
99 | 100 |
private RasterDataStore storeToGeoref = null; |
100 | 101 |
private String selectedView = null; |
101 | 102 |
|
102 |
private static final int smallWindowsHeight = 100; |
|
103 |
private static final double smallWindowsWidthPercent = 0.5; |
|
104 |
|
|
105 | 103 |
//Dialogos |
106 |
private GeoreferencingLauncher initDialog = null;
|
|
104 |
private GeoreferencingLauncher launcher = null;
|
|
107 | 105 |
private GeoreferencingView viewRaster = null; |
108 | 106 |
private GeoreferencingView viewMap = null; |
109 | 107 |
private GeoreferencingView zoomMap = null; |
110 | 108 |
private GeoreferencingView zoomRaster = null; |
109 |
|
|
110 |
private ViewRasterRequestManager zoomRasterRequestManager = null; |
|
111 |
private ViewMapRequestManager zoomMapRequestManager = null; |
|
111 | 112 |
|
112 | 113 |
//Herramientas de selecci?n |
113 | 114 |
private SelectPointTool viewRasterSelectPointTool = null; |
... | ... | |
118 | 119 |
private GeorefControlPanel georefControlPanel = null; |
119 | 120 |
|
120 | 121 |
private PagedTable table = null; |
121 |
private TableDialogListener buttonsListener = null; |
|
122 |
private GeoreferencingOptionsDataModel |
|
123 |
optionsDataModel = null; |
|
122 |
private ApplicationControlsListener buttonsListener = null; |
|
123 |
|
|
124 | 124 |
private MapControl mapCtrl = null; |
125 | 125 |
private GeoreferencingOptionsDataModel |
126 | 126 |
dataModel = null; |
127 |
private GeoPointList geoPointList = null; |
|
128 |
private SynchronizedViews syncViews = null; |
|
129 |
private ViewDialogListener listener = null; |
|
130 |
private GeoreferencingProcessActions processActions = null; |
|
127 | 131 |
|
128 | 132 |
//private LayersPointManager layersPointManager = null; |
129 |
//private ViewsManager viewsManager = null; |
|
133 |
class GeoPointListImpl extends ArrayList<GeoPoint> implements GeoPointList { |
|
134 |
private static final long serialVersionUID = 1L; |
|
135 |
} |
|
130 | 136 |
|
131 | 137 |
public void initialize() { |
132 | 138 |
fManager = GeoreferencingFrameworkLocator.getManager(); |
133 | 139 |
sManager = GeoreferencingSwingLocator.getSwingManager(); |
140 |
listener = new ViewDialogListener(this); |
|
141 |
processActions = new GeoreferencingProcessActions(); |
|
134 | 142 |
//getLayerPointManager(); |
135 | 143 |
//getViewsManager(); |
136 | 144 |
launcher(); |
... | ... | |
151 | 159 |
} |
152 | 160 |
|
153 | 161 |
|
154 |
GeoreferencingLauncher launcher = sManager.createWindowLauncher(viewList, DEFAULT_DEGREE);
|
|
162 |
launcher = sManager.createWindowLauncher(viewList, DEFAULT_DEGREE); |
|
155 | 163 |
LauncherDialogListener listener = new LauncherDialogListener(this, launcher); |
156 | 164 |
launcher.setButtonsListener(listener); |
157 | 165 |
fManager.showWindow(launcher.getComponent(), 400, 420, Messages.getText("georeferencing")); |
... | ... | |
226 | 234 |
private void initWindowsWithoutMap(GeoreferencingOptionsDataModel dataModel) { |
227 | 235 |
RasterDataStore store = dataModel.getDataStore(); |
228 | 236 |
|
229 |
getOptions().setType(WITHOUT_MAP); |
|
237 |
getOptionsDataModel().setType(WITHOUT_MAP);
|
|
230 | 238 |
|
231 | 239 |
//Inicializaci?n de la ventana con la vista raster |
232 |
viewRaster = sManager.createView(true, false, true, this); |
|
233 |
ViewDialogListener listener = new ViewDialogListener(viewRaster, this); |
|
240 |
viewRaster = sManager.createView(true, false, true, listener); |
|
234 | 241 |
ViewRasterRequestManager viewRasterRequestManager = new ViewRasterRequestManager(viewRaster, store); |
235 | 242 |
viewRaster.setViewListener(listener); |
236 | 243 |
viewRaster.setRequestListener(viewRasterRequestManager); |
237 |
viewRaster.setTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, this);
|
|
244 |
viewRaster.setTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, listener);
|
|
238 | 245 |
|
239 | 246 |
//Inicializaci?n de la ventana del zoom de la vista raster |
240 | 247 |
zoomRaster = sManager.createZoom(true, false); |
241 |
ViewRasterRequestManager zoomRasterRequestManager = new ViewRasterRequestManager(zoomRaster, store);
|
|
248 |
zoomRasterRequestManager = new ViewRasterRequestManager(zoomRaster, store); |
|
242 | 249 |
zoomRaster.setRequestListener(zoomRasterRequestManager); |
243 |
zoomRaster.setTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, this);
|
|
250 |
zoomRaster.setTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, listener);
|
|
244 | 251 |
|
245 |
georefControlPanel = sManager.createGeorefControlPanel();
|
|
252 |
PagedTable pt = getTable();
|
|
246 | 253 |
|
247 | 254 |
//Creamos el layout |
255 |
|
|
248 | 256 |
LayoutEnvironment layoutEnv = fManager.createLayoutEnvironment(); |
249 |
layoutEnv.setTable((JPanel)getTable(false, dataModel).getComponent());
|
|
257 |
layoutEnv.setTable((JPanel)pt.getComponent());
|
|
250 | 258 |
layoutEnv.setViewRasterToGeoref(viewRaster.getComponent()); |
251 | 259 |
layoutEnv.setViewZoomRasterToGeoref(zoomRaster.getComponent()); |
252 |
layoutEnv.setControlBar(georefControlPanel.getComponent());
|
|
260 |
layoutEnv.setControlBar(getGeorefControlPanel().getComponent());
|
|
253 | 261 |
|
254 | 262 |
fManager.createLayout(layoutEnv); |
255 |
SynchronizedViews syncViews = sManager.createSyncViews(null, viewRaster, null, zoomRaster, table, this); |
|
263 |
GeoreferencingView[] v = new GeoreferencingView[]{null, viewRaster, null, zoomRaster}; |
|
264 |
IViewRequestManager[] rm = new IViewRequestManager[]{null, viewRasterRequestManager, null, zoomRasterRequestManager}; |
|
265 |
syncViews = sManager.createSyncViews(v, rm, getGeoPointList(), pt, listener); |
|
256 | 266 |
|
257 | 267 |
// |
258 | 268 |
// viewsManager.setViews(viewRaster, null, zoomRaster, null); |
... | ... | |
280 | 290 |
} |
281 | 291 |
} |
282 | 292 |
|
283 |
private PagedTable getTable(boolean withMap, GeoreferencingOptionsDataModel dataModel) {
|
|
293 |
public PagedTable getTable() {
|
|
284 | 294 |
if(table == null) { |
285 | 295 |
RasterSwingManager manager = RasterSwingLocator.getSwingManager(); |
286 | 296 |
String[] columnNames = { |
... | ... | |
314 | 324 |
private void initWindowsWithMap(GeoreferencingOptionsDataModel dataModel) { |
315 | 325 |
RasterDataStore store = dataModel.getDataStore(); |
316 | 326 |
|
317 |
getOptions().setType(WITH_MAP); |
|
327 |
getOptionsDataModel().setType(WITH_MAP);
|
|
318 | 328 |
|
319 | 329 |
//Inicializaci?n de la ventana con la vista raster |
320 |
viewRaster = sManager.createView(true, false, true, this); |
|
321 |
ViewDialogListener listenerRaster = new ViewDialogListener(viewRaster, this); |
|
330 |
viewRaster = sManager.createView(true, false, true, listener); |
|
322 | 331 |
ViewRasterRequestManager viewRasterRequestManager = new ViewRasterRequestManager(viewRaster, store); |
323 |
viewRaster.setViewListener(listenerRaster);
|
|
332 |
viewRaster.setViewListener(listener); |
|
324 | 333 |
viewRaster.setRequestListener(viewRasterRequestManager); |
325 |
viewRaster.setTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, this);
|
|
334 |
viewRaster.setTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, listener);
|
|
326 | 335 |
|
327 | 336 |
//Inicializaci?n de la ventana del zoom de la vista raster |
328 | 337 |
zoomRaster = sManager.createZoom(true, false); |
329 |
ViewRasterRequestManager zoomRasterRequestManager = new ViewRasterRequestManager(zoomRaster, store);
|
|
338 |
zoomRasterRequestManager = new ViewRasterRequestManager(zoomRaster, store); |
|
330 | 339 |
zoomRaster.setRequestListener(zoomRasterRequestManager); |
331 |
zoomRaster.setTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, this);
|
|
340 |
zoomRaster.setTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, listener);
|
|
332 | 341 |
|
333 | 342 |
//Inicializaci?n de la ventana con la vista del terreno |
334 |
viewMap = sManager.createView(true, false, false, this); |
|
335 |
ViewDialogListener listenerMap = new ViewDialogListener(viewMap, this); |
|
336 |
ViewRasterRequestManager viewMapRequestManager = new ViewRasterRequestManager(viewMap, store); |
|
337 |
viewMap.setViewListener(listenerMap); |
|
343 |
viewMap = sManager.createView(true, false, false, listener); |
|
344 |
ViewMapRequestManager viewMapRequestManager = new ViewMapRequestManager(viewMap, getMapCtrl()); |
|
345 |
viewMap.setViewListener(listener); |
|
338 | 346 |
viewMap.setRequestListener(viewMapRequestManager); |
339 |
viewMap.setTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, this);
|
|
347 |
viewMap.setTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, listener);
|
|
340 | 348 |
|
341 | 349 |
//Inicializaci?n de la ventana del zoom de la vista del terreno |
342 | 350 |
zoomMap = sManager.createZoom(true, false); |
343 |
ViewRasterRequestManager zoomMapRequestManager = new ViewRasterRequestManager(zoomMap, store);
|
|
351 |
zoomMapRequestManager = new ViewMapRequestManager(zoomMap, getMapCtrl());
|
|
344 | 352 |
zoomMap.setRequestListener(zoomMapRequestManager); |
345 |
zoomMap.setTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, this);
|
|
353 |
zoomMap.setTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, listener);
|
|
346 | 354 |
|
347 |
georefControlPanel = sManager.createGeorefControlPanel();
|
|
355 |
PagedTable pt = getTable();
|
|
348 | 356 |
|
349 | 357 |
//Creamos el layout |
350 | 358 |
LayoutEnvironment layoutEnv = fManager.createLayoutEnvironment(); |
351 |
layoutEnv.setTable((JPanel)getTable(false, dataModel).getComponent());
|
|
359 |
layoutEnv.setTable((JPanel)pt.getComponent());
|
|
352 | 360 |
layoutEnv.setViewRasterToGeoref(viewRaster.getComponent()); |
353 | 361 |
layoutEnv.setViewZoomRasterToGeoref(zoomRaster.getComponent()); |
354 | 362 |
layoutEnv.setViewBaseCartography(viewMap.getComponent()); |
355 | 363 |
layoutEnv.setViewZoomBaseCartography(zoomMap.getComponent()); |
356 |
layoutEnv.setControlBar(georefControlPanel.getComponent());
|
|
364 |
layoutEnv.setControlBar(getGeorefControlPanel().getComponent());
|
|
357 | 365 |
|
358 | 366 |
fManager.createLayout(layoutEnv); |
359 |
SynchronizedViews syncViews = sManager.createSyncViews(viewMap, viewRaster, zoomMap, zoomRaster, table, this); |
|
367 |
GeoreferencingView[] v = new GeoreferencingView[]{viewMap, viewRaster, zoomMap, zoomRaster}; |
|
368 |
IViewRequestManager[] rm = new IViewRequestManager[]{viewMapRequestManager, viewRasterRequestManager, zoomMapRequestManager, zoomRasterRequestManager}; |
|
369 |
syncViews = sManager.createSyncViews(v, rm, getGeoPointList(), pt, listener); |
|
360 | 370 |
|
361 |
getOptions().setType(WITH_MAP); |
|
371 |
getOptionsDataModel().setType(WITH_MAP);
|
|
362 | 372 |
// |
363 | 373 |
// viewsManager.setViews(viewRaster, viewMap, zoomRaster, zoomMap); |
364 | 374 |
// viewsManager.setRequestsManager(viewRasterRequestManager, viewMapRequestManager, zoomRasterRequestManager, zoomMapRequestManager); |
... | ... | |
393 | 403 |
// layersPointManager.createGCPPIxelLayer(viewRaster, viewRasterRequestManager, zoomRasterRequestManager); |
394 | 404 |
// layersPointManager.createGCPMapLayer(viewMap, viewMapRequestManager, zoomMapRequestManager); |
395 | 405 |
// |
406 |
processActions.setViewMapRequest(viewMapRequestManager); |
|
396 | 407 |
} catch (InvalidRequestException e1) { |
397 | 408 |
GeoreferencingSwingImplLibrary.messageBoxError("error_setview_preview", this, e1); |
398 | 409 |
fManager.closeAllWindows(); |
... | ... | |
434 | 445 |
* Gets the georeferencing options data model |
435 | 446 |
* @return |
436 | 447 |
*/ |
437 |
public GeoreferencingOptionsDataModel getOptions() { |
|
448 |
public GeoreferencingOptionsDataModel getOptionsDataModel() {
|
|
438 | 449 |
GeoreferencingSwingManager manager = GeoreferencingSwingLocator.getSwingManager(); |
439 | 450 |
return manager.getDataModel(); |
440 | 451 |
//options = manager.createWindowOptions(Georeferencing.DEFAULT_DEGREE, this); |
441 | 452 |
} |
442 |
|
|
443 |
/** |
|
444 |
* Controla los eventos de finalizaci?n de la capa con el |
|
445 |
* cursor gr?fico que controla el ?rea de la miniimagen asociada y |
|
446 |
* la terminaci?n de la operaci?n de mover punto |
|
447 |
*/ |
|
448 |
public void endAction(ToolEvent ev) { |
|
449 | 453 |
|
450 |
// //----------------- |
|
451 |
// //Operaci?n de zoom |
|
452 |
// if(ev.getSource() instanceof ZoomCursorGraphicLayer) { |
|
453 |
// try { |
|
454 |
// Rectangle2D ext = null; |
|
455 |
// if(viewRaster != null) { |
|
456 |
// ext = viewRaster.getCursorAdjustedWorldCoordinates(zoomRaster.getCanvasWidth(), zoomRaster.getCanvasHeight()); |
|
457 |
// viewsManager.getZoomRasterRequestManager().request(ext); |
|
458 |
// } |
|
459 |
// if(viewMap != null) { |
|
460 |
// ext = viewMap.getCursorAdjustedWorldCoordinates(zoomMap.getCanvasWidth(), zoomMap.getCanvasHeight()); |
|
461 |
// viewsManager.getZoomMapRequestManager().request(ext); |
|
462 |
// } |
|
463 |
// } catch (InvalidRequestException e1) { |
|
464 |
// RasterToolsUtil.messageBoxError("error_setview_preview", this); |
|
465 |
// } |
|
466 |
// } |
|
467 |
// |
|
468 |
// //----------- |
|
469 |
// //Mover punto |
|
470 |
// if(ev.getSource() instanceof GCPsGraphicLayer) { |
|
471 |
// buttonsListener.setEnableTableEvent(false); |
|
472 |
// //Se redibujan, se obtienen las coordenadas del punto y se actualiza la tabla |
|
473 |
// if(layersPointManager != null) |
|
474 |
// layersPointManager.redrawPoints(); |
|
475 |
// GPGraphic gPoint = ((GCPsGraphicLayer)ev.getSource()).getLastPoint(); |
|
476 |
// Point2D pRaster = gPoint.getGeoPoint().pixelPoint; |
|
477 |
// Point2D pMap = gPoint.getGeoPoint().mapPoint; |
|
478 |
// try { |
|
479 |
// table.updatePoint( new Double(pMap.getX()), |
|
480 |
// new Double(pMap.getY()), |
|
481 |
// new Double(pRaster.getX()), |
|
482 |
// new Double(pRaster.getY()), |
|
483 |
// gPoint.getGeoPoint().number); |
|
484 |
// table.getTable().getTable().getJTable().setRowSelectionInterval(gPoint.getGeoPoint().number, gPoint.getGeoPoint().number); |
|
485 |
// } catch (NotInitializeException e) { |
|
486 |
// RasterToolsUtil.messageBoxError("no_rows_selected", table, e); |
|
487 |
// } catch (ArrayIndexOutOfBoundsException e) { |
|
488 |
// RasterToolsUtil.messageBoxError("no_rows_selected", table, e); |
|
489 |
// } |
|
490 |
// if(getOptions().isCenterView()) |
|
491 |
// viewsManager.centerToPoint(gPoint.getGeoPoint().number); |
|
492 |
// buttonsListener.setEnableTableEvent(true); |
|
493 |
// } |
|
494 |
// |
|
495 |
// //------------------ |
|
496 |
// //Selecci?n de punto |
|
497 |
// if(ev.getSource() instanceof SelectPointTool) { |
|
498 |
// try { |
|
499 |
// //Se obtiene el punto seleccionado, se actualiza la tabla y se redibujan |
|
500 |
// int nPoint = table.getTable().getSelectedRow(); |
|
501 |
// GeoPoint gp = layersPointManager.getPointByNumber(nPoint); |
|
502 |
// |
|
503 |
// if(ev.getSource() == viewRasterSelectPointTool || ev.getSource() == zoomRasterSelectPointTool) { |
|
504 |
// Point2D[] p = (Point2D[])((SelectPointTool)ev.getSource()).getResult(); |
|
505 |
// table.updateRasterPoint(new Double(p[1].getX()), new Double(p[1].getY()), nPoint); |
|
506 |
// if(gp != null) { |
|
507 |
// gp.pixelPoint = p[1]; |
|
508 |
// layersPointManager.redrawPoints(); |
|
509 |
// } |
|
510 |
// } |
|
511 |
// if(ev.getSource() == viewMapSelectPointTool || ev.getSource() == zoomMapSelectPointTool) { |
|
512 |
// Point2D[] p = (Point2D[])((SelectPointTool)ev.getSource()).getResult(); |
|
513 |
// table.updateMapPoint(new Double(p[1].getX()), new Double(p[1].getY()), nPoint); |
|
514 |
// if(gp != null) { |
|
515 |
// gp.mapPoint = p[1]; |
|
516 |
// layersPointManager.redrawPoints(); |
|
517 |
// } |
|
518 |
// } |
|
519 |
// if(getOptions().isCenterView()) |
|
520 |
// viewsManager.centerToPoint(nPoint); |
|
521 |
// } catch (NotInitializeException e) { |
|
522 |
// RasterToolsUtil.messageBoxError("no_rows_selected", table, e); |
|
523 |
// } catch (ArrayIndexOutOfBoundsException e) { |
|
524 |
// RasterToolsUtil.messageBoxError("no_rows_selected", table, e); |
|
525 |
// } |
|
526 |
// } |
|
454 |
public GeoreferencingView getViewRaster() { |
|
455 |
return viewRaster; |
|
527 | 456 |
} |
528 |
|
|
529 |
/** |
|
530 |
* <P> |
|
531 |
* Controla las prioridades de eventos sobre la vista en las herramientas y capas de selecci?n. |
|
532 |
* Esto es necesario para que no se mezclen eventos entre capas. |
|
533 |
* <P></P> |
|
534 |
* Prioridades: |
|
535 |
* </P> |
|
536 |
* <UL> |
|
537 |
* <LI>Capa de ZoomCursorGraphicLayer</LI> |
|
538 |
* <LI>Capa de GCPsGraphicLayer</LI> |
|
539 |
* <LI>Tool de selecci?n de zoom rectangulo</LI> |
|
540 |
* <LI>Tool de selecci?n de puntos</LI> |
|
541 |
* </UL> |
|
542 |
*/ |
|
543 |
public void onTool(ToolEvent ev) { |
|
544 |
|
|
545 |
// //--------------------------- |
|
546 |
// //Operaci?n de cursor de zoom |
|
547 |
// if(ev.getSource() instanceof ZoomCursorGraphicLayer) { |
|
548 |
// layersPointManager.setActiveLayerPoints(false); |
|
549 |
// viewsManager.sleepActiveTools(); |
|
550 |
// return; |
|
551 |
// } |
|
552 |
// |
|
553 |
// //----------- |
|
554 |
// //Mover punto |
|
555 |
// if(ev.getSource() instanceof GCPsGraphicLayer) { |
|
556 |
// layersPointManager.setActiveLayerZoomCursor(false); |
|
557 |
// viewsManager.sleepActiveTools(); |
|
558 |
// return; |
|
559 |
// } |
|
560 |
// |
|
561 |
// //------------------ |
|
562 |
// //Selecci?n de punto |
|
563 |
// if(ev.getSource() instanceof SelectPointTool) { |
|
564 |
// if(viewMap != null) { |
|
565 |
// viewMap.getControl().selectTool(ZoomRectangleTool.class, false); |
|
566 |
// viewMap.getControl().selectTool(PanTool.class, false); |
|
567 |
// viewMap.getControl().getBSelectZoomArea().setSelected(false); |
|
568 |
// viewMap.getControl().getBMove().setSelected(false); |
|
569 |
// } |
|
570 |
// if(viewRaster != null) { |
|
571 |
// viewRaster.getControl().selectTool(ZoomRectangleTool.class, false); |
|
572 |
// viewRaster.getControl().selectTool(PanTool.class, false); |
|
573 |
// viewRaster.getControl().getBSelectZoomArea().setSelected(false); |
|
574 |
// viewRaster.getControl().getBMove().setSelected(false); |
|
575 |
// } |
|
576 |
// } |
|
577 |
// |
|
578 |
// //------------------------- |
|
579 |
// //Selecci?n de zoom ventana |
|
580 |
// if(ev.getSource() instanceof ZoomRectangleTool) { |
|
581 |
// if(viewMap != null) { |
|
582 |
// viewMap.getControl().selectTool(SelectPointTool.class, false); |
|
583 |
// viewMap.getControl().selectTool(PanTool.class, false); |
|
584 |
// viewMap.getControl().getBMove().setSelected(false); |
|
585 |
// } |
|
586 |
// if(viewRaster != null) { |
|
587 |
// viewRaster.getControl().selectTool(SelectPointTool.class, false); |
|
588 |
// viewRaster.getControl().selectTool(PanTool.class, false); |
|
589 |
// viewRaster.getControl().getBMove().setSelected(false); |
|
590 |
// } |
|
591 |
// table.getToolSelectPointButton().setSelected(false); |
|
592 |
// } |
|
593 |
// |
|
594 |
// //--------------------------- |
|
595 |
// //Selecci?n de desplazamiento |
|
596 |
// if(ev.getSource() instanceof PanTool) { |
|
597 |
// if(viewMap != null) { |
|
598 |
// viewMap.getControl().selectTool(SelectPointTool.class, false); |
|
599 |
// viewMap.getControl().selectTool(ZoomRectangleTool.class, false); |
|
600 |
// viewMap.getControl().getBSelectZoomArea().setSelected(false); |
|
601 |
// } |
|
602 |
// if(viewRaster != null) { |
|
603 |
// viewRaster.getControl().selectTool(SelectPointTool.class, false); |
|
604 |
// viewRaster.getControl().selectTool(ZoomRectangleTool.class, false); |
|
605 |
// viewRaster.getControl().getBSelectZoomArea().setSelected(false); |
|
606 |
// } |
|
607 |
// table.getToolSelectPointButton().setSelected(false); |
|
608 |
// } |
|
457 |
|
|
458 |
public GeoreferencingView getViewMap() { |
|
459 |
return viewMap; |
|
609 | 460 |
} |
610 |
|
|
611 |
/** |
|
612 |
* |
|
613 |
*/ |
|
614 |
public void offTool(ToolEvent ev) { |
|
615 |
|
|
616 |
// //----------------- |
|
617 |
// //Operaci?n de zoom |
|
618 |
// if(ev.getSource() instanceof ZoomCursorGraphicLayer) { |
|
619 |
// layersPointManager.setActiveLayerPoints(true); |
|
620 |
// viewsManager.awakeActiveTools(); |
|
621 |
// return; |
|
622 |
// } |
|
623 |
// |
|
624 |
// //----------- |
|
625 |
// //Mover punto |
|
626 |
// if(ev.getSource() instanceof GCPsGraphicLayer) { |
|
627 |
// layersPointManager.setActiveLayerZoomCursor(true); |
|
628 |
// viewsManager.awakeActiveTools(); |
|
629 |
// return; |
|
630 |
// } |
|
631 |
// |
|
632 |
// //Selecci?n de punto |
|
633 |
// /*if(ev.getSource() instanceof SelectPointTool) { |
|
634 |
// } |
|
635 |
// //Selecci?n de zoom ventana |
|
636 |
// if(ev.getSource() instanceof ZoomRectangleTool) { |
|
637 |
// }*/ |
|
461 |
|
|
462 |
public GeoreferencingView getZoomMap() { |
|
463 |
return zoomMap; |
|
638 | 464 |
} |
639 |
|
|
640 |
//******************************************************* |
|
641 |
//Eventos sobre las vistas |
|
642 |
|
|
643 |
|
|
644 |
public void addingTool(ViewEvent ev) { |
|
465 |
|
|
466 |
public GeoreferencingView getZoomRaster() { |
|
467 |
return zoomRaster; |
|
645 | 468 |
} |
646 | 469 |
|
647 |
public void endDraw(ViewEvent ev) { |
|
470 |
public ViewRasterRequestManager getZoomRasterRequestManager() { |
|
471 |
return zoomRasterRequestManager; |
|
648 | 472 |
} |
649 | 473 |
|
650 |
public void startDraw(ViewEvent ev) { |
|
474 |
public ViewMapRequestManager getZoomMapRequestManager() { |
|
475 |
return zoomMapRequestManager; |
|
651 | 476 |
} |
652 | 477 |
|
653 |
/** |
|
654 |
* Cuando cambia el zoom de alguna vista hay que recalcular la posici?n |
|
655 |
* del cursor de zoom |
|
656 |
*/ |
|
657 |
public void zoomViewChanged(ViewEvent ev) { |
|
658 |
// Rectangle2D ext = null; |
|
659 |
// try { |
|
660 |
// if(viewRaster != null && zoomRaster != null && viewsManager.getZoomRasterRequestManager() != null) { |
|
661 |
// ext = viewRaster.getCursorAdjustedWorldCoordinates(zoomRaster.getCanvasWidth(), zoomRaster.getCanvasHeight()); |
|
662 |
// viewsManager.getZoomRasterRequestManager().request(ext); |
|
663 |
// } |
|
664 |
// if(viewMap != null && zoomMap != null && viewsManager.getZoomMapRequestManager() != null) { |
|
665 |
// ext = viewMap.getCursorAdjustedWorldCoordinates(zoomMap.getCanvasWidth(), zoomMap.getCanvasHeight()); |
|
666 |
// viewsManager.getZoomMapRequestManager().request(ext); |
|
667 |
// } |
|
668 |
// }catch(InvalidRequestException ex) { |
|
669 |
// RasterToolsUtil.messageBoxError("error_set_view", table, ex); |
|
670 |
// } |
|
478 |
public GeorefControlPanel getGeorefControlPanel() { |
|
479 |
if(georefControlPanel == null) { |
|
480 |
georefControlPanel = sManager.createGeorefControlPanel(); |
|
481 |
} |
|
482 |
return georefControlPanel; |
|
671 | 483 |
} |
484 |
|
|
485 |
public SynchronizedViews getSyncViews() { |
|
486 |
return syncViews; |
|
487 |
} |
|
672 | 488 |
|
489 |
public GeoPointList getGeoPointList() { |
|
490 |
if(geoPointList == null) |
|
491 |
geoPointList = new GeoPointListImpl(); |
|
492 |
return geoPointList; |
|
493 |
} |
|
494 |
|
|
673 | 495 |
/** |
674 | 496 |
* Obtiene la capa a georreferenciar |
675 | 497 |
* @return FLyrRaster |
676 | 498 |
*/ |
677 |
/*public FLyrRaster getLayer() {
|
|
678 |
return lyrToGeoref;
|
|
679 |
}*/
|
|
499 |
public RasterDataStore getLayer() {
|
|
500 |
return launcher.getDataModel().getDataStore();
|
|
501 |
} |
|
680 | 502 |
|
681 | 503 |
} |
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/GeoreferencingProcessActions.java | ||
---|---|---|
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.app.georeferencingclient; |
|
20 |
|
|
21 |
import java.awt.geom.AffineTransform; |
|
22 |
import java.io.File; |
|
23 |
|
|
24 |
import org.gvsig.fmap.dal.coverage.RasterLocator; |
|
25 |
import org.gvsig.fmap.dal.coverage.datastruct.GeoPointList; |
|
26 |
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException; |
|
27 |
import org.gvsig.i18n.Messages; |
|
28 |
import org.gvsig.raster.fmap.layers.DefaultFLyrRaster; |
|
29 |
import org.gvsig.raster.fmap.layers.FLyrRaster; |
|
30 |
import org.gvsig.raster.georeferencing.app.georeferencingclient.listener.ViewMapRequestManager; |
|
31 |
import org.gvsig.raster.georeferencing.lib.impl.GeoTransformDataResult; |
|
32 |
import org.gvsig.raster.georeferencing.swing.exception.InvalidRequestException; |
|
33 |
import org.gvsig.raster.georeferencing.swing.impl.GeoreferencingSwingImplLibrary; |
|
34 |
import org.gvsig.raster.tools.algorithm.base.RasterBaseAlgorithmLibrary; |
|
35 |
import org.gvsig.raster.tools.algorithm.base.process.IProcessActions; |
|
36 |
import org.gvsig.raster.tools.algorithm.base.process.ProcessException; |
|
37 |
import org.gvsig.raster.tools.algorithm.base.process.RasterProcess; |
|
38 |
import org.gvsig.raster.tools.app.basic.RasterToolsUtil; |
|
39 |
|
|
40 |
/** |
|
41 |
* Gestor para operaciones con las vistas y zooms |
|
42 |
* |
|
43 |
* 04/02/2008 |
|
44 |
* @author Nacho Brodin nachobrodin@gmail.com |
|
45 |
*/ |
|
46 |
public class GeoreferencingProcessActions implements IProcessActions { |
|
47 |
private ViewMapRequestManager viewMapRequestManager = null; |
|
48 |
private GeoPointList gpList = null; |
|
49 |
private String fileName = null; |
|
50 |
|
|
51 |
//?ltima capa procesada con los puntos de control. Al cerrar la aplicaci?n |
|
52 |
//esta ser? la que se use como resultado |
|
53 |
private FLyrRaster lastTestLayer = null; |
|
54 |
|
|
55 |
public void setViewMapRequest(ViewMapRequestManager vMap) { |
|
56 |
viewMapRequestManager = vMap; |
|
57 |
} |
|
58 |
|
|
59 |
/** |
|
60 |
* Asigna el panel con la tabla |
|
61 |
* @param tablePanel |
|
62 |
*/ |
|
63 |
public void setGeoPointList(GeoPointList gpList) { |
|
64 |
this.gpList = gpList; |
|
65 |
} |
|
66 |
|
|
67 |
/** |
|
68 |
* A?ade una capa en la vista del mapa para previsualizar el resultado |
|
69 |
* @param lyr |
|
70 |
* @param algorithm Algoritmo con el que se realiza la transformaci?n |
|
71 |
*/ |
|
72 |
public void addTestRasterLayer( FLyrRaster lyr, |
|
73 |
int algorithm, |
|
74 |
int method, |
|
75 |
int order, |
|
76 |
String file, |
|
77 |
double cellsizeX, |
|
78 |
double cellsizeY, |
|
79 |
GeoTransformDataResult result) { |
|
80 |
if(!testNumberOfPoints(order)) |
|
81 |
return; |
|
82 |
|
|
83 |
fileName = file; |
|
84 |
FLyrRaster lyrClon = null; |
|
85 |
try { |
|
86 |
lyrClon = (FLyrRaster)lyr.cloneLayer(); |
|
87 |
} catch (Exception e1) { |
|
88 |
RasterToolsUtil.messageBoxError("error_clone_layer", this, e1); |
|
89 |
return; |
|
90 |
} |
|
91 |
|
|
92 |
if(algorithm == Georeferencing.AFFINE) { |
|
93 |
if(result == null) { |
|
94 |
RasterToolsUtil.messageBoxInfo("error_georef", this); |
|
95 |
return; |
|
96 |
} |
|
97 |
|
|
98 |
AffineTransform at = new AffineTransform( result.getPixelToMapCoefX()[1], |
|
99 |
result.getPixelToMapCoefY()[1], |
|
100 |
result.getPixelToMapCoefX()[2], |
|
101 |
result.getPixelToMapCoefY()[2], |
|
102 |
result.getPixelToMapCoefX()[0], |
|
103 |
result.getPixelToMapCoefY()[0]); |
|
104 |
lyrClon.setAffineTransform(at); |
|
105 |
lastTestLayer = lyrClon; |
|
106 |
} |
|
107 |
|
|
108 |
if(algorithm == Georeferencing.POLYNOMIAL) { |
|
109 |
RasterProcess process; |
|
110 |
try { |
|
111 |
process = RasterBaseAlgorithmLibrary.getManager().createRasterTask("GeoreferencingProcess"); |
|
112 |
process.addParam("fLayer", lyr); |
|
113 |
process.addParam("filename", file); |
|
114 |
process.addParam("method", new Integer(method)); |
|
115 |
process.addParam("gpcs", gpList); |
|
116 |
process.addParam("orden", new Integer(order)); |
|
117 |
process.addParam("xCellSize", new Double(cellsizeX)); |
|
118 |
process.addParam("yCellSize", new Double(cellsizeY)); |
|
119 |
process.setActions(this); |
|
120 |
process.start(); |
|
121 |
} catch (ProcessException e) { |
|
122 |
GeoreferencingSwingImplLibrary.messageBoxError("error_georef_process", null, e); |
|
123 |
} |
|
124 |
} |
|
125 |
|
|
126 |
//Con vista de de referencia cargamos la preview en esta |
|
127 |
if(viewMapRequestManager != null) { |
|
128 |
if(algorithm == Georeferencing.AFFINE) { |
|
129 |
try { |
|
130 |
viewMapRequestManager.addTestRasterLayer(lyrClon); |
|
131 |
} catch (InvalidRequestException e) { |
|
132 |
GeoreferencingSwingImplLibrary.messageBoxError("error_setview_preview", null, e); |
|
133 |
} |
|
134 |
} |
|
135 |
} |
|
136 |
} |
|
137 |
|
|
138 |
/** |
|
139 |
* Consulta si hay suficientes puntos de control en la lista para los calculos |
|
140 |
* @param order Orden del polinomio a utilizar |
|
141 |
* @return true si hay suficientes puntos de control y false si no los hay |
|
142 |
*/ |
|
143 |
private boolean testNumberOfPoints(int order) { |
|
144 |
if (gpList != null) { |
|
145 |
if(gpList.size() <= 0) { |
|
146 |
GeoreferencingSwingImplLibrary.messageBoxError("no_selected_point", null); |
|
147 |
return false; |
|
148 |
} |
|
149 |
|
|
150 |
// Obtenemos el n?mero de puntos activos |
|
151 |
int nPointsActive = 0; |
|
152 |
for (int i = 0; i < gpList.size(); i++) { |
|
153 |
if (gpList.get(i).isActive()) |
|
154 |
nPointsActive++; |
|
155 |
} |
|
156 |
int nPoints = (order + 1) * (order + 2) / 2; |
|
157 |
if (nPointsActive < nPoints) { |
|
158 |
GeoreferencingSwingImplLibrary.messageBoxError(Messages.getText("more_points") + ((int) Math.ceil(nPoints)), null); |
|
159 |
return false; |
|
160 |
} |
|
161 |
} |
|
162 |
return true; |
|
163 |
} |
|
164 |
|
|
165 |
/** |
|
166 |
* Elimina la capa de test de la vista de mapa |
|
167 |
* @throws InvalidRequestException |
|
168 |
*/ |
|
169 |
public void removeTestRasterLayer() { |
|
170 |
if(viewMapRequestManager != null) { |
|
171 |
try { |
|
172 |
viewMapRequestManager.removeTestRasterLayer(); |
|
173 |
} catch (InvalidRequestException e) { |
|
174 |
GeoreferencingSwingImplLibrary.messageBoxError("error_setview_preview", null); |
|
175 |
} |
|
176 |
} |
|
177 |
} |
|
178 |
|
|
179 |
/** |
|
180 |
* Cuando termina el proceso de georreferenciaci?n carga la capa en la |
|
181 |
* vista con cartograf?a de referencia si esta existe. |
|
182 |
*/ |
|
183 |
public void end(Object param) { |
|
184 |
if(viewMapRequestManager != null) { |
|
185 |
try { |
|
186 |
String f = RasterLocator.getManager().getFileUtils().getLastPart(fileName, File.separator); |
|
187 |
FLyrRaster lyr = DefaultFLyrRaster.createLayer(fileName, new File(f)); |
|
188 |
viewMapRequestManager.addTestRasterLayer(lyr); |
|
189 |
lastTestLayer = lyr; |
|
190 |
} catch (InvalidRequestException e) { |
|
191 |
GeoreferencingSwingImplLibrary.messageBoxError("error_setview_preview", null, e); |
|
192 |
} catch (LoadLayerException e) { |
|
193 |
GeoreferencingSwingImplLibrary.messageBoxError("error_setview_preview", null, e); |
|
194 |
} |
|
195 |
} |
|
196 |
} |
|
197 |
|
|
198 |
public void interrupted() { |
|
199 |
} |
|
200 |
|
|
201 |
/** |
|
202 |
* Obtiene la ?ltima capa procesada con los puntos de control |
|
203 |
* @return FLyrRaterSE |
|
204 |
*/ |
|
205 |
public FLyrRaster getLastTestLayer() { |
|
206 |
return lastTestLayer; |
|
207 |
} |
|
208 |
|
|
209 |
} |
|
0 | 210 |
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/TableDialogListener.java | ||
---|---|---|
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.event.ActionEvent; |
|
25 |
|
|
26 |
import javax.swing.event.TableModelEvent; |
|
27 |
|
|
28 |
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent; |
|
29 |
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener; |
|
30 |
import org.gvsig.raster.georeferencing.app.georeferencingclient.Georeferencing; |
|
31 |
import org.gvsig.raster.georeferencing.swing.control.GeorefControlPanel; |
|
32 |
import org.gvsig.raster.georeferencing.swing.control.GeorefControlPanelListener; |
|
33 |
|
|
34 |
/** |
|
35 |
* @author Nacho Brodin (nachobrodin@gmail.com) |
|
36 |
*/ |
|
37 |
public class TableDialogListener implements ButtonsPanelListener, GeorefControlPanelListener { |
|
38 |
|
|
39 |
public TableDialogListener(GeorefControlPanel table, Georeferencing app) { |
|
40 |
} |
|
41 |
|
|
42 |
public void actionButtonPressed(ButtonsPanelEvent e) { |
|
43 |
} |
|
44 |
|
|
45 |
public void actionPerformed(ActionEvent e) { |
|
46 |
// TODO Auto-generated method stub |
|
47 |
|
|
48 |
} |
|
49 |
|
|
50 |
public void tableChanged(TableModelEvent e) { |
|
51 |
// TODO Auto-generated method stub |
|
52 |
|
|
53 |
} |
|
54 |
|
|
55 |
} |
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/ViewMapRequestManager.java | ||
---|---|---|
37 | 37 |
import org.gvsig.fmap.mapcontext.layers.FLayers; |
38 | 38 |
import org.gvsig.fmap.mapcontrol.MapControl; |
39 | 39 |
import org.gvsig.raster.fmap.layers.FLyrRaster; |
40 |
import org.gvsig.raster.georeferencing.app.georeferencingclient.Georeferencing; |
|
41 | 40 |
import org.gvsig.raster.georeferencing.swing.exception.InvalidRequestException; |
42 | 41 |
import org.gvsig.raster.georeferencing.swing.view.GeoreferencingView; |
43 |
import org.gvsig.raster.georeferencing.swing.view.IExtensionRequest;
|
|
42 |
import org.gvsig.raster.georeferencing.swing.view.IViewRequestManager;
|
|
44 | 43 |
import org.gvsig.raster.georeferencing.swing.view.IGraphicLayer; |
44 |
import org.gvsig.tools.task.Cancellable; |
|
45 | 45 |
|
46 | 46 |
/** |
47 | 47 |
* @author Nacho Brodin (nachobrodin@gmail.com) |
48 | 48 |
*/ |
49 |
public class ViewMapRequestManager implements IExtensionRequest {
|
|
49 |
public class ViewMapRequestManager implements IViewRequestManager {
|
|
50 | 50 |
private FLayers lyrs = null; |
51 | 51 |
private GeoreferencingView view = null; |
52 | 52 |
private MapControl mapControl = null; |
... | ... | |
54 | 54 |
private Color backGroundColor = null; |
55 | 55 |
private FLyrRaster testLayer = null; |
56 | 56 |
|
57 |
public ViewMapRequestManager(GeoreferencingView view, Georeferencing app, MapControl mapControl) {
|
|
57 |
public ViewMapRequestManager(GeoreferencingView view, MapControl mapControl) { |
|
58 | 58 |
this.mapControl = mapControl; |
59 | 59 |
this.lyrs = mapControl.getMapContext().getLayers(); |
60 | 60 |
this.view = view; |
... | ... | |
160 | 160 |
DefaultMapContextDrawer mapContextDrawer = new DefaultMapContextDrawer(); |
161 | 161 |
mapContextDrawer.setMapContext(lyrs.getMapContext()); |
162 | 162 |
mapContextDrawer.setViewPort(vp); |
163 |
mapContextDrawer.draw(lyrs, initImg, img, null, mapControl.getMapContext().getScaleView()); |
|
163 |
Cancellable c = new Cancellable() { |
|
164 |
public void setCanceled(boolean canceled) { |
|
165 |
} |
|
166 |
|
|
167 |
public boolean isCanceled() { |
|
168 |
return false; |
|
169 |
} |
|
170 |
}; |
|
171 |
mapContextDrawer.draw(lyrs, initImg, img, c, mapControl.getMapContext().getScaleView()); |
|
164 | 172 |
//lyrs.draw(initImg, img, vp, new CancellableClass(), mapControl.getMapContext().getScaleView()); |
165 | 173 |
|
166 | 174 |
setDrawParams(initImg, extent); |
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/ApplicationControlsListener.java | ||
---|---|---|
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.event.ActionEvent; |
|
25 |
import java.awt.geom.Point2D; |
|
26 |
import java.io.IOException; |
|
27 |
|
|
28 |
import javax.swing.event.TableModelEvent; |
|
29 |
|
|
30 |
import org.gvsig.andami.PluginServices; |
|
31 |
import org.gvsig.andami.ui.mdiManager.IWindow; |
|
32 |
import org.gvsig.fmap.dal.coverage.datastruct.GeoPoint; |
|
33 |
import org.gvsig.fmap.dal.coverage.exception.RmfSerializerException; |
|
34 |
import org.gvsig.fmap.mapcontext.layers.FLayers; |
|
35 |
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent; |
|
36 |
import org.gvsig.i18n.Messages; |
|
37 |
import org.gvsig.raster.georeferencing.app.georeferencingclient.Georeferencing; |
|
38 |
import org.gvsig.raster.georeferencing.framework.GeoreferencingFrameworkLocator; |
|
39 |
import org.gvsig.raster.georeferencing.framework.GeoreferencingFrameworkManager; |
|
40 |
import org.gvsig.raster.georeferencing.swing.control.GeorefControlPanel; |
|
41 |
import org.gvsig.raster.georeferencing.swing.control.GeorefControlPanelListener; |
|
42 |
import org.gvsig.raster.georeferencing.swing.impl.option.GeorefOptionsDialog; |
|
43 |
import org.gvsig.raster.swing.impl.pagedtable.NotInitializeException; |
|
44 |
import org.gvsig.raster.swing.pagedtable.PagedTable; |
|
45 |
import org.gvsig.raster.tools.app.basic.RasterToolsUtil; |
|
46 |
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel; |
|
47 |
|
|
48 |
/** |
|
49 |
* Listener para los botones de control de la aplicaci?n de georreferenciaci?n. |
|
50 |
* F?sicamente est?n en el panel de la tabla de puntos de control. |
|
51 |
* |
|
52 |
* 25/01/2008 |
|
53 |
* @author Nacho Brodin nachobrodin@gmail.com |
|
54 |
*/ |
|
55 |
public class ApplicationControlsListener implements GeorefControlPanelListener { |
|
56 |
|
|
57 |
private PagedTable tablePanel = null; |
|
58 |
private Georeferencing appMain = null; |
|
59 |
private boolean enableTableEvent = true; |
|
60 |
private GeorefControlPanel controlPanel = null; |
|
61 |
private GeorefOptionsDialog optionsDialog = null; |
|
62 |
GeoreferencingFrameworkManager fManager = null; |
|
63 |
//private GeoPointsPersistence persistence = null; |
|
64 |
|
|
65 |
/** |
|
66 |
* Flag que estar? a true despu?s de crear un nuevo punto de control. Volver? a false |
|
67 |
* cuando se ejecute el evento de inserci?n de fila en una tabla. Esto es necesario para |
|
68 |
* que no se centre el punto sobre la vista despu?s de insertar un nuevo punto. Ya que las |
|
69 |
* vistas se van a la posici?n (0,0) |
|
70 |
*/ |
|
71 |
private boolean newPointCreated = false; |
|
72 |
|
|
73 |
/** |
|
74 |
* Constructor. Asigna el panel con los controles |
|
75 |
* @param tablePanel |
|
76 |
*/ |
|
77 |
public ApplicationControlsListener(PagedTable tablePanel, Georeferencing appMain) { |
|
78 |
this.tablePanel = tablePanel; |
|
79 |
this.appMain = appMain; |
|
80 |
this.controlPanel = appMain.getGeorefControlPanel(); |
|
81 |
this.controlPanel.setListener(this); |
|
82 |
this.fManager = GeoreferencingFrameworkLocator.getManager(); |
|
83 |
} |
|
84 |
|
|
85 |
/** |
|
86 |
* Eventos de los botones del cuadro de tabla y selecci?n de fila de tabla |
|
87 |
*/ |
|
88 |
public void actionPerformed(ActionEvent e) { |
|
89 |
//------------------------------------- |
|
90 |
//Finalizaci?n de la georreferenciaci?n |
|
91 |
if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bEndGeoref) |
|
92 |
endGeoref(); |
|
93 |
|
|
94 |
//----------------------------------------- |
|
95 |
//Centrar la vista en el punto seleccionado |
|
96 |
if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bCenterView) { |
|
97 |
try { |
|
98 |
appMain.getSyncViews().centerToPoint(tablePanel.getSelectedRows()[0]); |
|
99 |
} catch (NotInitializeException e1) { |
|
100 |
RasterToolsUtil.messageBoxYesOrNot("table_not_initialize", tablePanel, e1); |
|
101 |
} |
|
102 |
} |
|
103 |
|
|
104 |
//--------------------------------- |
|
105 |
//Selecci?n de una fila de la tabla |
|
106 |
if(e.getActionCommand().equals("SELECT_ROW")) { |
|
107 |
if(appMain.getOptionsDataModel().isCenterView() && !newPointCreated) |
|
108 |
appMain.getSyncViews().centerToPoint(e.getID()); |
|
109 |
newPointCreated = false; |
|
110 |
} |
|
111 |
|
|
112 |
//---------------------------------------------------------- |
|
113 |
//Seleccion de opciones. Se asignan las propiedades al abrir |
|
114 |
if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bOptions) { |
|
115 |
if(optionsDialog == null) |
|
116 |
optionsDialog = new GeorefOptionsDialog(Georeferencing.DEFAULT_DEGREE, this); |
|
117 |
optionsDialog.setDegree(appMain.getOptionsDataModel().getDegree()); |
|
118 |
optionsDialog.setAlgorithm(appMain.getOptionsDataModel().getAlgorithm()); |
|
119 |
optionsDialog.setBackGroundColor(appMain.getOptionsDataModel().getBackgroundColor()); |
|
120 |
optionsDialog.setTextColor(appMain.getOptionsDataModel().getTextColor()); |
|
121 |
optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getAddErrorsCSVCheck().setSelected(getOptions().isAddErrorsCSV()); |
|
122 |
optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getCenterViewCheck().setSelected(getOptions().isCenterView()); |
|
123 |
optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getShowNumberCheck().setSelected(getOptions().isShowNumber()); |
|
124 |
optionsDialog.setThresholdError(appMain.getOptionsDataModel().getThreshold()); |
|
125 |
optionsDialog.setInterpolationMethod(appMain.getOptionsDataModel().getInterpolationMethod()); |
|
126 |
optionsDialog.setOutFile(appMain.getOptionsDataModel().getOutFile()); |
|
127 |
optionsDialog.setXCellSize(appMain.getOptionsDataModel().getXCellSize()); |
|
128 |
optionsDialog.setYCellSize(appMain.getOptionsDataModel().getYCellSize()); |
|
129 |
fManager.showWindow(optionsDialog, 400, 420, Messages.getText("georeferencing")); |
|
130 |
} |
|
131 |
|
|
132 |
//------------------------------ |
|
133 |
//Selecci?n de puntos de control |
|
134 |
if(controlPanel.getButtonIDPressed(e.getSource()) == tablePanel.getToolSelectPointButton()) { |
|
135 |
if( tablePanel.getToolSelectPointButton().isSelected()) { |
|
136 |
try { |
|
137 |
if(!getPointManager().isSelectPointToolSelected()) { |
|
138 |
//No hay filas en la tabla |
|
139 |
if(tablePanel.getTable().getRowCount() == 0) { |
|
140 |
RasterToolsUtil.messageBoxError("no_rows", tablePanel); |
|
141 |
tablePanel.getToolSelectPointButton().setSelected(false); |
|
142 |
return; |
|
143 |
} |
|
144 |
|
|
145 |
//No hay filas seleccionadas en la tabla |
|
146 |
if(tablePanel.getTable().getSelectedRow() == -1) { |
|
147 |
RasterToolsUtil.messageBoxError("no_rows_selected", tablePanel); |
|
148 |
tablePanel.getToolSelectPointButton().setSelected(false); |
|
149 |
return; |
|
150 |
} |
|
151 |
getViewsManager().selectPointTool(true); |
|
152 |
} |
|
153 |
} catch (NotInitializeException e1) { |
|
154 |
RasterToolsUtil.messageBoxYesOrNot("table_not_initialize", tablePanel, e1); |
|
155 |
} |
|
156 |
} else { |
|
157 |
getViewsManager().selectPointTool(false); |
|
158 |
} |
|
159 |
} |
|
160 |
|
|
161 |
//------- |
|
162 |
//Testear |
|
163 |
if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bTest) { |
|
164 |
appMain.addTestRasterLayer(appMain.getLayer()); |
|
165 |
} |
|
166 |
|
|
167 |
//------------ |
|
168 |
//Fin del Test |
|
169 |
if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bEndTest) { |
|
170 |
if(appMain != null && appMain.getLastTestLayer() != null) { |
|
171 |
appMain.getLastTestLayer().setRemoveRasterFlag(false); |
|
172 |
appMain.removeTestRasterLayer(); |
|
173 |
} |
|
174 |
} |
|
175 |
|
|
176 |
//------------ |
|
177 |
//Salvar a CSV |
|
178 |
// if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bSaveToAscii) { |
|
179 |
// getPersistence().exportToCSV(getPointManager().getPointList(), getOptions().isAddErrorsCSV()); |
|
180 |
// } |
|
181 |
// |
|
182 |
// //---------------- |
|
183 |
// //Cargar desde CSV |
|
184 |
// if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bLoadFromAscii) { |
|
185 |
// setEnableTableEvent(false); |
|
186 |
// getPersistence().importFromCSV(getPointManager(), tablePanel); |
|
187 |
// setEnableTableEvent(true); |
|
188 |
// } |
|
189 |
// |
|
190 |
// //------------ |
|
191 |
// //Salvar a RMF |
|
192 |
// if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bSaveToXml) { |
|
193 |
// getPersistence().saveToRMF(getPointManager().getPointList(), appMain.getLayer().getDataSource()); |
|
194 |
// } |
|
195 |
// |
|
196 |
// //---------------- |
|
197 |
// //Cargar desde RMF |
|
198 |
// if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bLoadFromXml) { |
|
199 |
// setEnableTableEvent(false); |
|
200 |
// getPersistence().loadFromRMF(appMain.getLayer().getDataSource(), getPointManager(), tablePanel); |
|
201 |
// setEnableTableEvent(true); |
|
202 |
// } |
|
203 |
} |
|
204 |
|
|
205 |
/** |
|
206 |
* Acciones de finalizaci?n de georreferenciaci?n. La secuencia de acciones es: |
|
207 |
* <UL> |
|
208 |
* <LI>Preguntar si est? seguro de finalizar.</LI> |
|
209 |
* <LI>Preguntar si se desea salvar la transformaci?n (Solo en caso de ser af?n).</LI> |
|
210 |
* <LI>Preguntar si se desea cargar el resultado en la vista (Solo en caso de ser con mapa de referencia).</LI> |
|
211 |
* </UL> |
|
212 |
*/ |
|
213 |
private void endGeoref() { |
|
214 |
if(RasterToolsUtil.messageBoxYesOrNot("ask_end_georef", null)) { |
|
215 |
boolean saveTransform = false; |
|
216 |
if(appMain.getOptionsDataModel().getAlgorithm() == Georeferencing.AFFINE) { |
|
217 |
if(RasterToolsUtil.messageBoxYesOrNot("ask_save_transformation", null)) |
|
218 |
saveTransform = true; |
|
219 |
else { |
|
220 |
appMain.removeTestRasterLayer(); |
|
221 |
appMain.closeAllWindows(); |
|
222 |
return; |
|
223 |
} |
|
224 |
} |
|
225 |
|
|
226 |
if(appMain.getOptionsDataModel().getType() == Georeferencing.WITH_MAP) { |
|
227 |
if(appMain.getLastTestLayer() != null) |
|
228 |
appMain.getLastTestLayer().setRemoveRasterFlag(false); |
|
229 |
|
|
230 |
if(RasterToolsUtil.messageBoxYesOrNot("ask_load_view", null)) { |
|
231 |
FLayers lyrs = appMain.getLayers(); |
|
232 |
if(lyrs != null) { |
|
233 |
try { |
|
234 |
if(appMain.getLastTestLayer() != null){ |
|
235 |
lyrs.removeLayer(appMain.getLastTestLayer()); |
|
236 |
PluginServices.getMainFrame().enableControls(); |
|
237 |
} |
|
238 |
} catch(NullPointerException ex){ |
|
239 |
//No hay raster para eliminar |
|
240 |
} |
|
241 |
} |
|
242 |
|
|
243 |
//Cargar en la vista |
|
244 |
if(appMain.getOptionsDataModel().getAlgorithm() == Georeferencing.AFFINE) { |
|
245 |
appMain.addTestRasterLayer(appMain.getLayer()); |
|
246 |
} |
|
247 |
if(appMain.getOptionsDataModel().getAlgorithm() == Georeferencing.POLYNOMIAL) { |
|
248 |
if(appMain.getLastTestLayer() != null && lyrs != null) { |
|
249 |
appMain.getLayers().addLayer(appMain.getLastTestLayer()); |
|
250 |
} else { |
|
251 |
RasterToolsUtil.messageBoxInfo("raster_not_created", null); |
|
252 |
return; |
|
253 |
} |
|
254 |
} |
|
255 |
} else { |
|
256 |
appMain.removeTestRasterLayer(); |
|
257 |
} |
|
258 |
} |
|
259 |
|
|
260 |
if (saveTransform) { |
|
261 |
// Salvar transformaci?n |
|
262 |
if (appMain.getLastTestLayer() == null) { |
|
263 |
RasterToolsUtil.messageBoxInfo("raster_not_created", null); |
|
264 |
return; |
|
265 |
} |
|
266 |
|
|
267 |
// Guardamos la GeoReferenciacion de cada dataset |
|
268 |
IRasterDataSource dataSource = appMain.getLastTestLayer().getDataSource(); |
|
269 |
try { |
|
270 |
for (int i = 0; i < dataSource.getDatasetCount(); i++) { |
|
271 |
dataSource.saveObjectToRmf(i, RasterDataset.class, dataSource.getDataset(i)[0]); |
|
272 |
RasterUtilities.createWorldFile(dataSource.getNameDatasetStringList(0, 0)[i], dataSource.getAffineTransform(0), (int)dataSource.getWidth(), (int)dataSource.getHeight()); |
|
273 |
} |
|
274 |
} catch (RmfSerializerException e) { |
|
275 |
RasterToolsUtil.messageBoxError("error_salvando_rmf", null, e); |
|
276 |
} catch (IOException e) { |
|
277 |
RasterToolsUtil.messageBoxError("error_salvando_rmf", null, e); |
|
278 |
} |
|
279 |
} |
|
280 |
|
|
281 |
appMain.closeAllWindows(); |
|
282 |
} |
|
283 |
} |
|
284 |
|
|
285 |
/** |
|
286 |
* Evento de modificaci?n de la tabla de puntos de control. El a?adir, borrar |
|
287 |
* o mover puntos dentro de la tabla hace que estos se creen, borren o muevan en |
|
288 |
* la lista de GeoPoints. |
|
289 |
*/ |
|
290 |
public void tableChanged(TableModelEvent e) { |
|
291 |
if(!enableTableEvent) |
|
292 |
return; |
|
293 |
setEnableTableEvent(false); |
|
294 |
try{ |
|
295 |
|
|
296 |
//----------------------------------- |
|
297 |
//Inserci?n de nuevo fila en la tabla |
|
298 |
if(e.getType() == TableModelEvent.INSERT) { |
|
299 |
long id = appMain.getSyncViews().addPoint(new Point2D.Double(0, 0), new Point2D.Double(0, 0)); |
|
300 |
tablePanel.initializeRow(e.getFirstRow(), id); |
|
301 |
appMain.getSyncViews().calcPointsNumeration(); |
|
302 |
|
|
303 |
//Activamos la herramienta de pinchar punto en la vista al a?adir punto |
|
304 |
tablePanel.getToolSelectPointButton().setSelected(true); |
|
305 |
appMain.getSyncViews().selectPointTool(true); |
|
306 |
|
|
307 |
newPointCreated = true; |
|
308 |
} |
|
309 |
|
|
310 |
//----------------------------- |
|
311 |
//Eliminado de fila de la tabla |
|
312 |
if(e.getType() == TableModelEvent.DELETE) { |
|
313 |
for (int i = e.getLastRow(); i >= e.getFirstRow(); i--) |
|
314 |
appMain.getSyncViews().removePoint(i); |
|
315 |
appMain.getSyncViews().calcPointsNumeration(); |
|
316 |
tablePanel.updateErrors(); |
|
317 |
} |
|
318 |
|
|
319 |
//------------------------------------- |
|
320 |
//Actualizaci?n de una fila de la tabla |
|
321 |
if(e.getType() == TableModelEvent.UPDATE) { |
|
322 |
appMain.getSyncViews().calcPointsNumeration(); |
|
323 |
//Revisamos el flag de activo de cada punto poniendo el valor que pone en la entrada de la tabla |
|
324 |
for (int i = 0; i < tablePanel.getRowCount(); i++) { |
|
325 |
boolean active = ((Boolean) tablePanel.getValueAt(i, 0)).booleanValue(); |
|
326 |
int position = appMain.getSyncViews().getPointPositionByNumber(i); |
|
327 |
if (position < 0) |
|
328 |
return; |
|
329 |
GeoPoint pt = appMain.getGeoPointList().get(position); |
|
330 |
pt.setActive(active); |
|
331 |
appMain.getSyncViews().setVisiblePoint(active, position); |
|
332 |
|
|
333 |
//Para la funcionalidad de cambio de coordenadas desde la tabla: reasignamos el valor |
|
334 |
//de las coordenadas por si han cambiado estas |
|
335 |
double[] values = tablePanel.getCoordinates(i); |
|
336 |
|
|
337 |
appMain.getSyncViews().setCoordinates(position, values[0], values[1], values[2], values[3]); |
|
338 |
} |
|
339 |
tablePanel.updateErrors(); |
|
340 |
} |
|
341 |
|
|
342 |
}catch (NotInitializeException ex) { |
|
343 |
RasterToolsUtil.messageBoxError("table_not_initialize", tablePanel, ex); |
|
344 |
} |
|
345 |
setEnableTableEvent(true); |
|
346 |
} |
|
347 |
|
|
348 |
/** |
|
349 |
* Eventos de los botones del cuadro de opciones |
|
350 |
*/ |
|
351 |
public void actionButtonPressed(ButtonsPanelEvent e) { |
|
352 |
|
|
353 |
//--------------------------------------------------- |
|
354 |
//Bot?n de Aplicar y Aceptar en el cuadro de opciones |
|
355 |
if (e.getButton() == ButtonsPanel.BUTTON_APPLY || e.getButton() == ButtonsPanel.BUTTON_ACCEPT) { |
|
356 |
if(optionsDialog != null) { |
|
357 |
|
|
358 |
//Asignamos las propiedades seleccionadas |
|
359 |
appMain.getOptionsDataModel().setAlgorithm(optionsDialog.getAlgorithm()); |
|
360 |
appMain.getOptionsDataModel().setBackGroundColor(optionsDialog.getBackGroundColor()); |
|
361 |
appMain.getOptionsDataModel().setTextColor(optionsDialog.getTextColor()); |
|
362 |
appMain.getOptionsDataModel().setAddErrorsCSV(optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getAddErrorsCSVCheck().isSelected()); |
|
363 |
appMain.getOptionsDataModel().setCenterView(optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getCenterViewCheck().isSelected()); |
|
364 |
appMain.getOptionsDataModel().setShowNumber(optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getShowNumberCheck().isSelected()); |
|
365 |
appMain.getOptionsDataModel().setInterpolationMethod(optionsDialog.getInterpolationMethod()); |
|
366 |
appMain.getOptionsDataModel().setOutFile(optionsDialog.getOptionsPanel(this).getOutFileSelectionPanel().getOutFile()); |
|
367 |
|
|
368 |
//Recalculamos los errores si ha cambiado el grado |
|
369 |
if(optionsDialog.getDegree() != appMain.getOptionsDataModel().getDegree()) { |
|
370 |
appMain.getOptionsDataModel().setDegree(optionsDialog.getDegree()); |
|
371 |
tablePanel.updateErrors(); |
|
372 |
} |
|
373 |
|
|
374 |
try { |
|
375 |
appMain.getOptionsDataModel().setThreshold(Double.valueOf(optionsDialog.getThresholdError().getValue()).doubleValue()); |
|
376 |
appMain.getOptionsDataModel().setXCellSize(optionsDialog.getOptionsPanel(this).getCellSizePanel().getXCellSizeValue()); |
|
377 |
appMain.getOptionsDataModel().setYCellSize(optionsDialog.getOptionsPanel(this).getCellSizePanel().getYCellSizeValue()); |
|
378 |
} catch(NumberFormatException exc) { |
|
379 |
RasterToolsUtil.messageBoxError("error_numeric_format", null, exc); |
|
380 |
} |
|
381 |
|
|
382 |
appMain.getSyncViews().setGraphicsColor(appMain.getOptionsDataModel().getTextColor()); |
|
383 |
appMain.getSyncViews().setBackgroundColor(appMain.getOptionsDataModel().getBackGroundColor()); |
|
384 |
appMain.getSyncViews().setActiveNumberPoint(appMain.getOptionsDataModel().isShowNumber()); |
|
385 |
|
|
386 |
} |
|
387 |
} |
|
388 |
|
|
389 |
//-------------------------------------------------- |
|
390 |
// Bot?n de Cerrar y Aceptar en el cuadro de opciones |
|
391 |
if (e.getButton() == ButtonsPanel.BUTTON_CANCEL || e.getButton() == ButtonsPanel.BUTTON_ACCEPT) { |
|
392 |
if(optionsDialog != null) { |
|
393 |
fManager.closeWindow(optionsDialog); |
|
394 |
} |
|
395 |
} |
|
396 |
} |
|
397 |
|
|
398 |
/*private GeorefOptionsDialog getOptions() { |
|
399 |
if(georefOptions == null) |
|
400 |
georefOptions = GeoreferencingSwingLocator.getSwingManager().createWindowOptions(appMain.getOptionsDataModel().getDegree(), this); |
|
401 |
return georefOptions; |
|
402 |
}*/ |
|
403 |
|
|
404 |
/** |
|
405 |
* Consulta si est?n activos los eventos de tabla o no |
|
406 |
* @return true si est?n activos y false si no lo est?n |
|
407 |
*/ |
|
408 |
public boolean isEnableTableEvent() { |
|
409 |
return enableTableEvent; |
|
410 |
} |
|
411 |
|
|
412 |
/** |
|
413 |
* Activa o desactiva los eventos de tabla |
|
414 |
* @param enableTableEvent true para activarlos o false para desactivarlos |
|
415 |
*/ |
|
416 |
public void setEnableTableEvent(boolean enableTableEvent) { |
|
417 |
this.enableTableEvent = enableTableEvent; |
|
418 |
} |
|
419 |
|
|
420 |
|
|
421 |
/** |
|
422 |
* Obtiene una instancia del objeto que gestiona la |
|
423 |
* persistencia en disco de los puntos de control |
|
424 |
* @return GeoPointsPersistence |
|
425 |
*/ |
|
426 |
/*public GeoPointsPersistence getPersistence() { |
|
427 |
if(persistence == null) |
|
428 |
persistence = new GeoPointsPersistence(); |
|
429 |
return persistence; |
|
430 |
}*/ |
|
431 |
} |
|
0 | 432 |
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/ViewRasterRequestManager.java | ||
---|---|---|
45 | 45 |
import org.gvsig.raster.georeferencing.swing.impl.GeoreferencingSwingImplLibrary; |
46 | 46 |
import org.gvsig.raster.georeferencing.swing.impl.layer.GCPsGraphicLayer; |
47 | 47 |
import org.gvsig.raster.georeferencing.swing.view.GeoreferencingView; |
48 |
import org.gvsig.raster.georeferencing.swing.view.IExtensionRequest;
|
|
48 |
import org.gvsig.raster.georeferencing.swing.view.IViewRequestManager;
|
|
49 | 49 |
import org.gvsig.raster.georeferencing.swing.view.IGraphicLayer; |
50 | 50 |
|
51 | 51 |
/** |
52 | 52 |
* @author Nacho Brodin (nachobrodin@gmail.com) |
53 | 53 |
*/ |
54 |
public class ViewRasterRequestManager implements IExtensionRequest {
|
|
54 |
public class ViewRasterRequestManager implements IViewRequestManager {
|
|
55 | 55 |
private GeometryManager geomManager = GeometryLocator.getGeometryManager(); |
56 | 56 |
private GeoreferencingView view = null; |
57 | 57 |
private RasterDataStore store = null; |
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 | ||
---|---|---|
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) { |
Also available in: Unified diff