Revision 1724

View differences:

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
64 64
	}
65 65
	
66 66
	public void closeWindow(JPanel panel) {
67
		AndamiWindow window = windows.get(panel);
67
		AndamiWindow window = windows.remove(panel);
68 68
		PluginServices.getMDIManager().closeWindow(window);
69
		windows.remove(panel);
70 69
	}
71 70
	
72 71
	public int getPreferredViewHeight() {
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
174 174
		if(viewRaster == null) {
175 175
			viewRaster = sManager.createView(true, false, true, listener);
176 176
			viewRasterRequestManager = new ViewRasterRequestManager(viewRaster, dataModel.getDataStore());
177
			viewRaster.setMinxMaxyUL(false);
177
			viewRaster.setMinxMaxyUL(true);
178 178
			viewRaster.setViewListener(listener);
179 179
			viewRaster.setRequestListener(viewRasterRequestManager);
180 180
			viewRaster.setTool(GeoreferencingSwingLibrary.SELECT_POINT_TOOL, listener);
......
242 242
		
243 243
		PagedTable pt = getTableWrapper().getTable();
244 244
		
245
		getDataModel().getGCPList().buildNewList(getDataModel().getDataStore().getGeoPointList());
246
		
245 247
		//Creamos el layout
246 248
		LayoutEnvironment layoutEnv = fManager.createLayoutEnvironment();
247 249
		layoutEnv.setTable((JPanel)pt.getComponent());
......
288 290
		if(appControlsListener == null) {
289 291
			appControlsListener = new ApplicationControlsListener(getTableWrapper(), this);
290 292
			getTableWrapper().getTable().addListener(appControlsListener);
291
			getGeorefControlPanel().setListener(appControlsListener);
292 293
		}
293 294
	}
294 295
	
......
308 309
		
309 310
		PagedTable pt = getTableWrapper().getTable();
310 311
		
312
		getDataModel().getGCPList().buildNewList(getDataModel().getDataStore().getGeoPointList());
313
		
311 314
		//Creamos el layout
312 315
		LayoutEnvironment layoutEnv = fManager.createLayoutEnvironment();
313 316
		layoutEnv.setTable((JPanel)pt.getComponent());
......
378 381
	public SynchronizedViews getSyncViews() {
379 382
		return syncViews;
380 383
	}
381
	
382
	/**
383
	 * Obtiene la capa a georreferenciar
384
	 * @return FLyrRaster
385
	 */
386
	public RasterDataStore getLayer() {
387
		return launcher.getDataModel().getDataStore();
388
	}
389 384

  
390 385
	public GeoreferencingProcessActions getProcessActions() {
391 386
		return processActions;
392 387
	}
393 388
	
394 389
	public GeoreferencingOptionsDataModel getDataModel() {
395
		return launcher.getDataModel();
390
		return GeoreferencingSwingLocator.getSwingManager().getDataModel();
396 391
	}
397 392
		
398 393
}
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/OptionsDialogListener.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 org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
25
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
26

  
27
/** 
28
 * @author Nacho Brodin (nachobrodin@gmail.com)
29
 */
30
public class OptionsDialogListener implements ButtonsPanelListener {
31
	
32
	public OptionsDialogListener() {
33
	}
34
	
35
	public void actionButtonPressed(ButtonsPanelEvent e) {
36
	}
37

  
38
}
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
28 28
import java.awt.geom.Rectangle2D;
29 29
import java.awt.image.BufferedImage;
30 30

  
31
import org.gvsig.fmap.dal.coverage.RasterLocator;
32
import org.gvsig.fmap.dal.coverage.datastruct.Extent;
33 31
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
34 32
import org.gvsig.fmap.dal.exception.ReadException;
35 33
import org.gvsig.fmap.geom.GeometryLocator;
......
54 52
	private GeometryManager          geomManager       = GeometryLocator.getGeometryManager();
55 53
	private GeoreferencingView       view              = null;
56 54
	private RasterDataStore          store             = null;
57
	private IGraphicLayer            graphicLayer      = null;
58 55
	private Color                    backGroundColor   = null;
59 56
	private FLyrRaster               lyr               = null;
60 57
	
......
200 197
	}
201 198

  
202 199
	public void setGCPsGraphicLayer(IGraphicLayer gl) {
203
		this.graphicLayer = gl;
204 200
	}
205 201
}
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
95 95
		if(!Georeferencing.enableTableEvent)
96 96
			return;
97 97
		Georeferencing.enableTableEvent = false;
98
		
99
		//-----------------
100
		//Operaci?n de zoom
101
		if(ev.getSource() instanceof ZoomCursorGraphicLayer) {
102
			try {	
103
				Rectangle2D ext = null;
104
				if(app.getViewRaster() != null) {
105
					ext = app.getViewRaster().getCursorAdjustedWorldCoordinates(app.getZoomRaster().getCanvasWidth(), app.getZoomRaster().getCanvasHeight());
106
					app.getZoomRasterRequestManager().request(ext);
98

  
99
		try {
100
			//-----------------
101
			//Operaci?n de zoom
102
			if(ev.getSource() instanceof ZoomCursorGraphicLayer) {
103
				try {	
104
					Rectangle2D ext = null;
105
					if(app.getViewRaster() != null) {
106
						ext = app.getViewRaster().getCursorAdjustedWorldCoordinates(app.getZoomRaster().getCanvasWidth(), app.getZoomRaster().getCanvasHeight());
107
						app.getZoomRasterRequestManager().request(ext);
108
					}
109
					if(app.getViewMap() != null) {
110
						ext = app.getViewMap().getCursorAdjustedWorldCoordinates(app.getZoomMap().getCanvasWidth(), app.getZoomMap().getCanvasHeight());
111
						app.getZoomMapRequestManager().request(ext);
112
					}
113
				} catch (InvalidRequestException e1) {
114
					GeoreferencingSwingImplLibrary.messageBoxError("error_setview_preview", null, e1);
107 115
				}
108
				if(app.getViewMap() != null) {
109
					ext = app.getViewMap().getCursorAdjustedWorldCoordinates(app.getZoomMap().getCanvasWidth(), app.getZoomMap().getCanvasHeight());
110
					app.getZoomMapRequestManager().request(ext);
116
			}
117

  
118
			//-----------
119
			//Mover punto
120
			if(ev.getSource() instanceof GCPsGraphicLayer) {
121
				//buttonsListener.setEnableTableEvent(false);
122
				//Se redibujan, se obtienen las coordenadas del punto y se actualiza la tabla
123
				if(app.getSyncViews() != null)
124
					app.getSyncViews().redrawPoints();
125
				GPGraphic gPoint = ((GCPsGraphicLayer)ev.getSource()).getLastPoint();
126
				Point2D pRaster = gPoint.getGeoPoint().getPixelPoint();
127
				Point2D pMap = gPoint.getGeoPoint().getMapPoint();
128
				try {
129
					app.getTableWrapper().updatePoint(new Double(pMap.getX()), 
130
							new Double(pMap.getY()), 
131
							new Double(pRaster.getX()), 
132
							new Double(pRaster.getY()), 
133
							gPoint.getGeoPoint().getNumber());
134
					app.getTableWrapper().getTable().getJTable().setRowSelectionInterval(gPoint.getGeoPoint().getNumber(), gPoint.getGeoPoint().getNumber());
135
				} catch (ArrayIndexOutOfBoundsException e) {
136
					RasterToolsUtil.messageBoxError("no_rows_selected", app.getTableWrapper().getTable(), e);
111 137
				}
112
			} catch (InvalidRequestException e1) {
113
				GeoreferencingSwingImplLibrary.messageBoxError("error_setview_preview", null, e1);
138
				if(app.getDataModel().isCenterView())
139
					app.getSyncViews().centerToPoint(gPoint.getGeoPoint().getNumber());
140
				//buttonsListener.setEnableTableEvent(true);
114 141
			}
115
		}
116
		
117
		//-----------
118
		//Mover punto
119
		if(ev.getSource() instanceof GCPsGraphicLayer) {
120
			//buttonsListener.setEnableTableEvent(false);
121
			//Se redibujan, se obtienen las coordenadas del punto y se actualiza la tabla
122
			if(app.getSyncViews() != null)
123
				app.getSyncViews().redrawPoints();
124
			GPGraphic gPoint = ((GCPsGraphicLayer)ev.getSource()).getLastPoint();
125
			Point2D pRaster = gPoint.getGeoPoint().getPixelPoint();
126
			Point2D pMap = gPoint.getGeoPoint().getMapPoint();
127
			try {
128
				app.getTableWrapper().updatePoint(new Double(pMap.getX()), 
129
									new Double(pMap.getY()), 
130
									new Double(pRaster.getX()), 
131
									new Double(pRaster.getY()), 
132
									gPoint.getGeoPoint().getNumber());
133
				app.getTableWrapper().getTable().getJTable().setRowSelectionInterval(gPoint.getGeoPoint().getNumber(), gPoint.getGeoPoint().getNumber());
134
			} catch (ArrayIndexOutOfBoundsException e) {
135
				RasterToolsUtil.messageBoxError("no_rows_selected", app.getTableWrapper().getTable(), e);
136
			}
137
			if(app.getDataModel().isCenterView())
138
				app.getSyncViews().centerToPoint(gPoint.getGeoPoint().getNumber());
139
			//buttonsListener.setEnableTableEvent(true);
140
		}
141
		
142
		//------------------
143
		//Selecci?n de punto
144
		if(ev.getSource() instanceof SelectPointTool) {
145
			try {
146
				//Se obtiene el punto seleccionado, se actualiza la tabla y se redibujan
147
				int nPoint = app.getTableWrapper().getTable().getSelectedRows()[0];
148
				GeoPoint gp = app.getSyncViews().getPointByNumber(nPoint);
149
				
150
				if(((SelectPointTool)ev.getSource()).getParentView() == app.getViewRaster() || 
151
				   ((SelectPointTool)ev.getSource()).getParentView() == app.getZoomRaster()) {
152
					Point2D[] p = (Point2D[])((SelectPointTool)ev.getSource()).getResult();
153
					app.getTableWrapper().updateRasterPoint(new Double(p[1].getX()), new Double(p[1].getY()), nPoint);
154
					if(gp != null) {
155
						gp.setPixelPoint(p[1]);
156
						app.getSyncViews().redrawPoints();
142

  
143
			//------------------
144
			//Selecci?n de punto
145
			if(ev.getSource() instanceof SelectPointTool) {
146
				try {
147
					//Se obtiene el punto seleccionado, se actualiza la tabla y se redibujan
148
					int nPoint = app.getTableWrapper().getTable().getSelectedRows()[0];
149
					GeoPoint gp = app.getSyncViews().getPointByNumber(nPoint);
150

  
151
					if(((SelectPointTool)ev.getSource()).getParentView() == app.getViewRaster() || 
152
							((SelectPointTool)ev.getSource()).getParentView() == app.getZoomRaster()) {
153
						Point2D[] p = (Point2D[])((SelectPointTool)ev.getSource()).getResult();
154
						app.getTableWrapper().updateRasterPoint(new Double(p[1].getX()), new Double(p[1].getY()), nPoint);
155
						if(gp != null) {
156
							gp.setPixelPoint(p[1]);
157
							app.getSyncViews().redrawPoints();
158
						}
157 159
					}
158
				}
159
				if(((SelectPointTool)ev.getSource()).getParentView() == app.getViewMap() || 
160
				   ((SelectPointTool)ev.getSource()).getParentView() == app.getZoomMap()) {
161
					Point2D[] p = (Point2D[])((SelectPointTool)ev.getSource()).getResult();
162
					app.getTableWrapper().updateMapPoint(new Double(p[1].getX()), new Double(p[1].getY()), nPoint);
163
					if(gp != null) {
164
						gp.setMapPoint(p[1]);
165
						app.getSyncViews().redrawPoints();
160
					if(((SelectPointTool)ev.getSource()).getParentView() == app.getViewMap() || 
161
							((SelectPointTool)ev.getSource()).getParentView() == app.getZoomMap()) {
162
						Point2D[] p = (Point2D[])((SelectPointTool)ev.getSource()).getResult();
163
						app.getTableWrapper().updateMapPoint(new Double(p[1].getX()), new Double(p[1].getY()), nPoint);
164
						if(gp != null) {
165
							gp.setMapPoint(p[1]);
166
							app.getSyncViews().redrawPoints();
167
						}
166 168
					}
169
					if(app.getDataModel().isCenterView())
170
						app.getSyncViews().centerToPoint(nPoint);
171
				} catch (ArrayIndexOutOfBoundsException e) {
172
					RasterToolsUtil.messageBoxError("no_rows_selected", app.getTableWrapper().getTable(), e);
167 173
				}
168
				if(app.getDataModel().isCenterView())
169
					app.getSyncViews().centerToPoint(nPoint);
170
			} catch (ArrayIndexOutOfBoundsException e) {
171
				RasterToolsUtil.messageBoxError("no_rows_selected", app.getTableWrapper().getTable(), e);
172 174
			}
175

  
176
		} finally {
177
			Georeferencing.enableTableEvent = true;	
173 178
		}
174
		
175
		Georeferencing.enableTableEvent = true;
176 179
	}
177 180

  
178 181
	public void offTool(ToolEvent ev) {
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/LauncherDialogListener.java
35 35
import org.gvsig.raster.georeferencing.framework.GeoreferencingFrameworkManager;
36 36
import org.gvsig.raster.georeferencing.swing.GeoreferencingLauncher;
37 37
import org.gvsig.raster.georeferencing.swing.GeoreferencingOptionsDataModel;
38
import org.gvsig.raster.georeferencing.swing.GeoreferencingSwingLocator;
38 39
import org.gvsig.raster.tools.app.basic.RasterToolsUtil;
39 40

  
40 41
/** 
41 42
 * @author Nacho Brodin (nachobrodin@gmail.com)
42 43
 */
43 44
public class LauncherDialogListener implements ButtonsPanelListener {
44
	private GeoreferencingLauncher            initDialog      = null;
45
	private GeoreferencingLauncher            launcherDialog  = null;
45 46
	private Georeferencing                    app             = null;
46 47
	
47 48
	public LauncherDialogListener(
48 49
			Georeferencing app, 
49 50
			GeoreferencingLauncher launcher) {
50
		this.initDialog = launcher;
51
		this.launcherDialog = launcher;
51 52
		this.app = app;
52 53
	}
53 54
	
......
55 56
		//-----------------
56 57
		// Bot?n de Aceptar
57 58
		if (e.getButton() == ButtonsPanel.BUTTON_ACCEPT) {
58
			if(initDialog != null) {
59
				GeoreferencingOptionsDataModel dataModel = initDialog.getDataModel();
59
			if(launcherDialog != null) {
60
				launcherDialog.buildDataModel();
61
				GeoreferencingOptionsDataModel dataModel = GeoreferencingSwingLocator.getSwingManager().getDataModel();
60 62
				if(dataModel.getType() == Georeferencing.WITH_MAP) {
61 63
					boolean findView = false;
62 64
					IWindow[] windowList = PluginServices.getMDIManager().getAllWindows();
......
76 78
				if(storeToGeoref == null) 
77 79
					RasterToolsUtil.messageBoxError("layer_not_loaded", this);
78 80
				else {
79
					//storeToGeoref.setAffineTransform(new AffineTransform(1, 0, 0, -1, 0, 0));
81
					storeToGeoref.setAffineTransform(new AffineTransform(1, 0, 0, -1, 0, 0));
80 82
					GeoreferencingFrameworkManager fManager = GeoreferencingFrameworkLocator.getManager();
81
					fManager.closeWindow(initDialog.getComponent());
83
					fManager.closeWindow(launcherDialog.getComponent());
82 84
					app.endLauncherDialog(dataModel);
83 85
				}
84 86
			}
......
88 90
		// Bot?n de Cerrar
89 91
		if (e.getButton() == ButtonsPanel.BUTTON_CANCEL) {
90 92
			GeoreferencingFrameworkManager fManager = GeoreferencingFrameworkLocator.getManager();
91
			fManager.closeWindow(initDialog.getComponent());
93
			fManager.closeWindow(launcherDialog.getComponent());
92 94
		}
93 95
	}
94 96

  
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
33 33
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
34 34
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
35 35
import org.gvsig.i18n.Messages;
36
import org.gvsig.raster.georeferencing.app.georeferencingclient.GeoPointsPersistence;
36 37
import org.gvsig.raster.georeferencing.app.georeferencingclient.Georeferencing;
37 38
import org.gvsig.raster.georeferencing.app.georeferencingclient.TableWrapper;
38 39
import org.gvsig.raster.georeferencing.framework.GeoreferencingFrameworkLocator;
......
60 61
	private GeorefControlPanel                controlPanel        = null;
61 62
	private GeorefOptionsDialog               optionsDialog       = null;
62 63
	private GeoreferencingFrameworkManager    fManager            = null;
63
	//private GeoPointsPersistence              persistence         = null;
64
	private GeoPointsPersistence              persistence         = null;
64 65

  
65 66
	/**
66 67
	 * Flag que estar? a true despu?s de crear un nuevo punto de control. Volver? a false
......
80 81
		this.controlPanel = appMain.getGeorefControlPanel();
81 82
		this.controlPanel.setListener(this);
82 83
		this.fManager = GeoreferencingFrameworkLocator.getManager();
84
		this.persistence = new GeoPointsPersistence();
83 85
	}
84 86
	
85 87
	private SynchronizedViews getSyncViews() {
......
98 100
			return;
99 101
		
100 102
		Georeferencing.enableTableEvent = false;
101
		
102
		//-------------------------------------
103
		//Finalizaci?n de la georreferenciaci?n
104
		if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bEndGeoref)
105
			endGeoref();
103
		try {
104
			//-------------------------------------
105
			//Finalizaci?n de la georreferenciaci?n
106
			if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bEndGeoref)
107
				endGeoref();
106 108

  
107
		//-----------------------------------------
108
		//Centrar la vista en el punto seleccionado
109
		if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bCenterView) {
110
			getSyncViews().centerToPoint(tableWrapper.getTable().getSelectedRows()[0]);
111
		}
109
			//-----------------------------------------
110
			//Centrar la vista en el punto seleccionado
111
			if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bCenterView) {
112
				getSyncViews().centerToPoint(tableWrapper.getTable().getSelectedRows()[0]);
113
			}
112 114

  
113
		//---------------------------------
114
		//Selecci?n de una fila de la tabla
115
		if(e.getActionCommand().equals("SELECT_ROW")) {
116
			if(getDataModel().isCenterView() && !newPointCreated)
117
				getSyncViews().centerToPoint(e.getID());
118
			newPointCreated = false;
119
		}
115
			//---------------------------------
116
			//Selecci?n de una fila de la tabla
117
			if(e.getActionCommand().equals("SELECT_ROW")) {
118
				if(getDataModel().isCenterView() && !newPointCreated)
119
					getSyncViews().centerToPoint(e.getID());
120
				newPointCreated = false;
121
			}
120 122

  
121
		//----------------------------------------------------------
122
		//Seleccion de opciones. Se asignan las propiedades al abrir
123
		if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bOptions) {
124
			if(optionsDialog == null)
125
				optionsDialog = new GeorefOptionsDialog(Georeferencing.DEFAULT_DEGREE, this);
126
			optionsDialog.setDegree(getDataModel().getDegree());
127
			optionsDialog.setAlgorithm(getDataModel().getAlgorithm());
128
			optionsDialog.setBackGroundColor(getDataModel().getBackgroundColor());
129
			optionsDialog.setTextColor(getDataModel().getTextColor());
130
			optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getAddErrorsCSVCheck().setSelected(getDataModel().isAddErrorsCSV());
131
			optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getCenterViewCheck().setSelected(getDataModel().isCenterView());
132
			optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getShowNumberCheck().setSelected(getDataModel().isShowNumber());
133
			optionsDialog.setThresholdError(getDataModel().getThreshold());
134
			optionsDialog.setInterpolationMethod(getDataModel().getInterpolationMethod());
135
			optionsDialog.setOutFile(getDataModel().getOutFile());
136
			optionsDialog.setXCellSize(getDataModel().getXCellSize());
137
			optionsDialog.setYCellSize(getDataModel().getYCellSize());
138
			fManager.showWindow(optionsDialog, 410, 440, Messages.getText("georeferencing"));
139
		}
123
			//----------------------------------------------------------
124
			//Seleccion de opciones. Se asignan las propiedades al abrir
125
			if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bOptions) {
126
				if(optionsDialog == null)
127
					optionsDialog = new GeorefOptionsDialog(Georeferencing.DEFAULT_DEGREE, this);
128
				optionsDialog.setDegree(getDataModel().getDegree());
129
				optionsDialog.setAlgorithm(getDataModel().getAlgorithm());
130
				optionsDialog.setBackGroundColor(getDataModel().getBackgroundColor());
131
				optionsDialog.setTextColor(getDataModel().getTextColor());
132
				optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getAddErrorsCSVCheck().setSelected(getDataModel().isAddErrorsCSV());
133
				optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getCenterViewCheck().setSelected(getDataModel().isCenterView());
134
				optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getShowNumberCheck().setSelected(getDataModel().isShowNumber());
135
				optionsDialog.setThresholdError(getDataModel().getThreshold());
136
				optionsDialog.setInterpolationMethod(getDataModel().getInterpolationMethod());
137
				optionsDialog.setOutFile(getDataModel().getOutFile());
138
				optionsDialog.setXCellSize(getDataModel().getXCellSize());
139
				optionsDialog.setYCellSize(getDataModel().getYCellSize());
140
				fManager.showWindow(optionsDialog, 410, 440, Messages.getText("georeferencing"));
141
				System.out.println("----Open");
142
			}
140 143

  
141
		//------------------------------
142
		//Selecci?n de puntos de control
143
		if(e.getSource() == appMain.getGeorefControlPanel().getToolSelectPointButton()) {
144
			if(appMain.getGeorefControlPanel().getToolSelectPointButton().isSelected()) {
145
				if(appMain.getViewRaster().getToolSelected() != GeoreferencingSwingLibrary.SELECT_POINT_TOOL) {
146
					//No hay filas en la tabla
147
					if(tableWrapper.getTable().getRowCount() == 0) {
148
						RasterToolsUtil.messageBoxError("no_rows", tableWrapper.getTable());
149
						appMain.getGeorefControlPanel().getToolSelectPointButton().setSelected(false);
150
						return;
151
					}
144
			//------------------------------
145
			//Selecci?n de puntos de control
146
			if(e.getSource() == appMain.getGeorefControlPanel().getToolSelectPointButton()) {
147
				selectControlPoints();
148
			}
152 149

  
153
					//No hay filas seleccionadas en la tabla
154
					if(tableWrapper.getTable().getSelectedRows() == null) {
155
						RasterToolsUtil.messageBoxError("no_rows_selected", tableWrapper.getTable());
156
						appMain.getGeorefControlPanel().getToolSelectPointButton().setSelected(false);
157
						return;
158
					}
159
					getSyncViews().selectPointTool(true);
150
			//-------
151
			//Testear
152
			if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bTest) {
153
				try {
154
					appMain.getProcessActions().addTestRasterLayer(
155
							getDataModel().getDataStore(), 
156
							getDataModel().getAlgorithm(), 
157
							getDataModel().getInterpolationMethod(), 
158
							getDataModel().getDegree(), 
159
							getDataModel().getOutFile(),
160
							getDataModel().getXCellSize(),
161
							getDataModel().getYCellSize(),
162
							tableWrapper.getGeoTransformDataResult());
163
				} catch (LoadLayerException e1) {
164
					RasterToolsUtil.messageBoxError("error_loading_layer", tableWrapper.getTable(), e1);
160 165
				}
161
			} else {
162
				getSyncViews().selectPointTool(false);
163 166
			}
164
		}
165 167

  
166
		//-------
167
		//Testear
168
		if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bTest) {
169
			try {
170
				appMain.getProcessActions().addTestRasterLayer(
171
						appMain.getLayer(), 
172
						getDataModel().getAlgorithm(), 
173
						getDataModel().getInterpolationMethod(), 
174
						getDataModel().getDegree(), 
175
						getDataModel().getOutFile(),
176
						getDataModel().getXCellSize(),
177
						getDataModel().getYCellSize(),
178
						tableWrapper.getGeoTransformDataResult());
179
			} catch (LoadLayerException e1) {
180
				RasterToolsUtil.messageBoxError("error_loading_layer", tableWrapper.getTable(), e1);
168
			//------------
169
			//Fin del Test
170
			if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bEndTest) {
171
				if(appMain != null && appMain.getProcessActions().getLastTestLayer() != null) {
172
					appMain.getProcessActions().getLastTestLayer().setRemoveRasterFlag(false);
173
					appMain.getProcessActions().removeTestRasterLayer();
174
				}
181 175
			}
176

  
177
			//------------
178
			//Salvar a CSV
179
			if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bSaveToAscii) {
180
				persistence.exportToCSV(getDataModel().getGCPList(), getDataModel().isAddErrorsCSV());
181
			}
182

  
183
			//----------------
184
			//Cargar desde CSV
185
			if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bLoadFromAscii) {
186
				persistence.importFromCSV(getSyncViews(), tableWrapper);
187
			}
188

  
189
			//------------
190
			//Salvar a RMF
191
			if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bSaveToXml) {
192
				persistence.saveToRMF(getDataModel().getGCPList(), getDataModel().getDataStore());
193
			}
194

  
195
			//----------------
196
			//Cargar desde RMF
197
			if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bLoadFromXml) {
198
				persistence.loadFromRMF(getDataModel().getDataStore(), getSyncViews(), tableWrapper);
199
			}
200

  
201
		} finally {
202
			Georeferencing.enableTableEvent = true;	
182 203
		}
204
	}
205
	
206
	private void selectControlPoints() {
207
		if(appMain.getGeorefControlPanel().getToolSelectPointButton().isSelected()) {
208
			if(appMain.getViewRaster().getToolSelected() != GeoreferencingSwingLibrary.SELECT_POINT_TOOL) {
209
				//No hay filas en la tabla
210
				if(tableWrapper.getTable().getRowCount() == 0) {
211
					RasterToolsUtil.messageBoxError("no_rows", tableWrapper.getTable());
212
					appMain.getGeorefControlPanel().getToolSelectPointButton().setSelected(false);
213
					return;
214
				}
183 215

  
184
		//------------
185
		//Fin del Test
186
		if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bEndTest) {
187
			if(appMain != null && appMain.getProcessActions().getLastTestLayer() != null) {
188
				appMain.getProcessActions().getLastTestLayer().setRemoveRasterFlag(false);
189
				appMain.getProcessActions().removeTestRasterLayer();
216
				//No hay filas seleccionadas en la tabla
217
				if(tableWrapper.getTable().getSelectedRows() == null) {
218
					RasterToolsUtil.messageBoxError("no_rows_selected", tableWrapper.getTable());
219
					appMain.getGeorefControlPanel().getToolSelectPointButton().setSelected(false);
220
					return;
221
				}
222
				getSyncViews().selectPointTool(true);
190 223
			}
224
		} else {
225
			getSyncViews().selectPointTool(false);
191 226
		}
192

  
193
		//------------
194
		//Salvar a CSV
195
//		if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bSaveToAscii) {
196
//			getPersistence().exportToCSV(getPointManager().getPointList(), getOptions().isAddErrorsCSV());
197
//		}
198
//
199
//		//----------------
200
//		//Cargar desde CSV
201
//		if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bLoadFromAscii) {
202
//			setEnableTableEvent(false);
203
//			getPersistence().importFromCSV(getPointManager(), tablePanel);
204
//			setEnableTableEvent(true);
205
//		}
206
//
207
//		//------------
208
//		//Salvar a RMF
209
//		if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bSaveToXml) {
210
//			getPersistence().saveToRMF(getPointManager().getPointList(), appMain.getLayer().getDataSource());
211
//		}
212
//
213
//		//----------------
214
//		//Cargar desde RMF
215
//		if(controlPanel.getButtonIDPressed(e.getSource()) == GeorefControlPanel.bLoadFromXml) {
216
//			setEnableTableEvent(false);
217
//			getPersistence().loadFromRMF(appMain.getLayer().getDataSource(), getPointManager(), tablePanel);
218
//			setEnableTableEvent(true);
219
//		}
220
		Georeferencing.enableTableEvent = true;
221 227
	}
222 228

  
223 229
	/**
......
262 268
					if(getDataModel().getAlgorithm() == Georeferencing.AFFINE) {
263 269
						try {
264 270
							appMain.getProcessActions().addTestRasterLayer(
265
									appMain.getLayer(), 
271
									getDataModel().getDataStore(), 
266 272
									getDataModel().getAlgorithm(), 
267 273
									getDataModel().getInterpolationMethod(), 
268 274
									getDataModel().getDegree(), 
......
315 321
		if(!Georeferencing.enableTableEvent)
316 322
			return;
317 323
		Georeferencing.enableTableEvent = false;
318
		//-----------------------------------
319
		//Inserci?n de nueva fila en la tabla
320
		if(e.getEvent() == PagedTableEvent.EVENT_ADD_ENTRY) {
321
			long id = getSyncViews().addPoint(new Point2D.Double(0, 0), new Point2D.Double(0, 0));
322
			tableWrapper.initializeRow(e.getRows()[0], id);
323
			getSyncViews().calcPointsNumeration();
324
			
325
			//Activamos la herramienta de pinchar punto en la vista al a?adir punto
326
			appMain.getGeorefControlPanel().getToolSelectPointButton().setSelected(true);
327
			getSyncViews().selectPointTool(true);
328 324

  
329
			newPointCreated = true;
330
		}
325
		try {
326
			//-----------------------------------
327
			//Inserci?n de nueva fila en la tabla
328
			if(e.getEvent() == PagedTableEvent.EVENT_ADD_ENTRY) {
329
				long id = getSyncViews().addPoint(new Point2D.Double(0, 0), new Point2D.Double(0, 0));
330
				tableWrapper.initializeRow(e.getRows()[0], id);
331
				getSyncViews().calcPointsNumeration();
331 332

  
332
		//-----------------------------
333
		//Eliminado de fila de la tabla
334
		if(e.getEvent() == PagedTableEvent.EVENT_REMOVE_ENTRY) {
335
			for (int i = 0; i >= e.getRows().length; i--)
336
				appMain.getSyncViews().removePoint(e.getRows()[i]);
337
			getSyncViews().calcPointsNumeration();
338
			tableWrapper.updateErrors();
339
		}
333
				//Activamos la herramienta de pinchar punto en la vista al a?adir punto
334
				appMain.getGeorefControlPanel().getToolSelectPointButton().setSelected(true);
335
				getSyncViews().selectPointTool(true);
340 336

  
341
		//-------------------------------------
342
		//Actualizaci?n de una fila de la tabla
343
		if(e.getEvent() == PagedTableEvent.EVENT_MODIFY_ENTRY) {
344
			getSyncViews().calcPointsNumeration();
345
			//Revisamos el flag de activo de cada punto poniendo el valor que pone en la entrada de la tabla
346
			for (int i = 0; i < tableWrapper.getTable().getRowCount(); i++) {
347
				boolean active = ((Boolean) tableWrapper.getTable().getValueAt(i, 0)).booleanValue();
348
				int position = appMain.getSyncViews().getPointPositionByNumber(i);
349
				if (position < 0)
350
					return;
351
				GeoPoint pt = getDataModel().getGCPList().getGeoPoint(position);
352
				pt.setActive(active);
353
				getSyncViews().setVisiblePoint(active, position);
337
				newPointCreated = true;
338
			}
354 339

  
355
				//Para la funcionalidad de cambio de coordenadas desde la tabla: reasignamos el valor
356
				//de las coordenadas por si han cambiado estas
357
				double[] values = tableWrapper.getCoordinates(i);
340
			//-----------------------------
341
			//Eliminado de fila de la tabla
342
			if(e.getEvent() == PagedTableEvent.EVENT_REMOVE_ENTRY) {
343
				for (int i = 0; i >= e.getRows().length; i--)
344
					appMain.getSyncViews().removePoint(e.getRows()[i]);
345
				getSyncViews().calcPointsNumeration();
346
				tableWrapper.updateErrors();
347
			}
358 348

  
359
				getSyncViews().setCoordinates(position, values[0], values[1], values[2], values[3]);
349
			//-----------------------------
350
			//Eliminado todas las filas
351
			if(e.getEvent() == PagedTableEvent.EVENT_REMOVE_ALL) {
352
				getSyncViews().removeAllPoints();
360 353
			}
361
			tableWrapper.updateErrors();
354

  
355
			//-------------------------------------
356
			//Actualizaci?n de una fila de la tabla
357
			if(e.getEvent() == PagedTableEvent.EVENT_MODIFY_ENTRY) {
358
				getSyncViews().calcPointsNumeration();
359
				//Revisamos el flag de activo de cada punto poniendo el valor que pone en la entrada de la tabla
360
				for (int i = 0; i < tableWrapper.getTable().getRowCount(); i++) {
361
					boolean active = ((Boolean) tableWrapper.getTable().getValueAt(i, 0)).booleanValue();
362
					int position = appMain.getSyncViews().getPointPositionByNumber(i);
363
					if (position < 0)
364
						return;
365
					GeoPoint pt = getDataModel().getGCPList().getGeoPoint(position);
366
					pt.setActive(active);
367
					getSyncViews().setVisiblePoint(active, position);
368

  
369
					//Para la funcionalidad de cambio de coordenadas desde la tabla: reasignamos el valor
370
					//de las coordenadas por si han cambiado estas
371
					double[] values = tableWrapper.getCoordinates(i);
372

  
373
					getSyncViews().setCoordinates(position, values[0], values[1], values[2], values[3]);
374
				}
375
				tableWrapper.updateErrors();
376
			}
377

  
378
		} finally {
379
			Georeferencing.enableTableEvent = true;	
362 380
		}
363

  
364
		Georeferencing.enableTableEvent = true;
365 381
	}
366 382

  
367 383
	/**
......
369 385
	 */
370 386
	public void actionButtonPressed(ButtonsPanelEvent e) {
371 387
		Georeferencing.enableTableEvent = false;
372
		
373
		//---------------------------------------------------
374
		//Bot?n de Aplicar y Aceptar en el cuadro de opciones
375
		if (e.getButton() == ButtonsPanel.BUTTON_APPLY || e.getButton() == ButtonsPanel.BUTTON_ACCEPT) {
376
			if(optionsDialog != null) {
377 388

  
378
				//Asignamos las propiedades seleccionadas
379
				getDataModel().setAlgorithm(optionsDialog.getAlgorithm());
380
				getDataModel().setBackGroundColor(optionsDialog.getBackGroundColor());
381
				getDataModel().setTextColor(optionsDialog.getTextColor());
382
				getDataModel().setAddErrorsCSV(optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getAddErrorsCSVCheck().isSelected());
383
				getDataModel().setCenterView(optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getCenterViewCheck().isSelected());
384
				getDataModel().setShowNumber(optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getShowNumberCheck().isSelected());
385
				getDataModel().setInterpolationMethod(optionsDialog.getInterpolationMethod());
386
				getDataModel().setOutFile(optionsDialog.getOptionsPanel(this).getOutFileSelectionPanel().getOutFile());
389
		try {
390
			//---------------------------------------------------
391
			//Bot?n de Aplicar y Aceptar en el cuadro de opciones
392
			if (e.getButton() == ButtonsPanel.BUTTON_APPLY || e.getButton() == ButtonsPanel.BUTTON_ACCEPT) {
393
				if(optionsDialog != null) {
387 394

  
388
				//Recalculamos los errores si ha cambiado el grado
389
				if(optionsDialog.getDegree() != getDataModel().getDegree()) {
390
					getDataModel().setDegree(optionsDialog.getDegree());
391
					tableWrapper.updateErrors();
392
				}
395
					//Asignamos las propiedades seleccionadas
396
					getDataModel().setAlgorithm(optionsDialog.getAlgorithm());
397
					getDataModel().setBackGroundColor(optionsDialog.getBackGroundColor());
398
					getDataModel().setTextColor(optionsDialog.getTextColor());
399
					getDataModel().setAddErrorsCSV(optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getAddErrorsCSVCheck().isSelected());
400
					getDataModel().setCenterView(optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getCenterViewCheck().isSelected());
401
					getDataModel().setShowNumber(optionsDialog.getOptionsPanel(this).getCheckOptionsPanel().getShowNumberCheck().isSelected());
402
					getDataModel().setInterpolationMethod(optionsDialog.getInterpolationMethod());
403
					getDataModel().setOutFile(optionsDialog.getOptionsPanel(this).getOutFileSelectionPanel().getOutFile());
393 404

  
394
				try {
395
					getDataModel().setThreshold(optionsDialog.getThresholdError());
396
					getDataModel().setXCellSize(optionsDialog.getOptionsPanel(this).getCellSizePanel().getXCellSizeValue());
397
					getDataModel().setYCellSize(optionsDialog.getOptionsPanel(this).getCellSizePanel().getYCellSizeValue());
398
				} catch(NumberFormatException exc) {
399
					RasterToolsUtil.messageBoxError("error_numeric_format", null, exc);
400
				}
405
					//Recalculamos los errores si ha cambiado el grado
406
					if(optionsDialog.getDegree() != getDataModel().getDegree()) {
407
						getDataModel().setDegree(optionsDialog.getDegree());
408
						tableWrapper.updateErrors();
409
					}
401 410

  
402
				getSyncViews().setGraphicsColor(getDataModel().getTextColor());
403
				getSyncViews().setBackgroundColor(getDataModel().getBackgroundColor());
404
				getSyncViews().setActiveNumberPoint(getDataModel().isShowNumber());
411
					try {
412
						getDataModel().setThreshold(optionsDialog.getThresholdError());
413
						getDataModel().setXCellSize(optionsDialog.getOptionsPanel(this).getCellSizePanel().getXCellSizeValue());
414
						getDataModel().setYCellSize(optionsDialog.getOptionsPanel(this).getCellSizePanel().getYCellSizeValue());
415
					} catch(NumberFormatException exc) {
416
						RasterToolsUtil.messageBoxError("error_numeric_format", null, exc);
417
					}
405 418

  
419
					getSyncViews().setGraphicsColor(getDataModel().getTextColor());
420
					getSyncViews().setBackgroundColor(getDataModel().getBackgroundColor());
421
					getSyncViews().setActiveNumberPoint(getDataModel().isShowNumber());
422

  
423
				}
406 424
			}
407
		}
408 425

  
409
		//--------------------------------------------------
410
		// Bot?n de Cerrar y Aceptar en el cuadro de opciones
411
		if (e.getButton() == ButtonsPanel.BUTTON_CANCEL || e.getButton() == ButtonsPanel.BUTTON_ACCEPT) {
412
			if(optionsDialog != null) {
413
				fManager.closeWindow(optionsDialog);
426
			//--------------------------------------------------
427
			// Bot?n de Cerrar y Aceptar en el cuadro de opciones
428
			if (e.getButton() == ButtonsPanel.BUTTON_CANCEL || e.getButton() == ButtonsPanel.BUTTON_ACCEPT) {
429
				if(optionsDialog != null) {
430
					System.out.println("---Close");
431
					fManager.closeWindow(optionsDialog);
432
				}
414 433
			}
434

  
435
		} finally {
436
			Georeferencing.enableTableEvent = true;	
415 437
		}
416
		
417
		Georeferencing.enableTableEvent = true;
418 438
	}
419

  
420

  
421

  
422
	/**
423
	 * Obtiene una instancia del objeto que gestiona la
424
	 * persistencia en disco de los puntos de control
425
	 * @return GeoPointsPersistence
426
	 */
427
	/*public GeoPointsPersistence getPersistence() {
428
		if(persistence == null)
429
			persistence = new GeoPointsPersistence();
430
		return persistence;
431
	}*/
432 439
}
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
59 59
					Messages.getText("imagex"), 
60 60
					Messages.getText("imagey"), 
61 61
					"Error X", "Error Y", "RMS", ""};
62
			int[] columnSizes = {40, 37, -1, -1, -1, -1, -1, -1, -1, 0};
62
			int[] columnSizes = {30, 30, -1, -1, -1, -1, -1, -1, -1, 0};
63 63

  
64 64
			GCPModel model = new GCPModel(columnNames);
65 65
			ModelLoader loader = manager.createModelLoader(model);
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/GeoPointsPersistence.java
1
package org.gvsig.raster.georeferencing.app.georeferencingclient;
2

  
3
import java.awt.geom.Point2D;
4
import java.io.BufferedReader;
5
import java.io.BufferedWriter;
6
import java.io.File;
7
import java.io.FileInputStream;
8
import java.io.FileNotFoundException;
9
import java.io.FileOutputStream;
10
import java.io.IOException;
11
import java.io.InputStreamReader;
12
import java.io.OutputStreamWriter;
13

  
14
import javax.swing.JFileChooser;
15

  
16
import org.gvsig.fmap.dal.coverage.datastruct.GeoPoint;
17
import org.gvsig.fmap.dal.coverage.datastruct.GeoPointList;
18
import org.gvsig.fmap.dal.coverage.exception.RmfSerializerException;
19
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
20
import org.gvsig.raster.georeferencing.swing.GCPList;
21
import org.gvsig.raster.georeferencing.swing.impl.GeoreferencingSwingImplLibrary;
22
import org.gvsig.raster.georeferencing.swing.view.SynchronizedViews;
23
import org.gvsig.raster.tools.app.basic.RasterToolsUtil;
24
import org.gvsig.raster.util.ExtendedFileFilter;
25

  
26

  
27
/**
28
 * Operaciones de lectura y escritura en disco de puntos de control.
29
 * 
30
 * 26/12/2007
31
 * @author Nacho Brodin nachobrodin@gmail.com
32
 */
33
public class GeoPointsPersistence {
34
	
35
	/**
36
	 * Salva a rmf la lista de puntos
37
	 * @param pointList
38
	 * @param parent
39
	 * @param dataset
40
	 */
41
	public void saveToRMF(GCPList pointList, RasterDataStore store) {
42
		if (!RasterToolsUtil.messageBoxYesOrNot("sobreescribir_puntos", null))
43
			return;
44

  
45
		GeoPointList geoPointList = pointList.getGeoPointList();
46
		try {
47
			store.setGeoPointList(geoPointList);
48
			store.saveGeoPointListToRmf(geoPointList);
49
		} catch (RmfSerializerException e) {
50
			RasterToolsUtil.messageBoxError("error_salvando_rmf", null, e);
51
		}
52
	}
53
	
54
	/**
55
	 * Carga desde el rmf asociado los puntos de control guardados si los tiene
56
	 * @param pointList
57
	 * @param parent
58
	 * @param dataset
59
	 */
60
	public void loadFromRMF(RasterDataStore store, SynchronizedViews syncViews, TableWrapper table) {
61
		if (!RasterToolsUtil.messageBoxYesOrNot("eliminar_puntos", null))
62
			return;
63

  
64
		// Eliminamos los puntos existentes
65
		syncViews.removeAllPoints();
66
		table.getTable().removeAllRows();
67

  
68
		// Cargamos los puntos le?dos del RMF
69
		GeoPointList pointList = store.getGeoPointList();
70
		if(pointList == null) {
71
			RasterToolsUtil.messageBoxInfo("no_points_to_load", null);
72
			return;
73
		}
74

  
75
		for (int i = 0; i < pointList.size(); i++) {
76
			GeoPoint point = pointList.get(i);
77
			long id = syncViews.addPoint(point.getMapPoint(), point.getPixelPoint());
78
			table.getTable().addRow(new Object[]{
79
					true, i, 
80
					point.getMapPoint().getX(), 
81
					point.getMapPoint().getY(), 
82
					point.getPixelPoint().getX(), 
83
					point.getPixelPoint().getY(), 
84
					0, 0, 0, id});
85
		}
86
		syncViews.calcPointsNumeration();
87
		table.updateErrors();
88
	}
89
	
90
	/**
91
	 * Funci?n que se ejecuta al pulsar el bot?n de export a ascii
92
	 */
93
	public void exportToCSV(GCPList pointList, boolean error) {
94
		JFileChooser chooser = new JFileChooser();
95
		chooser.setDialogTitle(RasterToolsUtil.getText(this, "seleccionar_fichero"));
96

  
97
		int returnVal = chooser.showSaveDialog(null);
98
		if(returnVal == JFileChooser.APPROVE_OPTION){
99
			String fName = chooser.getSelectedFile().toString();
100
			if(!fName.endsWith(".csv"))
101
				fName = fName + ".csv";
102
			saveCSVPointList(fName, pointList, error);
103
		}
104
	}
105

  
106
	/**
107
	 * Funci?n que se ejecuta al pulsar el bot?n de importar desde CSV
108
	 */
109
	public void importFromCSV(SynchronizedViews syncViews, TableWrapper table) {
110
		JFileChooser chooser = new JFileChooser();
111
		chooser.setDialogTitle(RasterToolsUtil.getText(this, "seleccionar_fichero"));
112
		ExtendedFileFilter fileFilter = null;
113

  
114
		fileFilter = new ExtendedFileFilter();
115
		fileFilter.addExtension("csv");
116
		fileFilter.setDescription("CSV File");
117
			
118
		chooser.addChoosableFileFilter(fileFilter);
119

  
120
		if (fileFilter != null)
121
			chooser.setFileFilter(fileFilter);
122

  
123
		int returnVal = chooser.showOpenDialog(null);
124
		if (returnVal == JFileChooser.APPROVE_OPTION) {
125
			File f = chooser.getSelectedFile();
126
			if(!f.exists()) {
127
				RasterToolsUtil.messageBoxError("error_file_not_found", null);
128
				return;
129
			}
130
			if(!RasterToolsUtil.messageBoxYesOrNot("eliminar_puntos", null))
131
				return;
132
			loadCSVPointList(f.getAbsolutePath(), syncViews, table);
133
			table.updateErrors();
134
		}
135
	}
136
	
137
	/**
138
	 * Crea el fichero Ascii con la lista de puntos y la salva a disco
139
	 * @param file
140
	 */
141
	public void saveCSVPointList(String file, GCPList pointList, boolean error){
142
		try{
143
			BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
144
			if(error)
145
				out.write("\"Pt\",\"X\",\"Y\",\"X'\",\"Y'\",\"ErrX\",\"ErrY\",\"RMS\"\n");
146
			else
147
				out.write("\"Pt\",\"X\",\"Y\",\"X'\",\"Y'\"\n");
148

  
149
			for(int i = 0; i < pointList.size(); i++) {
150
				GeoPoint geoPoint =  pointList.getGeoPoint(i);
151
				String point = i + "," +
152
								geoPoint.getPixelPoint().getX() + "," +
153
								geoPoint.getPixelPoint().getY() + "," +
154
								geoPoint.getMapPoint().getX() + "," +
155
								geoPoint.getMapPoint().getY();
156
				String errorTxt = "";
157
				try{
158
					errorTxt = geoPoint.getErrorX() + "," + geoPoint.getErrorY() + "," + geoPoint.getRms();
159
					if(error)
160
						out.write(point + "," + errorTxt + "\n");
161
					else
162
						out.write(point + "\n");
163
				}catch(ArrayIndexOutOfBoundsException ex){
164
					out.write(point + "\n");
165
				}
166
			}
167
			out.close();
168
		}catch(FileNotFoundException ex){
169
			//No salvamos el csv
170
		}catch(IOException ex){
171
			//No salvamos el csv
172
		}
173
	}
174
	
175
	/**
176
	 * Crea la lista de puntos a partir de un fichero CSV
177
	 * @param file
178
	 */
179
	private void loadCSVPointList(String file, SynchronizedViews syncViews, TableWrapper tableWrapper){
180
		try{
181
			BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
182
			String line = in.readLine();
183
			int nPoint = 0;
184
			while(line != null) {
185
				if(nPoint == 0) {
186
					if( !line.equals("\"Pt\",\"X\",\"Y\",\"X'\",\"Y'\",\"ErrX\",\"ErrY\",\"RMS\"") && 
187
						!line.equals("\"Pt\",\"X\",\"Y\",\"X'\",\"Y'\"") && 
188
						!line.equals("\"Pt\",\"X\",\"Y\",\"X'\",\"Y'\",\"Z\",\"ErrX\",\"ErrY\",\"RMS\"") &&
189
						!line.equals("\"Pt\",\"X\",\"Y\",\"X'\",\"Y'\",\"Z\"")) {
190
						GeoreferencingSwingImplLibrary.messageBoxError("error_point_file", null);
191
						return;
192
					} else {
193
						syncViews.removeAllPoints();
194
						tableWrapper.getTable().removeAllRows();
195
					}
196
				} else {
197
					double x = 0D, y = 0D, xx = 0D, yy = 0D;
198
					String[] tokens = line.split(",");
199
						for(int tok = 0; tok < tokens.length; tok++){
200
							try{
201
								if(tok == 1)
202
									x = Double.parseDouble(tokens[tok]);
203
								if(tok == 2)
204
									y = Double.parseDouble(tokens[tok]);
205
								if(tok == 3)
206
									xx = Double.parseDouble(tokens[tok]);
207
								if(tok == 4)
208
									yy = Double.parseDouble(tokens[tok]);
209
							}catch(NumberFormatException ex){
210
								break;
211
							}
212
						}
213
					
214
					if(x == 0 && y == 0 && xx == 0 && yy == 0){
215
						line = in.readLine();
216
						continue;
217
					}
218
	
219
					long id = syncViews.addPoint(new Point2D.Double(xx, yy), new Point2D.Double(x, y));
220
					tableWrapper.getTable().addRow(new Object[]{true, nPoint, xx, yy, x, y, 0, 0, 0, id});
221
				}
222
				nPoint++;
223
				line = in.readLine();
224
			}
225
			in.close();
226
			syncViews.calcPointsNumeration();
227
		} catch(FileNotFoundException ex){
228
			//No salvamos el csv
229
		} catch(IOException ex){
230
			//No salvamos el csv
231
		} /*catch(NotInitializeException ex){
232
			GeoreferencingSwingImplLibrary.messageBoxError("table_not_initialize", tableWrapper.getTable(), ex);
233
		}*/
234
	}
235
}
0 236

  
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/layer/GPGraphic.java
79 79
	 * @param pointNumber Numero de punto a mostrar
80 80
	 * @param label Etiqueta del punto
81 81
	 */
82
	public void draw(Graphics2D g, int pointNumber, String label, int type, CanvasZone canvas) {
82
	public void draw(
83
			Graphics2D g, 
84
			int pointNumber, 
85
			String label, 
86
			int type, 
87
			CanvasZone canvas) {
83 88
		switch (type) {
84 89
		case PIXEL:
85 90
			Point2D p1 = geoPoint.getPixelPoint();
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
141 141
		if(buttonsPanel == null) {
142 142
			buttonsPanel = new JPanel();
143 143
			buttonsPanel.setLayout(new GridBagLayout());
144
			//buttonsPanel.setBorder(BorderFactory.createLineBorder(Color.red));
145 144
			
146 145
			GridBagConstraints gb = new GridBagConstraints();
147 146
			gb.insets = new java.awt.Insets(0, 0, 1, 1);
......
189 188
			
190 189
			gb.gridy = 0;
191 190
			gb.gridx = 10;
192
			//gb.gridwidth = 4;
193 191
			buttonsPanel.add(getError(), gb);
194 192
		}
195 193
		return buttonsPanel;
......
374 372

  
375 373
	public void componentShown(ComponentEvent e) {
376 374
	}
377
	
378
	
379
	//****************************************************
380
	//Acceso a los datos de la tabla
381
	
382
	/**
383
	 * Obtiene las coordenadas de una fila
384
	 * @param row Fila de la que se quieren obtener las coordenadas
385
	 * @return Array con 4 valores coordenadas real X, coordenada real Y, coordenadas raster X y coordenada raste Y
386
	 */
387
	/*public double[] getCoordinates(int row) {
388
		double xMap = 0, yMap = 0, xRaster = 0, yRaster = 0;
389
		boolean numberFormatException = false;
390
		try {
391
			Object value = getTable().getModel().getValueAt(row, 2);
392
			try {
393
				if(value instanceof Double) 
394
					xMap = ((Double)value).doubleValue();
395
				else if(value instanceof String) 
396
					xMap = Double.valueOf(((String)value)).doubleValue();
397
			} catch (NumberFormatException ex1) {
398
				numberFormatException = true;
399
			}
400

  
401
			value = getTable().getModel().getValueAt(row, 3);
402
			try {
403
				if(value instanceof Double) 
404
					yMap = ((Double)value).doubleValue();
405
				else if(value instanceof String) 
406
					yMap = Double.valueOf(((String)value)).doubleValue();
407
			} catch (NumberFormatException ex1) {
408
				numberFormatException = true;
409
			}
410

  
411
			try {
412
				value = getTable().getModel().getValueAt(row, 4);
413
				if(value instanceof Double) 
414
					xRaster = ((Double)value).doubleValue();
415
				else if(value instanceof String) 
416
					xRaster = Double.valueOf(((String)value)).doubleValue();
417
			} catch (NumberFormatException ex1) {
418
				numberFormatException = true;
419
			}
420

  
421
			try {
422
				value = getTable().getModel().getValueAt(row, 5);
423
				if(value instanceof Double) 
424
					yRaster = ((Double)value).doubleValue();
425
				else if(value instanceof String) 
426
					yRaster = Double.valueOf(((String)value)).doubleValue();
427
			} catch (NumberFormatException ex1) {
428
				numberFormatException = true;
429
			}
430
			
431
			//Esto es necesario porque aunque se produzca una excepci?n en la lectura
432
			//de un valor deben leerse los dem?s campos antes de terminar.
433
			if(numberFormatException) {
434
				GeoreferencingSwingImplLibrary.messageBoxError("value_not_valid", table, null);
435
				try {
436
					getTable().getModel().setValueAt(new String(xMap + ""), row, 2);
437
					getTable().getModel().setValueAt(new String(yMap + ""), row, 3);
438
					getTable().getModel().setValueAt(new String(xRaster + ""), row, 4);
439
					getTable().getModel().setValueAt(new String(yRaster + ""), row, 5);
440
				} catch (NotInitializeException e) {
441
					//Si est? inicializada sino habr?a entrado en la excepci?n de nivel mayor
442
				}
443
			}
444
			
445
			//return new double[]{xMap, yMap, xRaster, yRaster};
446
		} catch (NotInitializeException ex) {
447
			GeoreferencingSwingImplLibrary.messageBoxError("table_not_initialize", table, null);
448
		}
449
		return new double[]{xMap, yMap, xRaster, yRaster};
450
	}*/
451
	
452
	/**
453
	 * Asigna un valor al punto en coordenadas raster de la tabla. Es recomendable gastar este y no 
454
	 * setValueAt para evitar que se recalculen los errores en cada inserci?n de cada celda. De esta
455
	 * forma al actualiza ambas coordenadas a la vez solo se calcular? el error una vez.
456
	 * @param valueX Valor en X
457
	 * @param valueY Valor en Y
458
	 * @param row Fila a actualizar
459
	 * @param col Columna a actualizar
460
	 */
461
	/*public void updateRasterPoint(Object valueX, Object valueY, int row) {
462
		try {
463
			getTable().setValueAt(valueX, row, 4);
464
			getTable().setValueAt(valueY, row, 5);
465
			updateErrors();
466
		} catch (NotInitializeException e) {
467
			GeoreferencingSwingImplLibrary.messageBoxError("table_not_initialize", this, e);
468
		}
469
	}*/
470
	
471
	/**
472
	 * Asigna un valor al punto en coordenadas del mundo de la tabla. Es recomendable gastar este y no 
473
	 * setValueAt para evitar que se recalculen los errores en cada inserci?n de cada celda. De esta
474
	 * forma al actualiza ambas coordenadas a la vez solo se calcular? el error una vez.
475
	 * @param valueX Valor en X
476
	 * @param valueY Valor en Y
477
	 * @param row Fila a actualizar
478
	 * @param col Columna a actualizar
479
	 */
480
	/*public void updateMapPoint(Object valueX, Object valueY, int row) {
481
		try {
482
			getTable().setValueAt(valueX, row, 2);
483
			getTable().setValueAt(valueY, row, 3);
484
			updateErrors();
485
		} catch (NotInitializeException e) {
486
			GeoreferencingSwingImplLibrary.messageBoxError("table_not_initialize", this, e);
487
		}
488
	}*/
489
	
490
	/**
491
	 * Asigna un valor al punto de la tabla. Es recomendable gastar este y no 
492
	 * setValueAt para evitar que se recalculen los errores en cada inserci?n de cada celda. De esta
493
	 * forma al actualiza ambas coordenadas a la vez solo se calcular? el error una vez.
494
	 * @param mapX Valor en X en coordenadas del mundo
495
	 * @param mapY Valor en Y en coordenadas del mundo
496
	 * @param pixelX Valor en X en coordenadas del raster
497
	 * @param pixelY Valor en Y en coordenadas del raster
498
	 * @param row Fila a actualizar
499
	 * @param col Columna a actualizar
500
	 */
501
	/*public void updatePoint(Object mapX, Object mapY, Object pixelX, Object pixelY, int row) {
502
		try {
503
			getTable().setValueAt(mapX, row, 2);
504
			getTable().setValueAt(mapY, row, 3);
505
			getTable().setValueAt(pixelX, row, 4);
506
			getTable().setValueAt(pixelY, row, 5);
507
			updateErrors();
508
		} catch (NotInitializeException e) {
509
			GeoreferencingSwingImplLibrary.messageBoxError("table_not_initialize", this, e);
510
		}
511
	}*/
512
	
513
	/**
514
	 * Actualiza los errores de toda la tabla. Esta funci?n debe ser llamada cuando ha
515
	 * habido alg?n cambio en los valores de los puntos.
516
	 * @throws NotInitializeException
517
	 */
518
	/*public void updateErrors() {
519
		if(pointList == null)
520
			return;
521
		process.addParam("gpcs", pointList);
522
		process.addParam("orden", new Integer(selectedDegree));
523
		try {
524
			process.execute();
525
		} catch(RuntimeException e) {
526
			//Matriz singular
527
			return;
528
		} catch (ProcessInterruptedException e) {
529
		} catch (ProcessException e) {
530
		}
531
		HashMap<String, Object> map = (HashMap<String, Object>)process.getResult();
532
		Geotransformation result = (Geotransformation)map.get("RESULT");
533
		if(result == null)
534
			return;
535
		
536
		//Actualizamos los errores de toda la tabla
537
		try {
538
			ColorColumnRenderer cr = new ColorColumnRenderer();
539
			for (int i = 0; i < pointList.size(); i++) {
540
				GeoPoint point = pointList.get(i);
541
				getTable().setValueAt(new Double(point.getErrorX()), point.getNumber(), 6);
542
				getTable().setValueAt(new Double(point.getErrorY()), point.getNumber(), 7);
543
				getTable().setValueAt(new Double(point.getRms()), point.getNumber(), 8);
544
				if (point.getRms() > threshold)
545
					cr.addRowToColor1(point.getNumber());
546
				else
547
					cr.addRowToColor2(point.getNumber());
548
			}
549
			getTable().getTable().getJTable().getColumnModel().getColumn(8).setCellRenderer(cr);
550
			getError().setValue(result.getRmsTotal() + "");
551
		} catch (NotInitializeException e) {
552
			GeoreferencingSwingImplLibrary.messageBoxError("table_not_initialize", this, e);
553
		}
554
	}*/
555

  
556 375
}
557 376

  
558 377

  
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/launcher/GeorefLauncherDialog.java
41 41
public class GeorefLauncherDialog extends JPanel implements GeoreferencingLauncher {
42 42
	private static final long              serialVersionUID = 7362459094802955247L;
43 43
	private GeorefLauncherPanel            geoLauncherPanel = null;
44
	private GeoreferencingOptionsDataModel dataModel        = null;
45 44
	
46 45
	private List<String>                   viewNameList     = null;
47 46
	private int                            polynomialDegree = 0;
......
57 56
		
58 57
		BorderLayout bl = new BorderLayout();
59 58
		this.setLayout(bl);
59
		GeoreferencingOptionsDataModel dataModel = GeoreferencingSwingLocator.getSwingManager().getDataModel();
60
		dataModel.reset();
60 61
		
61 62
		this.add(getGeorefLauncherPanel(), BorderLayout.CENTER);
62 63
	}
......
163 164
		return geoLauncherPanel.getCellSizePanel().getYCellSizeValue();
164 165
	}
165 166

  
166
	public GeoreferencingOptionsDataModel getDataModel() {
167
		if(dataModel == null) {
168
			dataModel = GeoreferencingSwingLocator.getSwingManager().getDataModel();
169
		}
167
	public void buildDataModel() {
168
		GeoreferencingOptionsDataModel dataModel = GeoreferencingSwingLocator.getSwingManager().getDataModel();
170 169
		dataModel.setAlgorithm(getAlgorithm());
171 170
		dataModel.setDegree(getDegree());
172 171
		dataModel.setInterpolationMethod(getInterpolationMethod());
......
176 175
		dataModel.setType(getType());
177 176
		dataModel.setDataStore(getDataStore());
178 177
		dataModel.setSelectedView(getSelectedView());
179
		return dataModel;
180 178
	}
181 179

  
182 180
}
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/option/GCPListImpl.java
18 18
		private static final long serialVersionUID = 1L;
19 19
	}
20 20
	
21
	public void buildNewList(GeoPointList geoPointList) {
22
		long id = System.currentTimeMillis();
23
		if(geoPointList != null) {
24
			pList.clear();
25
			for (int i = 0; i < geoPointList.size(); i++) {
26
				GPGraphic graphicGCP = new GPGraphic(geoPointList.get(i));
27
				graphicGCP.setId(id);		
28
				pList.add(graphicGCP);
29
				id += 1;
30
			}
31
		}
32
	}
33
	
21 34
	public GeoPoint getGeoPoint(int i) {
22 35
		return pList.get(i).getGeoPoint();
23 36
	}
......
46 59
		pList.remove(i);
47 60
	}
48 61

  
62
	public void removeAll() {
63
		for (int i = pList.size() - 1; i >= 0; i--) {
64
			pList.remove(i);
65
		}
66
	}
49 67
}
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/option/GeorefOptionsDataModelImpl.java
52 52
	private String                        selectedView             = null;
53 53
	private GCPList                       pointList                = null;
54 54
	
55
	public void reset() {
56
		store                    = null;
57
		selectedView             = null;
58
		if(pointList != null)
59
			pointList.removeAll();
60
	}
61
	
55 62
	/**
56 63
	 * Obtiene el grado del polin?mio
57 64
	 * @return entero con el valor que representa el grado del polin?mio
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/DefaultGeoreferencingSwingManager.java
106 106
		SynchronizationViewImpl syncViews = new SynchronizationViewImpl(
107 107
				getDataModel().getGCPList(), 
108 108
				listener);
109
		syncViews.setRequestsManager(viewMan[1], viewMan[0], viewMan[3], viewMan[2]);
110
		syncViews.setViews(views[1], views[0], views[3], views[2], table);
109
		syncViews.setRequestsManager(viewMan[0], viewMan[1], viewMan[2], viewMan[3]);
110
		syncViews.setViews(views[0], views[1], views[2], views[3], table);
111 111
		return syncViews;
112 112
	}
113 113

  
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/view/synchronize/GCPSynchronizationImpl.java
85 85
	 * @param zMap
86 86
	 */
87 87
	public void setViews(
88
			GeoreferencingView vMap,
88 89
			GeoreferencingView vRaster, 
89
			GeoreferencingView vMap, 
90
			GeoreferencingView zRaster, 
91 90
			GeoreferencingView zMap,
91
			GeoreferencingView zRaster, 
92 92
			PagedTable table) {
93 93
		this.table = table;
94 94
		viewRaster = (ViewPanelImpl)vRaster;
......
159 159
	 * y redibuja estos en todas las vistas
160 160
	 */
161 161
	public void redrawPoints() {
162
		/*if(viewMapGCPs != null)
163
			viewMapGCPs.recalcMapDrawCoordinates();
164
		if(viewRasterGCPs != null)
165
			viewRasterGCPs.recalcPixelDrawCoordinates();
166
		if(viewMapGCPsZoom != null)
167
			viewMapGCPsZoom.recalcMapDrawCoordinates();
168
		if(viewRasterGCPsZoom != null)
169
			viewRasterGCPsZoom.recalcPixelDrawCoordinates();*/
170 162
		if(viewRaster != null)
171 163
			viewRaster.getCanvas().repaint();
172 164
		if(viewMap != null)
......
178 170
	}
179 171
	
180 172
	/**
181
	 * Redibuja el canvas de todas las vistas
182
	 */
183
	/*private void repaint() {
184
		if(viewRaster != null)
185
			viewRaster.getCanvas().repaint();
186
		if(viewMap != null)
187
			viewMap.getCanvas().repaint();
188
		if(zoomMap != null)
189
			zoomMap.getCanvas().repaint();
190
		if(zoomRaster != null)
191
			zoomRaster.getCanvas().repaint();
192
	}*/
193
	
194
	/**
195 173
	 * Registra el listener para la herramienta de selecci?n de puntos de control
196 174
	 */
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff