Revision 1717

View differences:

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/TableWrapper.java
1
package org.gvsig.raster.georeferencing.app.georeferencingclient;
2

  
3
import org.gvsig.fmap.dal.coverage.datastruct.GeoPoint;
4
import org.gvsig.fmap.dal.coverage.datastruct.GeoPointList;
5
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException;
6
import org.gvsig.i18n.Messages;
7
import org.gvsig.raster.georeferencing.app.georeferencingclient.gui.CheckBoxColumnEditor;
8
import org.gvsig.raster.georeferencing.app.georeferencingclient.gui.CheckBoxColumnRenderer;
9
import org.gvsig.raster.georeferencing.app.georeferencingclient.gui.ColorColumnRenderer;
10
import org.gvsig.raster.georeferencing.app.georeferencingclient.gui.GCPModel;
11
import org.gvsig.raster.georeferencing.lib.impl.GeoTransformDataResult;
12
import org.gvsig.raster.georeferencing.swing.GeoreferencingOptionsDataModel;
13
import org.gvsig.raster.georeferencing.swing.control.GeorefControlPanel;
14
import org.gvsig.raster.georeferencing.swing.impl.GeoreferencingSwingImplLibrary;
15
import org.gvsig.raster.swing.RasterSwingLocator;
16
import org.gvsig.raster.swing.RasterSwingManager;
17
import org.gvsig.raster.swing.impl.pagedtable.NotInitializeException;
18
import org.gvsig.raster.swing.pagedtable.ModelLoader;
19
import org.gvsig.raster.swing.pagedtable.PagedTable;
20
import org.gvsig.raster.tools.algorithm.base.RasterBaseAlgorithmLibrary;
21
import org.gvsig.raster.tools.algorithm.base.process.ProcessException;
22
import org.gvsig.raster.tools.algorithm.base.process.RasterProcess;
23
import org.gvsig.raster.tools.app.basic.RasterToolsUtil;
24

  
25
/**
26
 * API for the table to manage ground control points. This table
27
 * has a specific structure.
28
 * 
29
 * @author Nacho Brodin nachobrodin@gmail.com
30
 */
31
public class TableWrapper {
32
	private PagedTable                     table               = null;
33
	private RasterProcess                  process             = null;
34
	private GeoPointList                   gpList              = null;
35
	private GeoreferencingOptionsDataModel dataModel           = null;
36
	private GeorefControlPanel             controlPanel        = null;
37
	
38
	public TableWrapper(
39
			GeoPointList gpList, 
40
			GeoreferencingOptionsDataModel dataModel,
41
			GeorefControlPanel controlPanel) {
42
		this.gpList = gpList;
43
		this.dataModel = dataModel;
44
		this.controlPanel = controlPanel;
45
		try {
46
			process = RasterBaseAlgorithmLibrary.getManager().createRasterTask("GeoreferencingProcess");
47
		} catch (ProcessException e) {
48
			GeoreferencingSwingImplLibrary.messageBoxError("process_not_registered", null, e);
49
		}
50
	}
51
	
52
	public PagedTable getTable() {
53
		if(table == null) {
54
			RasterSwingManager manager = RasterSwingLocator.getSwingManager();
55
			String[] columnNames = {
56
					"-", 
57
					Messages.getText("num"), 
58
					Messages.getText("worldx"), 
59
					Messages.getText("worldy"), 
60
					Messages.getText("imagex"), 
61
					Messages.getText("imagey"), 
62
					"Error X", "Error Y", "RMS", ""};
63
			int[] columnSizes = {40, 37, -1, -1, -1, -1, -1, -1, -1, 0};
64

  
65
			GCPModel model = new GCPModel(columnNames);
66
			ModelLoader loader = manager.createModelLoader(model);
67
			CheckBoxColumnRenderer render = new CheckBoxColumnRenderer(null);
68
			CheckBoxColumnEditor editor = new CheckBoxColumnEditor();
69
			loader.setRenderForColumn(0, render);
70
			loader.setCellEditorForColumn(0, editor);
71
			loader.setColumnNames(columnNames);
72
			loader.setColumnWidths(columnSizes);
73
			
74
			table = manager.createPagedTable(loader);
75
		}
76
		return table;
77
	}
78
	
79
	/**
80
	 * Inicializa una fila de la tabla con los valores a 0, el n?mero de punto
81
	 * y el identificador. Esto es util para la inserci?n de un nuevo punto antes
82
	 * de introducir sus coordenadas.
83
	 * @param row Fila a inicializar
84
	 * @param id Identificador
85
	 */
86
	public void initializeRow(int row, long id) {
87
		getTable().setValueAt(new Integer(row), row, 1);
88
		for (int i = 2; i <= 9; i++) 
89
			getTable().setValueAt(new Double(0), row, i);
90
		getTable().setValueAt(new Long(id), row, getTable().getColumnCount() - 1);
91
	}
92
	
93
	/**
94
	 * Actualiza los errores de toda la tabla. Esta funci?n debe ser llamada cuando ha
95
	 * habido alg?n cambio en los valores de los puntos.
96
	 * @throws NotInitializeException
97
	 */
98
	public void updateErrors() {
99
		process.addParam("gpcs", gpList);
100
		int degree = 1;
101
		if(dataModel.getAlgorithm() == Georeferencing.POLYNOMIAL) 
102
			degree = dataModel.getDegree();
103
		process.addParam("orden", new Integer(degree));
104
		try {
105
			process.execute();
106
		} catch (ProcessException e) {
107
			return;
108
		} catch(RuntimeException e) {
109
			//Matriz singular
110
			return;
111
		} catch (ProcessInterruptedException e) {
112
		}
113
		GeoTransformDataResult result = (GeoTransformDataResult)process.getResult();
114
		if(result == null)
115
			return;
116

  
117
		//Actualizamos los errores de toda la tabla
118
		ColorColumnRenderer cr = new ColorColumnRenderer();
119
		for (int i = 0; i < gpList.size(); i++) {
120
			GeoPoint point = gpList.get(i);
121
			getTable().setValueAt(new Double(point.getErrorX()), point.getNumber(), 6);
122
			getTable().setValueAt(new Double(point.getErrorY()), point.getNumber(), 7);
123
			getTable().setValueAt(new Double(point.getRms()), point.getNumber(), 8);
124
			if (point.getRms() > dataModel.getThreshold())
125
				cr.addRowToColor1(point.getNumber());
126
			else
127
				cr.addRowToColor2(point.getNumber());
128
		}
129
		getTable().getJTable().getColumnModel().getColumn(8).setCellRenderer(cr);
130
		controlPanel.getError().setValue(result.getRmsTotal() + "");
131
	}
132
	
133
	/**
134
	 * Obtiene las coordenadas de una fila
135
	 * @param row Fila de la que se quieren obtener las coordenadas
136
	 * @return Array con 4 valores coordenadas real X, coordenada real Y, coordenadas raster X y coordenada raste Y
137
	 */
138
	public double[] getCoordinates(int row) {
139
		double xMap = 0, yMap = 0, xRaster = 0, yRaster = 0;
140
		boolean numberFormatException = false;
141

  
142
		Object value = getTable().getValueAt(row, 2);
143
		try {
144
			if(value instanceof Double) 
145
				xMap = ((Double)value).doubleValue();
146
			else if(value instanceof String) 
147
				xMap = Double.valueOf(((String)value)).doubleValue();
148
		} catch (NumberFormatException ex1) {
149
			numberFormatException = true;
150
		}
151

  
152
		value = getTable().getValueAt(row, 3);
153
		try {
154
			if(value instanceof Double) 
155
				yMap = ((Double)value).doubleValue();
156
			else if(value instanceof String) 
157
				yMap = Double.valueOf(((String)value)).doubleValue();
158
		} catch (NumberFormatException ex1) {
159
			numberFormatException = true;
160
		}
161

  
162
		try {
163
			value = getTable().getValueAt(row, 4);
164
			if(value instanceof Double) 
165
				xRaster = ((Double)value).doubleValue();
166
			else if(value instanceof String) 
167
				xRaster = Double.valueOf(((String)value)).doubleValue();
168
		} catch (NumberFormatException ex1) {
169
			numberFormatException = true;
170
		}
171

  
172
		try {
173
			value = getTable().getValueAt(row, 5);
174
			if(value instanceof Double) 
175
				yRaster = ((Double)value).doubleValue();
176
			else if(value instanceof String) 
177
				yRaster = Double.valueOf(((String)value)).doubleValue();
178
		} catch (NumberFormatException ex1) {
179
			numberFormatException = true;
180
		}
181

  
182
		//Esto es necesario porque aunque se produzca una excepci?n en la lectura
183
		//de un valor deben leerse los dem?s campos antes de terminar.
184
		if(numberFormatException) {
185
			RasterToolsUtil.messageBoxError("value_not_valid", table);
186
			getTable().setValueAt(new String(xMap + ""), row, 2);
187
			getTable().setValueAt(new String(yMap + ""), row, 3);
188
			getTable().setValueAt(new String(xRaster + ""), row, 4);
189
			getTable().setValueAt(new String(yRaster + ""), row, 5);
190

  
191
		}
192

  
193
		return new double[]{xMap, yMap, xRaster, yRaster};
194
	}
195
	
196
	/**
197
	 * Obtiene el resultado de aplicar el algoritmo de transformaci?n
198
	 * @return
199
	 */
200
	public GeoTransformDataResult getGeoTransformDataResult() {
201
		if(process != null)
202
			return (GeoTransformDataResult)process.getResult();
203
		return null;
204
	}
205
}
0 206

  
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
26 26
import java.util.List;
27 27

  
28 28
import javax.swing.JPanel;
29
import javax.swing.table.DefaultTableModel;
29 30

  
30 31
import org.gvsig.andami.PluginServices;
31 32
import org.gvsig.andami.ui.mdiManager.IWindow;
......
40 41
import org.gvsig.fmap.geom.primitive.Envelope;
41 42
import org.gvsig.fmap.mapcontrol.MapControl;
42 43
import org.gvsig.i18n.Messages;
43
import org.gvsig.raster.georeferencing.app.georeferencingclient.gui.CheckBoxColumnEditor;
44
import org.gvsig.raster.georeferencing.app.georeferencingclient.gui.CheckBoxColumnRenderer;
45
import org.gvsig.raster.georeferencing.app.georeferencingclient.gui.GCPModel;
46 44
import org.gvsig.raster.georeferencing.app.georeferencingclient.listener.ApplicationControlsListener;
47 45
import org.gvsig.raster.georeferencing.app.georeferencingclient.listener.LauncherDialogListener;
48 46
import org.gvsig.raster.georeferencing.app.georeferencingclient.listener.ViewDialogListener;
......
59 57
import org.gvsig.raster.georeferencing.swing.control.GeorefControlPanel;
60 58
import org.gvsig.raster.georeferencing.swing.exception.InvalidRequestException;
61 59
import org.gvsig.raster.georeferencing.swing.impl.GeoreferencingSwingImplLibrary;
62
import org.gvsig.raster.georeferencing.swing.impl.tool.SelectPointTool;
63 60
import org.gvsig.raster.georeferencing.swing.view.GeoreferencingView;
64 61
import org.gvsig.raster.georeferencing.swing.view.IViewRequestManager;
65 62
import org.gvsig.raster.georeferencing.swing.view.SynchronizedViews;
66
import org.gvsig.raster.swing.RasterSwingLocator;
67
import org.gvsig.raster.swing.RasterSwingManager;
68
import org.gvsig.raster.swing.pagedtable.ModelLoader;
69 63
import org.gvsig.raster.swing.pagedtable.PagedTable;
70 64

  
71 65
/**
......
97 91
	                                      fManager                       = null;
98 92
	private GeoreferencingSwingManager    sManager                       = null;
99 93
	
100
	private RasterDataStore               storeToGeoref                  = null;
101
	private String                        selectedView                   = null;
102
		
103 94
	//Dialogos
104 95
	private GeoreferencingLauncher        launcher                       = null;
105 96
	private GeoreferencingView            viewRaster                     = null;
......
109 100
	
110 101
	private ViewRasterRequestManager      zoomRasterRequestManager       = null;  
111 102
	private ViewMapRequestManager         zoomMapRequestManager          = null;
112
		
113
	//Herramientas de selecci?n
114
	private SelectPointTool               viewRasterSelectPointTool      = null;
115
	private SelectPointTool               viewMapSelectPointTool         = null;
116
	private SelectPointTool               zoomRasterSelectPointTool      = null;
117
	private SelectPointTool               zoomMapSelectPointTool         = null;
118 103
	
119 104
	private GeorefControlPanel            georefControlPanel             = null;
120 105

  
121
	private PagedTable                    table                          = null;
122
	private ApplicationControlsListener   buttonsListener                = null;
106
	private TableWrapper                  table                          = null;
123 107

  
124 108
	private MapControl                    mapCtrl                        = null;
125 109
	private GeoreferencingOptionsDataModel 
......
128 112
	private SynchronizedViews             syncViews                      = null;
129 113
	private ViewDialogListener            listener                       = null;
130 114
	private GeoreferencingProcessActions  processActions                 = null;
115
	private ApplicationControlsListener   appControlsListener            = null;
131 116
	
132
	//private LayersPointManager            layersPointManager             = null;
133 117
	class GeoPointListImpl extends ArrayList<GeoPoint> implements GeoPointList {
134 118
		private static final long serialVersionUID = 1L;
135 119
	}
......
139 123
		sManager = GeoreferencingSwingLocator.getSwingManager();
140 124
		listener = new ViewDialogListener(this);
141 125
		processActions = new GeoreferencingProcessActions();
142
		//getLayerPointManager();	
143
		//getViewsManager();
144 126
		launcher();
145 127
	}
146 128
	
......
165 147
		fManager.showWindow(launcher.getComponent(), 400, 420, Messages.getText("georeferencing"));
166 148
	}
167 149
	
168
	/**
169
	 * Obtiene el gestor para capas de puntos de la aplicaci?n,
170
	 * @return LayersPointManager
171
	 */
172
	/*	if(layersPointManager == null)
173
			layersPointManager = new LayersPointManager(this);
174
		return layersPointManager;
175
	}*/
176
	
177
	/**
178
	 * Obtiene el gestor para las vistas de la aplicaci?n,
179
	 * @return ViewsManager
180
	 */
181
	/*public ViewsManager getViewsManager() {
182
		if(viewsManager == null)
183
			viewsManager = new ViewsManager();
184
		return viewsManager;
185
	}*/
186
	
187
	public void setSelectedView(String selectedView) {
188
		this.selectedView = selectedView;
189
	}
190
	
191
	/**
192
	 * Obtiene la lista de capas de la vista de gvSIG
193
	 * @return
194
	 */
195
	/*public FLayers getLayers() {
196
		MapControl mapControl = null;
197
		IWindow[] windowList = PluginServices.getMDIManager().getAllWindows();
198
		for (int i = 0; i < windowList.length; i++) {
199
			if(windowList[i] instanceof IView) 
200
				mapControl = ((IView)windowList[i]).getMapControl();
201
		}
202
		if(mapControl != null)
203
			return mapControl.getMapContext().getLayers();
204
		return null;
205
	}*/
206
	
207
	private MapControl getMapCtrl() {
150
	public MapControl getMapCtrl() {
208 151
		if(mapCtrl == null) {
209 152
			IWindow[] windowList = PluginServices.getMDIManager().getAllWindows();
210 153
			for (int i = 0; i < windowList.length; i++) {
......
225 168
			initWindowsWithMap(dataModel);
226 169
		if(dataModel.getType() == Georeferencing.WITHOUT_MAP)
227 170
			initWindowsWithoutMap(dataModel);
171
		createAppControlsListener();
228 172
	}
229 173
	
230 174
	/**
......
234 178
	private void initWindowsWithoutMap(GeoreferencingOptionsDataModel dataModel) {
235 179
		RasterDataStore store = dataModel.getDataStore();
236 180
		
237
		getOptionsDataModel().setType(WITHOUT_MAP);
181
		getDataModel().setType(WITHOUT_MAP);
238 182
		 				
239 183
		//Inicializaci?n de la ventana con la vista raster
240 184
		viewRaster = sManager.createView(true, false, true, listener);
241 185
		ViewRasterRequestManager viewRasterRequestManager = new ViewRasterRequestManager(viewRaster, store);
186
		viewRaster.setMinxMaxyUL(false);
242 187
		viewRaster.setViewListener(listener);
243 188
		viewRaster.setRequestListener(viewRasterRequestManager);
244 189
		viewRaster.setTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, listener);
......
246 191
		//Inicializaci?n de la ventana del zoom de la vista raster
247 192
		zoomRaster = sManager.createZoom(true, false);
248 193
		zoomRasterRequestManager = new ViewRasterRequestManager(zoomRaster, store);
194
		zoomRaster.setMinxMaxyUL(false);
249 195
		zoomRaster.setRequestListener(zoomRasterRequestManager);
250 196
		zoomRaster.setTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, listener);
251 197
		
252
		PagedTable pt = getTable();
198
		PagedTable pt = getTableWrapper().getTable();
253 199
		
254 200
		//Creamos el layout
255 201
		
......
290 236
		}
291 237
	}
292 238
	
293
	public PagedTable getTable() {
239
	public TableWrapper getTableWrapper() {
294 240
		if(table == null) {
295
			RasterSwingManager manager = RasterSwingLocator.getSwingManager();
296
			String[] columnNames = {
297
					"-", 
298
					Messages.getText("num"), 
299
					Messages.getText("worldx"), 
300
					Messages.getText("worldy"), 
301
					Messages.getText("imagex"), 
302
					Messages.getText("imagey"), 
303
					"Error X", "Error Y", "RMS"};
304
			int[] columnSizes = {40, 37, -1, -1, -1, -1, -1, -1, -1};
305

  
306
			GCPModel model = new GCPModel(columnNames);
307
			ModelLoader loader = manager.createModelLoader(model);
308
			CheckBoxColumnRenderer render = new CheckBoxColumnRenderer(null);
309
			CheckBoxColumnEditor editor = new CheckBoxColumnEditor();
310
			loader.setRenderForColumn(0, render);
311
			loader.setCellEditorForColumn(0, editor);
312
			loader.setColumnNames(columnNames);
313
			loader.setColumnWidths(columnSizes);
314
			
315
			table = manager.createPagedTable(loader);
241
			table = new TableWrapper(getGeoPointList(), getDataModel(), getGeorefControlPanel());
316 242
		}
317 243
		return table;
318 244
	}
319 245
	
246
	public void createAppControlsListener() {
247
		if(appControlsListener == null) {
248
			appControlsListener = new ApplicationControlsListener(getTableWrapper(), this);
249
			((DefaultTableModel)getTableWrapper().getTable().getTableModel()).addTableModelListener(appControlsListener);
250
			getGeorefControlPanel().setListener(appControlsListener);
251
		}
252
	}
253
	
320 254
	/**
321 255
	 * Colocaci?n inicial de las ventanas del espacio de trabajo. Carga la configuraci?n
322 256
	 * de ventanas con cartograf?a de referencia.
......
324 258
	private void initWindowsWithMap(GeoreferencingOptionsDataModel dataModel) {
325 259
		RasterDataStore store = dataModel.getDataStore();
326 260
		
327
		getOptionsDataModel().setType(WITH_MAP);
261
		getDataModel().setType(WITH_MAP);
328 262
		 				
329 263
		//Inicializaci?n de la ventana con la vista raster
330 264
		viewRaster = sManager.createView(true, false, true, listener);
331 265
		ViewRasterRequestManager viewRasterRequestManager = new ViewRasterRequestManager(viewRaster, store);
266
		viewRaster.setMinxMaxyUL(false);
332 267
		viewRaster.setViewListener(listener);
333 268
		viewRaster.setRequestListener(viewRasterRequestManager);
334 269
		viewRaster.setTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, listener);
335 270
		
336 271
		//Inicializaci?n de la ventana del zoom de la vista raster
337 272
		zoomRaster = sManager.createZoom(true, false);
273
		zoomRaster.setMinxMaxyUL(false);
338 274
		zoomRasterRequestManager = new ViewRasterRequestManager(zoomRaster, store);
339 275
		zoomRaster.setRequestListener(zoomRasterRequestManager);
340 276
		zoomRaster.setTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, listener);
341 277
		
342 278
		//Inicializaci?n de la ventana con la vista del terreno
343 279
		viewMap = sManager.createView(true, false, false, listener);
280
		viewMap.setMinxMaxyUL(true);
344 281
		ViewMapRequestManager viewMapRequestManager = new ViewMapRequestManager(viewMap, getMapCtrl());
345 282
		viewMap.setViewListener(listener);
346 283
		viewMap.setRequestListener(viewMapRequestManager);
......
348 285
		
349 286
		//Inicializaci?n de la ventana del zoom de la vista del terreno
350 287
		zoomMap = sManager.createZoom(true, false);
288
		zoomMap.setMinxMaxyUL(true);
351 289
		zoomMapRequestManager = new ViewMapRequestManager(zoomMap, getMapCtrl());
352 290
		zoomMap.setRequestListener(zoomMapRequestManager);
353 291
		zoomMap.setTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, listener);
354 292
		
355
		PagedTable pt = getTable();
293
		PagedTable pt = getTableWrapper().getTable();
356 294
		
357 295
		//Creamos el layout
358 296
		LayoutEnvironment layoutEnv = fManager.createLayoutEnvironment();
......
368 306
		IViewRequestManager[] rm = new IViewRequestManager[]{viewMapRequestManager, viewRasterRequestManager, zoomMapRequestManager, zoomRasterRequestManager};
369 307
		syncViews = sManager.createSyncViews(v, rm, getGeoPointList(), pt, listener);
370 308
		
371
		getOptionsDataModel().setType(WITH_MAP);
309
		getDataModel().setType(WITH_MAP);
372 310
//		
373 311
//		viewsManager.setViews(viewRaster, viewMap, zoomRaster, zoomMap);
374 312
//		viewsManager.setRequestsManager(viewRasterRequestManager, viewMapRequestManager, zoomRasterRequestManager, zoomMapRequestManager);
......
412 350
			fManager.closeAllWindows();
413 351
		}
414 352
	}
415
	
416
	/**
417
	 * A?ade una capa en la vista del mapa para previsualizar el resultado
418
	 * @param lyr
419
	 */
420
	/*public void addTestRasterLayer(FLyrRaster lyr) {
421
		viewsManager.addTestRasterLayer(lyr, 
422
				getOptions().getAlgorithm(), 
423
				getOptions().getInterpolationMethod(), 
424
				getOptions().getDegree(), 
425
				getOptions().getOutFile());
426
	}*/
427
	
428
	/**
429
	 * Elimina la capa de test de la vista de mapa
430
	 * @throws InvalidRequestException 
431
	 */
432
	/*public void removeTestRasterLayer() {
433
		viewsManager.removeTestRasterLayer();
434
	}*/
435
	
436
	/**
437
	 * Obtiene la ?ltima capa procesada con los puntos de  control
438
	 * @return FLyrRaterSE
439
	 */
440
	/*public FLyrRaster getLastTestLayer() {
441
		return viewsManager.getLastTestLayer();
442
	}*/
443
	
444
	/**
445
	 * Gets the georeferencing options data model
446
	 * @return
447
	 */
448
	public GeoreferencingOptionsDataModel getOptionsDataModel() {
449
		GeoreferencingSwingManager manager = GeoreferencingSwingLocator.getSwingManager();
450
		return manager.getDataModel();
451
		//options = manager.createWindowOptions(Georeferencing.DEFAULT_DEGREE, this);
452
	}
453 353
		
454 354
	public GeoreferencingView getViewRaster() {
455 355
		return viewRaster;
......
499 399
	public RasterDataStore getLayer() {
500 400
		return launcher.getDataModel().getDataStore();
501 401
	}
402

  
403
	public GeoreferencingProcessActions getProcessActions() {
404
		return processActions;
405
	}
406
	
407
	public GeoreferencingOptionsDataModel getDataModel() {
408
		return launcher.getDataModel();
409
	}
502 410
		
503 411
}
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
23 23

  
24 24
import org.gvsig.fmap.dal.coverage.RasterLocator;
25 25
import org.gvsig.fmap.dal.coverage.datastruct.GeoPointList;
26
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
26 27
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
27 28
import org.gvsig.i18n.Messages;
28 29
import org.gvsig.raster.fmap.layers.DefaultFLyrRaster;
......
50 51
	
51 52
	//?ltima capa procesada con los puntos de control. Al cerrar la aplicaci?n 
52 53
	//esta ser? la que se use como resultado 
53
	private FLyrRaster                        lastTestLayer                  = null;
54
	private FLyrRaster                        lastTestLyr                    = null;
54 55

  
55 56
	public void setViewMapRequest(ViewMapRequestManager vMap) {
56 57
		viewMapRequestManager = vMap;
......
68 69
	 * A?ade una capa en la vista del mapa para previsualizar el resultado
69 70
	 * @param lyr
70 71
	 * @param algorithm Algoritmo con el que se realiza la transformaci?n
72
	 * @throws LoadLayerException 
71 73
	 */
72
	public void addTestRasterLayer(	FLyrRaster lyr, 
74
	public void addTestRasterLayer(	RasterDataStore store, 
73 75
									int algorithm, 
74 76
									int method, 
75 77
									int order, 
76 78
									String file,
77 79
									double cellsizeX,
78 80
									double cellsizeY,
79
									GeoTransformDataResult result) {
81
									GeoTransformDataResult result) throws LoadLayerException {
80 82
		if(!testNumberOfPoints(order))
81 83
			return;
82 84
		
83 85
		fileName = file;
84
		FLyrRaster lyrClon = null;
86
		RasterDataStore storeClon = null;
85 87
		try {
86
			lyrClon = (FLyrRaster)lyr.cloneLayer();
88
			storeClon = store.cloneDataStore();
87 89
		} catch (Exception e1) {
88 90
			RasterToolsUtil.messageBoxError("error_clone_layer", this, e1);
89 91
			return;
......
95 97
				return;
96 98
			}
97 99

  
98
			AffineTransform at = new AffineTransform(	result.getPixelToMapCoefX()[1], 
100
			AffineTransform at = new AffineTransform(	
101
					result.getPixelToMapCoefX()[1], 
99 102
					result.getPixelToMapCoefY()[1], 
100 103
					result.getPixelToMapCoefX()[2], 
101 104
					result.getPixelToMapCoefY()[2], 
102 105
					result.getPixelToMapCoefX()[0], 
103 106
					result.getPixelToMapCoefY()[0]);
104
			lyrClon.setAffineTransform(at);
105
			lastTestLayer = lyrClon;
107
			storeClon.setAffineTransform(at);
108
			
106 109
		}
107
			
110
		
111
		DefaultFLyrRaster lyr = new DefaultFLyrRaster();
112
		lyr.setDataStore(storeClon);
113
		lastTestLyr = lyr;	
114
		
108 115
		if(algorithm == Georeferencing.POLYNOMIAL) {
109 116
			RasterProcess process;
110 117
			try {
......
127 134
		if(viewMapRequestManager != null) {
128 135
			if(algorithm == Georeferencing.AFFINE) {
129 136
				try {
130
					viewMapRequestManager.addTestRasterLayer(lyrClon);
137
					viewMapRequestManager.addTestRasterLayer(lyr);
131 138
				} catch (InvalidRequestException e) {
132 139
					GeoreferencingSwingImplLibrary.messageBoxError("error_setview_preview", null, e);
133 140
				}
......
143 150
	private boolean testNumberOfPoints(int order) {
144 151
		if (gpList != null) {
145 152
			if(gpList.size() <= 0) {
146
				GeoreferencingSwingImplLibrary.messageBoxError("no_selected_point", null);
153
				GeoreferencingSwingImplLibrary.messageBoxError("no_selected_points", null);
147 154
				return false;
148 155
			}
149 156
			
......
186 193
				String f = RasterLocator.getManager().getFileUtils().getLastPart(fileName, File.separator);
187 194
				FLyrRaster lyr = DefaultFLyrRaster.createLayer(fileName, new File(f));
188 195
				viewMapRequestManager.addTestRasterLayer(lyr);
189
				lastTestLayer = lyr;
196
				lastTestLyr = lyr;
190 197
			} catch (InvalidRequestException e) {
191 198
				GeoreferencingSwingImplLibrary.messageBoxError("error_setview_preview", null, e);
192 199
			} catch (LoadLayerException e) {
......
203 210
	 * @return FLyrRaterSE
204 211
	 */
205 212
	public FLyrRaster getLastTestLayer() {
206
		return lastTestLayer;
213
		return lastTestLyr;
207 214
	}
208 215
	
209 216
}
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/gui/ColorColumnRenderer.java
1
package org.gvsig.raster.georeferencing.app.georeferencingclient.gui;
2

  
3
import java.awt.Color;
4
import java.awt.Component;
5
import java.util.ArrayList;
6

  
7
import javax.swing.JTable;
8
import javax.swing.table.DefaultTableCellRenderer;
9

  
10
/**
11
 * Renderer para cambiar el color a la columna de la tabla
12
 * 06/02/2008
13
 * @author Nacho Brodin nachobrodin@gmail.com
14
 */
15
public class ColorColumnRenderer extends DefaultTableCellRenderer {
16
	private static final long   serialVersionUID = 1L;
17
	private Color back = Color.red;
18
	private Color fore = Color.white;
19
	private Color back2 = Color.white;
20
	private Color fore2 = Color.black;
21
	private ArrayList<Integer> color1 = null;
22
	private ArrayList<Integer> color2 = null;
23
 	
24
	 public ColorColumnRenderer() {
25
			super(); 
26
			color1 = new ArrayList<Integer>();
27
			color2 = new ArrayList<Integer>();
28
	 }
29
	 
30
	 /**
31
		* A?ade una fila al tipo de color 1
32
		* @param row
33
		*/
34
	 public void addRowToColor1(int row) {
35
		 color1.add(new Integer(row));
36
	 }
37
	 
38
	 /**
39
		* A?ade una fila al tipo de color 2
40
		* @param row
41
		*/
42
	 public void addRowToColor2(int row) {
43
		 color2.add(new Integer(row));
44
	 }
45
		
46
	 public Component getTableCellRendererComponent (JTable table, Object value, boolean isSelected,
47
														 boolean hasFocus, int row, int column) {
48
			Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
49
			for (int i = 0; i < color1.size(); i++) {
50
				if(((Integer)color1.get(i)).intValue() == row) {
51
					cell.setBackground(back);
52
					cell.setForeground(fore);
53
				}
54
			}
55
		 for (int i = 0; i < color2.size(); i++) {
56
			 if(((Integer)color2.get(i)).intValue() == row) {
57
				 cell.setBackground(back2);
58
				 cell.setForeground(fore2);
59
			 }
60
		 }
61
			return cell;
62
	 }
63
}
0 64

  
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
39 39
import org.gvsig.raster.fmap.layers.FLyrRaster;
40 40
import org.gvsig.raster.georeferencing.swing.exception.InvalidRequestException;
41 41
import org.gvsig.raster.georeferencing.swing.view.GeoreferencingView;
42
import org.gvsig.raster.georeferencing.swing.view.IGraphicLayer;
42 43
import org.gvsig.raster.georeferencing.swing.view.IViewRequestManager;
43
import org.gvsig.raster.georeferencing.swing.view.IGraphicLayer;
44 44
import org.gvsig.tools.task.Cancellable;
45 45

  
46 46
/** 
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
23 23

  
24 24
import java.awt.event.ActionEvent;
25 25
import java.awt.geom.Point2D;
26
import java.io.IOException;
27 26

  
28 27
import javax.swing.event.TableModelEvent;
29 28

  
30 29
import org.gvsig.andami.PluginServices;
31
import org.gvsig.andami.ui.mdiManager.IWindow;
32 30
import org.gvsig.fmap.dal.coverage.datastruct.GeoPoint;
33 31
import org.gvsig.fmap.dal.coverage.exception.RmfSerializerException;
32
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
33
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
34 34
import org.gvsig.fmap.mapcontext.layers.FLayers;
35
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
35 36
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
36 37
import org.gvsig.i18n.Messages;
37 38
import org.gvsig.raster.georeferencing.app.georeferencingclient.Georeferencing;
39
import org.gvsig.raster.georeferencing.app.georeferencingclient.TableWrapper;
38 40
import org.gvsig.raster.georeferencing.framework.GeoreferencingFrameworkLocator;
39 41
import org.gvsig.raster.georeferencing.framework.GeoreferencingFrameworkManager;
42
import org.gvsig.raster.georeferencing.swing.GeoreferencingOptionsDataModel;
43
import org.gvsig.raster.georeferencing.swing.GeoreferencingSwingLibrary;
40 44
import org.gvsig.raster.georeferencing.swing.control.GeorefControlPanel;
41 45
import org.gvsig.raster.georeferencing.swing.control.GeorefControlPanelListener;
42 46
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;
47
import org.gvsig.raster.georeferencing.swing.view.SynchronizedViews;
45 48
import org.gvsig.raster.tools.app.basic.RasterToolsUtil;
46
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
47 49

  
48 50
/**
49 51
 * Listener para los botones de control de la aplicaci?n de georreferenciaci?n.
......
54 56
 */
55 57
public class ApplicationControlsListener implements GeorefControlPanelListener {
56 58

  
57
	private PagedTable                tablePanel          = null;
59
	private TableWrapper              tableWrapper        = null;
58 60
	private Georeferencing            appMain             = null;
59 61
	private boolean                   enableTableEvent    = true;
60 62
	private GeorefControlPanel        controlPanel        = null;
......
74 76
	 * Constructor. Asigna el panel con los controles
75 77
	 * @param tablePanel
76 78
	 */
77
	public ApplicationControlsListener(PagedTable tablePanel, Georeferencing appMain) {
78
		this.tablePanel = tablePanel;
79
	public ApplicationControlsListener(TableWrapper tableWrapper, Georeferencing appMain) {
80
		this.tableWrapper = tableWrapper;
79 81
		this.appMain = appMain;
80 82
		this.controlPanel = appMain.getGeorefControlPanel();
81 83
		this.controlPanel.setListener(this);
82 84
		this.fManager = GeoreferencingFrameworkLocator.getManager();
83 85
	}
86
	
87
	private SynchronizedViews getSyncViews() {
88
		return appMain.getSyncViews();
89
	}
90
	
91
	private GeoreferencingOptionsDataModel getDataModel() {
92
		return appMain.getDataModel();
93
	}
84 94

  
85 95
	/**
86 96
	 * Eventos de los botones del cuadro de tabla y selecci?n de fila de tabla
......
94 104
		//-----------------------------------------
95 105
		//Centrar la vista en el punto seleccionado
96 106
		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
			}
107
			getSyncViews().centerToPoint(tableWrapper.getTable().getSelectedRows()[0]);
102 108
		}
103 109

  
104 110
		//---------------------------------
105 111
		//Selecci?n de una fila de la tabla
106 112
		if(e.getActionCommand().equals("SELECT_ROW")) {
107
			if(appMain.getOptionsDataModel().isCenterView() && !newPointCreated)
108
				appMain.getSyncViews().centerToPoint(e.getID());
113
			if(getDataModel().isCenterView() && !newPointCreated)
114
				getSyncViews().centerToPoint(e.getID());
109 115
			newPointCreated = false;
110 116
		}
111 117

  
......
114 120
		if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bOptions) {
115 121
			if(optionsDialog == null)
116 122
				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());
123
			optionsDialog.setDegree(getDataModel().getDegree());
124
			optionsDialog.setAlgorithm(getDataModel().getAlgorithm());
125
			optionsDialog.setBackGroundColor(getDataModel().getBackgroundColor());
126
			optionsDialog.setTextColor(getDataModel().getTextColor());
127
			optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getAddErrorsCSVCheck().setSelected(getDataModel().isAddErrorsCSV());
128
			optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getCenterViewCheck().setSelected(getDataModel().isCenterView());
129
			optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getShowNumberCheck().setSelected(getDataModel().isShowNumber());
130
			optionsDialog.setThresholdError(getDataModel().getThreshold());
131
			optionsDialog.setInterpolationMethod(getDataModel().getInterpolationMethod());
132
			optionsDialog.setOutFile(getDataModel().getOutFile());
133
			optionsDialog.setXCellSize(getDataModel().getXCellSize());
134
			optionsDialog.setYCellSize(getDataModel().getYCellSize());
129 135
			fManager.showWindow(optionsDialog, 400, 420, Messages.getText("georeferencing"));
130 136
		}
131 137

  
132 138
		//------------------------------
133 139
		//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
						}
140
		if(e.getSource() == appMain.getGeorefControlPanel().getToolSelectPointButton()) {
141
			if(appMain.getGeorefControlPanel().getToolSelectPointButton().isSelected()) {
142
				if(appMain.getViewRaster().getToolSelected() != GeoreferencingSwingLibrary.SELECT_POINT_TOOL) {
143
					//No hay filas en la tabla
144
					if(tableWrapper.getTable().getRowCount() == 0) {
145
						RasterToolsUtil.messageBoxError("no_rows", tableWrapper.getTable());
146
						appMain.getGeorefControlPanel().getToolSelectPointButton().setSelected(false);
147
						return;
148
					}
144 149

  
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);
150
					//No hay filas seleccionadas en la tabla
151
					if(tableWrapper.getTable().getSelectedRows() == null) {
152
						RasterToolsUtil.messageBoxError("no_rows_selected", tableWrapper.getTable());
153
						appMain.getGeorefControlPanel().getToolSelectPointButton().setSelected(false);
154
						return;
152 155
					}
153
				} catch (NotInitializeException e1) {
154
					RasterToolsUtil.messageBoxYesOrNot("table_not_initialize", tablePanel, e1);
156
					getSyncViews().selectPointTool(true);
155 157
				}
156 158
			} else {
157
				getViewsManager().selectPointTool(false);
159
				getSyncViews().selectPointTool(false);
158 160
			}
159 161
		}
160 162

  
161 163
		//-------
162 164
		//Testear
163 165
		if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bTest) {
164
			appMain.addTestRasterLayer(appMain.getLayer());
166
			try {
167
				appMain.getProcessActions().addTestRasterLayer(
168
						appMain.getLayer(), 
169
						getDataModel().getAlgorithm(), 
170
						getDataModel().getInterpolationMethod(), 
171
						getDataModel().getDegree(), 
172
						getDataModel().getOutFile(),
173
						getDataModel().getXCellSize(),
174
						getDataModel().getYCellSize(),
175
						tableWrapper.getGeoTransformDataResult());
176
			} catch (LoadLayerException e1) {
177
				RasterToolsUtil.messageBoxError("error_loading_layer", tableWrapper.getTable(), e1);
178
			}
165 179
		}
166 180

  
167 181
		//------------
168 182
		//Fin del Test
169 183
		if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bEndTest) {
170
			if(appMain != null && appMain.getLastTestLayer() != null) {
171
				appMain.getLastTestLayer().setRemoveRasterFlag(false);
172
				appMain.removeTestRasterLayer();
184
			if(appMain != null && appMain.getProcessActions().getLastTestLayer() != null) {
185
				appMain.getProcessActions().getLastTestLayer().setRemoveRasterFlag(false);
186
				appMain.getProcessActions().removeTestRasterLayer();
173 187
			}
174 188
		}
175 189

  
......
213 227
	private void endGeoref() {
214 228
		if(RasterToolsUtil.messageBoxYesOrNot("ask_end_georef", null)) {
215 229
			boolean saveTransform = false;
216
			if(appMain.getOptionsDataModel().getAlgorithm() == Georeferencing.AFFINE) {
230
			if(getDataModel().getAlgorithm() == Georeferencing.AFFINE) {
217 231
				if(RasterToolsUtil.messageBoxYesOrNot("ask_save_transformation", null))
218 232
					saveTransform = true;
219 233
				else {
220
					appMain.removeTestRasterLayer();
221
					appMain.closeAllWindows();
234
					appMain.getProcessActions().removeTestRasterLayer();
235
					fManager.closeAllWindows();
222 236
					return;
223 237
				}
224 238
			}
225 239

  
226
			if(appMain.getOptionsDataModel().getType() == Georeferencing.WITH_MAP) {
227
				if(appMain.getLastTestLayer() != null)
228
					appMain.getLastTestLayer().setRemoveRasterFlag(false);
240
			if(getDataModel().getType() == Georeferencing.WITH_MAP) {
241
				if(appMain.getProcessActions().getLastTestLayer() != null)
242
					appMain.getProcessActions().getLastTestLayer().setRemoveRasterFlag(false);
229 243

  
230 244
				if(RasterToolsUtil.messageBoxYesOrNot("ask_load_view", null)) {
231
					FLayers lyrs = appMain.getLayers();
245
					FLayers lyrs = appMain.getMapCtrl().getMapContext().getLayers();
232 246
					if(lyrs != null) {
233 247
						try {
234
							if(appMain.getLastTestLayer() != null){
235
								lyrs.removeLayer(appMain.getLastTestLayer());
248
							if(appMain.getProcessActions().getLastTestLayer() != null){
249
								lyrs.removeLayer(appMain.getProcessActions().getLastTestLayer());
236 250
								PluginServices.getMainFrame().enableControls();
237 251
							}
238 252
						} catch(NullPointerException ex){
......
241 255
					}
242 256

  
243 257
					//Cargar en la vista
244
					if(appMain.getOptionsDataModel().getAlgorithm() == Georeferencing.AFFINE) {
245
						appMain.addTestRasterLayer(appMain.getLayer());
258
					if(getDataModel().getAlgorithm() == Georeferencing.AFFINE) {
259
						try {
260
							appMain.getProcessActions().addTestRasterLayer(
261
									appMain.getLayer(), 
262
									getDataModel().getAlgorithm(), 
263
									getDataModel().getInterpolationMethod(), 
264
									getDataModel().getDegree(), 
265
									getDataModel().getOutFile(),
266
									getDataModel().getXCellSize(),
267
									getDataModel().getYCellSize(),
268
									tableWrapper.getGeoTransformDataResult());
269
						} catch (LoadLayerException e) {
270
							RasterToolsUtil.messageBoxError("error_loading_layer", null, e);
271
						}
246 272
					}
247
					if(appMain.getOptionsDataModel().getAlgorithm() == Georeferencing.POLYNOMIAL) {
248
						if(appMain.getLastTestLayer() != null && lyrs != null) {
249
							appMain.getLayers().addLayer(appMain.getLastTestLayer());
273
					if(getDataModel().getAlgorithm() == Georeferencing.POLYNOMIAL) {
274
						if(appMain.getProcessActions().getLastTestLayer() != null && lyrs != null) {
275
							appMain.getMapCtrl().getMapContext().getLayers().addLayer(appMain.getProcessActions().getLastTestLayer());
250 276
						} else {
251 277
							RasterToolsUtil.messageBoxInfo("raster_not_created", null);
252 278
							return;
253 279
						}
254 280
					}
255 281
				} else {
256
					appMain.removeTestRasterLayer();
282
					appMain.getProcessActions().removeTestRasterLayer();
257 283
				}
258 284
			}
259 285

  
260 286
			if (saveTransform) {
261 287
				// Salvar transformaci?n
262
				if (appMain.getLastTestLayer() == null) {
288
				if (appMain.getProcessActions().getLastTestLayer() == null) {
263 289
					RasterToolsUtil.messageBoxInfo("raster_not_created", null);
264 290
					return;
265 291
				}
266 292

  
267
				// Guardamos la GeoReferenciacion de cada dataset
268
				IRasterDataSource dataSource = appMain.getLastTestLayer().getDataSource();
293
				RasterDataStore store = appMain.getProcessActions().getLastTestLayer().getDataStore();
269 294
				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
					}
295
					store.saveGeoreferencingToRmf();
274 296
				} catch (RmfSerializerException e) {
275 297
					RasterToolsUtil.messageBoxError("error_salvando_rmf", null, e);
276
				} catch (IOException e) {
277
					RasterToolsUtil.messageBoxError("error_salvando_rmf", null, e);
278
				}
298
				} 
279 299
			}
280 300
			
281
			appMain.closeAllWindows();
301
			fManager.closeAllWindows();
282 302
		}
283 303
	}
284 304

  
......
291 311
		if(!enableTableEvent)
292 312
			return;
293 313
		setEnableTableEvent(false);
294
		try{
314
		//-----------------------------------
315
		//Inserci?n de nueva fila en la tabla
316
		if(e.getType() == TableModelEvent.INSERT) {
317
			long id = getSyncViews().addPoint(new Point2D.Double(0, 0), new Point2D.Double(0, 0));
318
			tableWrapper.initializeRow(e.getFirstRow(), id);
319
			getSyncViews().calcPointsNumeration();
295 320

  
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();
321
			//Activamos la herramienta de pinchar punto en la vista al a?adir punto
322
			appMain.getGeorefControlPanel().getToolSelectPointButton().setSelected(true);
323
			getSyncViews().selectPointTool(true);
302 324

  
303
				//Activamos la herramienta de pinchar punto en la vista al a?adir punto
304
				tablePanel.getToolSelectPointButton().setSelected(true);
305
				appMain.getSyncViews().selectPointTool(true);
325
			newPointCreated = true;
326
		}
306 327

  
307
				newPointCreated = true;
308
			}
328
		//-----------------------------
329
		//Eliminado de fila de la tabla
330
		if(e.getType() == TableModelEvent.DELETE) {
331
			for (int i = e.getLastRow(); i >= e.getFirstRow(); i--)
332
				appMain.getSyncViews().removePoint(i);
333
			getSyncViews().calcPointsNumeration();
334
			tableWrapper.updateErrors();
335
		}
309 336

  
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
			}
337
		//-------------------------------------
338
		//Actualizaci?n de una fila de la tabla
339
		if(e.getType() == TableModelEvent.UPDATE) {
340
			getSyncViews().calcPointsNumeration();
341
			//Revisamos el flag de activo de cada punto poniendo el valor que pone en la entrada de la tabla
342
			for (int i = 0; i < tableWrapper.getTable().getRowCount(); i++) {
343
				boolean active = ((Boolean) tableWrapper.getTable().getValueAt(i, 0)).booleanValue();
344
				int position = appMain.getSyncViews().getPointPositionByNumber(i);
345
				if (position < 0)
346
					return;
347
				GeoPoint pt = appMain.getGeoPointList().get(position);
348
				pt.setActive(active);
349
				getSyncViews().setVisiblePoint(active, position);
318 350

  
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);
351
				//Para la funcionalidad de cambio de coordenadas desde la tabla: reasignamos el valor
352
				//de las coordenadas por si han cambiado estas
353
				double[] values = tableWrapper.getCoordinates(i);
332 354

  
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();
355
				getSyncViews().setCoordinates(position, values[0], values[1], values[2], values[3]);
340 356
			}
357
			tableWrapper.updateErrors();
358
		}
341 359

  
342
		}catch (NotInitializeException ex) {
343
			RasterToolsUtil.messageBoxError("table_not_initialize", tablePanel, ex);
344
		}
345 360
		setEnableTableEvent(true);
346 361
	}
347 362

  
......
356 371
			if(optionsDialog != null) {
357 372

  
358 373
				//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());
374
				getDataModel().setAlgorithm(optionsDialog.getAlgorithm());
375
				getDataModel().setBackGroundColor(optionsDialog.getBackGroundColor());
376
				getDataModel().setTextColor(optionsDialog.getTextColor());
377
				getDataModel().setAddErrorsCSV(optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getAddErrorsCSVCheck().isSelected());
378
				getDataModel().setCenterView(optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getCenterViewCheck().isSelected());
379
				getDataModel().setShowNumber(optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getShowNumberCheck().isSelected());
380
				getDataModel().setInterpolationMethod(optionsDialog.getInterpolationMethod());
381
				getDataModel().setOutFile(optionsDialog.getOptionsPanel(this).getOutFileSelectionPanel().getOutFile());
367 382

  
368 383
				//Recalculamos los errores si ha cambiado el grado
369
				if(optionsDialog.getDegree() != appMain.getOptionsDataModel().getDegree()) {
370
					appMain.getOptionsDataModel().setDegree(optionsDialog.getDegree());
371
					tablePanel.updateErrors();
384
				if(optionsDialog.getDegree() != getDataModel().getDegree()) {
385
					getDataModel().setDegree(optionsDialog.getDegree());
386
					tableWrapper.updateErrors();
372 387
				}
373 388

  
374 389
				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());
390
					getDataModel().setThreshold(optionsDialog.getThresholdError());
391
					getDataModel().setXCellSize(optionsDialog.getOptionsPanel(this).getCellSizePanel().getXCellSizeValue());
392
					getDataModel().setYCellSize(optionsDialog.getOptionsPanel(this).getCellSizePanel().getYCellSizeValue());
378 393
				} catch(NumberFormatException exc) {
379 394
					RasterToolsUtil.messageBoxError("error_numeric_format", null, exc);
380 395
				}
381 396

  
382
				appMain.getSyncViews().setGraphicsColor(appMain.getOptionsDataModel().getTextColor());
383
				appMain.getSyncViews().setBackgroundColor(appMain.getOptionsDataModel().getBackGroundColor());
384
				appMain.getSyncViews().setActiveNumberPoint(appMain.getOptionsDataModel().isShowNumber());
397
				getSyncViews().setGraphicsColor(getDataModel().getTextColor());
398
				getSyncViews().setBackgroundColor(getDataModel().getBackgroundColor());
399
				getSyncViews().setActiveNumberPoint(getDataModel().isShowNumber());
385 400

  
386 401
			}
387 402
		}
......
395 410
		}
396 411
	}
397 412

  
398
	/*private GeorefOptionsDialog getOptions() {
399
		if(georefOptions == null)
400
			georefOptions = GeoreferencingSwingLocator.getSwingManager().createWindowOptions(appMain.getOptionsDataModel().getDegree(), this);
401
		return georefOptions;
402
	}*/
403

  
404 413
	/**
405 414
	 * Consulta si est?n activos los eventos de tabla o no
406 415
	 * @return true si est?n activos y false si no lo est?n
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
162 162
		}
163 163
							
164 164
		//Ajustamos el extent al del raster
165
		Extent ext = RasterLocator.getManager().getDataStructFactory().createExtent(extent.getMinX(), extent.getMaxY(), extent.getMaxX(), extent.getMinY());
166
		/*if(view.getCanvas().getMinxMaxyUL()) {
165
		Extent ext = null;
166
		if(view.getMinxMaxyUL()) {
167 167
			ext = RasterLocator.getManager().getDataStructFactory().createExtent(extent);
168 168
		} else {
169 169
			ext = RasterLocator.getManager().getDataStructFactory().createExtent(extent.getMinX(), extent.getMinY(), extent.getMaxX(), extent.getMaxY());
170
		}*/
170
		}
171 171
		
172 172
		try {
173 173
			ViewPort vp = new ViewPort();
......
196 196
		}
197 197
		return extent;
198 198
	}
199

  
200
	public void setGCPsGraphicLayer(IGraphicLayer gl) {
201
		this.graphicLayer = gl;
202
	}
199 203
}
org.gvsig.raster.georeferencing/trunk/org.gvsig.raster.georeferencing/org.gvsig.raster.georeferencing.swing/org.gvsig.raster.georeferencing.swing.api/src/main/java/org/gvsig/raster/georeferencing/swing/GeoreferencingOptionsDataModel.java
135 135
	 * Obtiene el color de fondo
136 136
	 * @return
137 137
	 */
138
	public Color getBackGroundColor();
138
	public Color getBackgroundColor();
139 139
	
140 140
	/**
141 141
	 * Asigna el color del texto
......
210 210
	 * @return true si se muestra y false si no
211 211
	 */
212 212
	public boolean isShowNumber();
213
	
214
	/**
215
	 * Obtiene el umbral de error a partir del cual se iluminan en rojo en la tabla
216
	 * @return double con el valor del umbral
217
	 */
218
	public double getThreshold();
219
	
220
	/**
221
	 * Consulta si los errores se escriben en el fichero CSV
222
	 * @return true si se escriben en el fichero y false si no se hace
223
	 */
224
	public boolean isAddErrorsCSV();
225
	
226
	/**
227
	 * Asigna el umbral de error a partir del cual se iluminan en rojo en la tabla
228
	 * @param double con el valor del umbral
229
	 */
230
	public void setThreshold(double threshold);
213 231
}
org.gvsig.raster.georeferencing/trunk/org.gvsig.raster.georeferencing/org.gvsig.raster.georeferencing.swing/org.gvsig.raster.georeferencing.swing.api/src/main/java/org/gvsig/raster/georeferencing/swing/view/GeoreferencingView.java
105 105
	 */
106 106
	public void selectTool(int tool, boolean select);
107 107
	
108
	/**
109
	 * Gets the selected tool
110
	 * @return
111
	 */
112
	public int getToolSelected();
113
	
108 114
	public void setSelectZoomAreaButtonSelected(boolean select);
109 115
	
110 116
	public void setMoveButtonSelected(boolean select);
117
	
118
	/**
119
	 * Asigna el valor para el flag minxMaxyUL. Este flag informa de que la esquina 
120
	 * superior izquierda corresponde con el valor de m?nimo X y m?ximo Y. En caso 
121
	 * de ser false esta esquina ser?a de m?nimo X y m?nimo Y.
122
	 * @param v
123
	 */
124
	public void setMinxMaxyUL(boolean v);
125
	
126
	public boolean getMinxMaxyUL();
111 127
}
org.gvsig.raster.georeferencing/trunk/org.gvsig.raster.georeferencing/org.gvsig.raster.georeferencing.swing/org.gvsig.raster.georeferencing.swing.api/src/main/java/org/gvsig/raster/georeferencing/swing/view/SynchronizedViews.java
4 4
import java.awt.geom.Point2D;
5 5

  
6 6
import org.gvsig.fmap.dal.coverage.datastruct.GeoPoint;
7
import org.gvsig.gui.beans.table.exceptions.NotInitializeException;
8 7

  
9 8

  
10 9
public interface SynchronizedViews {
......
74 73
	 * a los GeoPuntos
75 74
	 * @throws NotInitializeException
76 75
	 */
77
	public void calcPointsNumeration() throws NotInitializeException;
76
	public void calcPointsNumeration();
78 77
	
79 78
	/**
80 79
	 * Obtiene un punto (GeoPoint) a partir de su n?mero. Hay que tener en cuenta que el n?mero de
......
114 113
	 * @return identificador del punto a?adido
115 114
	 */
116 115
	public long addPoint(Point2D map, Point2D raster);
116
	
117
	/**
118
	 * Selecciona o deselecciona la tool de selecci?n de punto para cada vista
119
	 * @param true para activar y false para desactivar
120
	 */
121
	public void selectPointTool(boolean select);
117 122
}
org.gvsig.raster.georeferencing/trunk/org.gvsig.raster.georeferencing/org.gvsig.raster.georeferencing.swing/org.gvsig.raster.georeferencing.swing.api/src/main/java/org/gvsig/raster/georeferencing/swing/view/GeorefCanvas.java
174 174
	 * de ser false esta esquina ser?a de m?nimo X y m?nimo Y.
175 175
	 * @param v
176 176
	 */
177
	//public void setMinxMaxyUL(boolean v);
177
	public void setMinxMaxyUL(boolean v);
178 178
	
179 179
	/**
180 180
	 * Obtiene el valor para el flag minxMaxyUL. Este flag informa de que la esquina 
......
182 182
	 * de ser false esta esquina ser?a de m?nimo X y m?nimo Y.
183 183
	 * @param v
184 184
	 */
185
	//public boolean getMinxMaxyUL();
185
	public boolean getMinxMaxyUL();
186 186

  
187 187
	/**
188 188
	 * Asigna el color del texto
org.gvsig.raster.georeferencing/trunk/org.gvsig.raster.georeferencing/org.gvsig.raster.georeferencing.swing/org.gvsig.raster.georeferencing.swing.api/src/main/java/org/gvsig/raster/georeferencing/swing/view/IViewRequestManager.java
53 53
	 * @param backGroundColor
54 54
	 */
55 55
	public void setBackGroundColor(Color backGroundColor);
56
	
57
	/**
58
	 * Asigna la capa de puntos de control
59
	 * @param gl
60
	 */
61
	public void setGCPsGraphicLayer(IGraphicLayer gl);
56 62
}
org.gvsig.raster.georeferencing/trunk/org.gvsig.raster.georeferencing/org.gvsig.raster.georeferencing.swing/org.gvsig.raster.georeferencing.swing.impl/src/main/java/org/gvsig/raster/georeferencing/swing/impl/tool/ZoomRectangleTool.java
152 152
			
153 153
			Point2D pInit = canvas.viewCoordsToWorld(new Point2D.Double(x, y));
154 154
			Point2D pEnd = canvas.viewCoordsToWorld(new Point2D.Double(x + w, y + h));
155
			/*if(canvas.getMinxMaxyUL())
155
			if(canvas.getMinxMaxyUL())
156 156
				result = new Rectangle2D.Double(pInit.getX(), pEnd.getY(), Math.abs(pInit.getX() - pEnd.getX()), Math.abs(pInit.getY() - pEnd.getY()));
157
			else*/
157
			else
158 158
			result = new Rectangle2D.Double(pInit.getX(), pEnd.getY(), Math.abs(pInit.getX() - pEnd.getX()), Math.abs(pInit.getY() - pEnd.getY()));
159 159
			initPoint = null;
160 160
			x = y = w = h = 0;
org.gvsig.raster.georeferencing/trunk/org.gvsig.raster.georeferencing/org.gvsig.raster.georeferencing.swing/org.gvsig.raster.georeferencing.swing.impl/src/main/java/org/gvsig/raster/georeferencing/swing/impl/tool/PanTool.java
108 108
			
109 109
			Point2D pInit = canvas.viewCoordsToWorld(new Point2D.Double(distance.getX(), distance.getY()));
110 110
			Point2D pEnd = canvas.viewCoordsToWorld(new Point2D.Double(distance.getX() + canvas.getVisibleRect().width, distance.getY() + canvas.getVisibleRect().height));
111
			//if(canvas.getMinxMaxyUL())
111
			if(canvas.getMinxMaxyUL())
112 112
				result = new Rectangle2D.Double(pInit.getX(), pEnd.getY(), Math.abs(pInit.getX() - pEnd.getX()), Math.abs(pInit.getY() - pEnd.getY()));
113
			//else
114
				//result = new Rectangle2D.Double(pInit.getX(), pInit.getY(), Math.abs(pInit.getX() - pEnd.getX()), Math.abs(pInit.getY() - pEnd.getY()));
113
			else
114
				result = new Rectangle2D.Double(pInit.getX(), pInit.getY(), Math.abs(pInit.getX() - pEnd.getX()), Math.abs(pInit.getY() - pEnd.getY()));
115 115
			initPoint = null;
116 116
			for (int i = 0; i < listeners.size(); i++) 
117 117
				((ToolListener)listeners.get(i)).endAction(new ToolEvent(this));
org.gvsig.raster.georeferencing/trunk/org.gvsig.raster.georeferencing/org.gvsig.raster.georeferencing.swing/org.gvsig.raster.georeferencing.swing.impl/src/main/java/org/gvsig/raster/georeferencing/swing/impl/control/GeorefControlPanelImpl.java
60 60
	private JButton                       bCenterView          = null;
61 61
	private JToggleButton                 bAddPoint            = null;
62 62
	private DataInputContainer            error                = null;
63
	private GeorefControlPanelListener    buttonsListener      = null;
64 63
	
65 64
	private String                        pathToImagesForTest = "/src/main/resources/image/";
66 65
	
......
101 100
	}
102 101
	
103 102
	public void setListener(GeorefControlPanelListener listener) {
104
		this.buttonsListener = listener;
103
		getSaveToXMLButton().addActionListener(listener);
104
		getLoadFromXMLButton().addActionListener(listener);
105
		getExporToCSVButton().addActionListener(listener);
106
		getLoadFromCSVButton().addActionListener(listener);
107
		getOptionsButton().addActionListener(listener);
108
		getCenterButton().addActionListener(listener);
109
		getToolSelectPointButton().addActionListener(listener);
110
		getEndGeorefButton().addActionListener(listener);
111
		getTestButton().addActionListener(listener);
112
		getEndTestButton().addActionListener(listener);
105 113
	}
106 114
	
107 115
	private void init() {
......
210 218
			bEndGeoref.setPreferredSize(new Dimension(22, 22));
211 219
			bEndGeoref.setIcon(loadIcon("exit-icon"));
212 220
			bEndGeoref.setToolTipText(Messages.getText("end_georef"));
213
			bEndGeoref.addActionListener(buttonsListener);
214 221
		}
215 222
		return bEndGeoref;
216 223
	}
......
224 231
			bTest = new JButton();
225 232
			bTest.setPreferredSize(new Dimension(22, 22));
226 233
			bTest.setToolTipText(Messages.getText("test_georef"));
227
			bTest.addActionListener(buttonsListener);
228 234
			bTest.setIcon(loadIcon("process-icon"));
229 235
		}
230 236
		return bTest;
......
239 245
			bEndTest = new JButton();
240 246
			bEndTest.setPreferredSize(new Dimension(22, 22));
241 247
			bEndTest.setToolTipText(Messages.getText("end_test_georef"));
242
			bEndTest.addActionListener(buttonsListener);
243 248
			bEndTest.setIcon(loadIcon("endprocess-icon"));
244 249
		}
245 250
		return bEndTest;
......
254 259
			bLoadFromAscii = new JButton();
255 260
			bLoadFromAscii.setPreferredSize(new Dimension(22, 22));
256 261
			bLoadFromAscii.setToolTipText(Messages.getText("load_from_ascii"));
257
			bLoadFromAscii.addActionListener(buttonsListener);
258 262
			bLoadFromAscii.setIcon(loadIcon("importfromcsv-icon"));
259 263
		}
260 264
		return bLoadFromAscii;
......
269 273
			bSaveToAscii = new JButton();
270 274
			bSaveToAscii.setPreferredSize(new Dimension(22, 22));
271 275
			bSaveToAscii.setToolTipText(Messages.getText("save_to_ascii"));
272
			bSaveToAscii.addActionListener(buttonsListener);
273 276
			bSaveToAscii.setIcon(loadIcon("exporttocsv-icon"));
274 277
		}
275 278
		return bSaveToAscii;
......
284 287
			bLoadFromXml = new JButton();
285 288
			bLoadFromXml.setPreferredSize(new Dimension(22, 22));
286 289
			bLoadFromXml.setToolTipText(Messages.getText("load_from_xml"));
287
			bLoadFromXml.addActionListener(buttonsListener);
288 290
			bLoadFromXml.setIcon(loadIcon("tfwload-icon"));
289 291
		}
290 292
		return bLoadFromXml;
......
316 318
			bSaveToXml = new JButton();
317 319
			bSaveToXml.setPreferredSize(new Dimension(22, 22));
318 320
			bSaveToXml.setToolTipText(Messages.getText("save_gcp_to_xml"));
319
			bSaveToXml.addActionListener(buttonsListener);
320 321
			bSaveToXml.setIcon(loadIcon("save-icon"));
321 322
		}
322 323
		return bSaveToXml;
......
331 332
			bOptions = new JButton();
332 333
			bOptions.setPreferredSize(new Dimension(22, 22));
333 334
			bOptions.setToolTipText(Messages.getText("options"));
334
			bOptions.addActionListener(buttonsListener);
335 335
			bOptions.setIcon(loadIcon("options-icon"));
336 336
		}
337 337
		return bOptions;
......
347 347
			bAddPoint = new JToggleButton();
348 348
			bAddPoint.setPreferredSize(new Dimension(22, 22));
349 349
			bAddPoint.setToolTipText(Messages.getText("move-point"));
350
			bAddPoint.addActionListener(buttonsListener);
351 350
			bAddPoint.setIcon(loadIcon("add-icon"));
352 351
		}
353 352
		return bAddPoint;
......
362 361
			bCenterView = new JButton();
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff