Revision 16554 trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/geolocation/listener/GeoLocationPanelListener.java

View differences:

GeoLocationPanelListener.java
23 23
import java.awt.geom.AffineTransform;
24 24
import java.awt.geom.Rectangle2D;
25 25
import java.io.BufferedReader;
26
import java.io.File;
27 26
import java.io.FileInputStream;
28 27
import java.io.FileNotFoundException;
29 28
import java.io.IOException;
......
35 34
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
36 35
import org.gvsig.gui.beans.datainput.DataInputContainerListener;
37 36
import org.gvsig.raster.datastruct.Extent;
37
import org.gvsig.raster.util.ExtendedFileFilter;
38 38
import org.gvsig.raster.util.Historical;
39 39
import org.gvsig.raster.util.RasterToolsUtil;
40 40
import org.gvsig.rastertools.geolocation.ui.GeoLocationPanel;
......
50 50
 *
51 51
 */
52 52
public class GeoLocationPanelListener implements ActionListener, DataInputContainerListener {
53
	
53

  
54 54
	private GeoLocationPanel	panel = null;
55 55
	private boolean             enableValueChangeEvent = false;
56
	
56

  
57 57
	/**
58
	 * Crea un nuevo <code>GeoLocationPanelListener</code> 
58
	 * Crea un nuevo <code>GeoLocationPanelListener</code>
59 59
	 * @param panel
60 60
	 */
61 61
	public GeoLocationPanelListener(GeoLocationPanel panel) {
......
78 78
			}
79 79
			return;
80 80
		}
81
		
81

  
82 82
		//Asignamos la georreferenciaci?n que hay en ese momento en el dialogo
83 83
		if(e.getSource() == panel.getApplyButton()) {
84 84
			try {
......
97 97
				return;
98 98
			}
99 99
		}
100
		
100

  
101 101
		Historical hist = panel.getHistorical();
102 102
		if(hist == null)
103 103
			return;
104
		
104

  
105 105
		AffineTransform at = null;
106
		
106

  
107 107
		//Cargamos la primera transformaci?n
108
		if(e.getSource() == panel.getFirstButton()) 
108
		if(e.getSource() == panel.getFirstButton())
109 109
			at = (AffineTransform)hist.getFirst();
110
					
110

  
111 111
		//Cargamos la transformaci?n anterior
112
		if(e.getSource() == panel.getBackButton()) 
112
		if(e.getSource() == panel.getBackButton())
113 113
			at = (AffineTransform)hist.getBack();
114
					
114

  
115 115
		////Cargamos la transformaci?n siguiente
116 116
		if(e.getSource() == panel.getNextButton())
117 117
			at = (AffineTransform)hist.getNext();
......
119 119
		//Cargamos la georreferenciaci?n del raster
120 120
		if(e.getSource() == panel.getResetButton())
121 121
			at = panel.getLayer().getDataSource().getOwnAffineTransform();
122
		
122

  
123 123
		//Cargar la georreferenciaci?n desde tfw
124 124
		if(e.getSource() == panel.getTfwLoad()) {
125 125
			JFileChooser chooser = new JFileChooser(FileOpenWizard.getLastPath());
126 126
			chooser.setDialogTitle(PluginServices.getText(this, "seleccionar_fichero"));
127
			chooser.addChoosableFileFilter(new GeorreferencingFileFilter("tfw"));
128
			chooser.addChoosableFileFilter(new GeorreferencingFileFilter("wld"));
127
			chooser.addChoosableFileFilter(new ExtendedFileFilter("tfw"));
128
			chooser.addChoosableFileFilter(new ExtendedFileFilter("wld"));
129

  
130
			ExtendedFileFilter allFilters = new ExtendedFileFilter();
131
			allFilters.addExtension("tfw");
132
			allFilters.addExtension("wld");
133
			allFilters.setDescription(PluginServices.getText(this, "todos_soportados"));
134
			chooser.addChoosableFileFilter(allFilters);
135
			chooser.setFileFilter(allFilters);
136

  
129 137
			int returnVal = chooser.showOpenDialog(panel);
130 138
			if (returnVal == JFileChooser.APPROVE_OPTION) {
131 139
				String fName = chooser.getSelectedFile().toString();
132 140
				at = readTfw(fName);
133 141
			}
134 142
		}
135
		
143

  
136 144
		//Centrar el raster en la vista
137 145
		if(e.getSource() == panel.getCenterToView()) {
138 146
			Extent extentView = calcCenterExtent(panel.getViewPort());
......
143 151
			at = new AffineTransform(psX, 0, 0, psY, x, y);
144 152
			panel.setModify(true);
145 153
		}
146
		
154

  
147 155
		//Entrar? en el caso de que se haya seleccionado alguna transformaci?n
148 156
		if(at != null) {
149 157
			panel.getLayer().setAT(at);
......
152 160
			panel.getMapCtrl().getMapContext().invalidate();
153 161
		}
154 162
	}
155
	
163

  
156 164
	/**
157 165
	 * Control del cambio de valor dentro de las cajas de texto. Cuando esto ocurre tiene
158 166
	 * el mismo efecto que el bot?n "Aplicar"
......
182 190
	public void setEnableValueChangeEvent(boolean enableValueChangeEvent) {
183 191
		this.enableValueChangeEvent = enableValueChangeEvent;
184 192
	}
185
	
193

  
186 194
	/**
187
	 * Centra el raster asociado a la capa en al extent del viewport pasado 
188
	 * por par?metro. 
195
	 * Centra el raster asociado a la capa en al extent del viewport pasado
196
	 * por par?metro.
189 197
	 * @param vp ViewPort
190 198
	 * @return	Extent para la imagen
191 199
	 */
192 200
	private Extent calcCenterExtent(ViewPort vp) {
193 201
		Extent tempExtent = null;
194 202
		double widthPxImg, heightPxImg;
195
		
203

  
196 204
		widthPxImg = ((FLyrRasterSE)panel.getLayer()).getPxWidth();
197 205
		heightPxImg = ((FLyrRasterSE)panel.getLayer()).getPxHeight();
198
		
206

  
199 207
		if(vp == null || vp.getAdjustedExtent() == null) {
200 208
			vp = new ViewPort(null);
201 209
			Rectangle2D r2d = new Rectangle2D.Double(0, 0, widthPxImg, heightPxImg);
......
224 232
		}
225 233
		return new Extent(ulX, ulY, lrX, lrY);
226 234
	}
227
	
235

  
228 236
	/**
229
	 * Lee las coordenadas de un fichero de tfw con una transformaci?n y 
237
	 * Lee las coordenadas de un fichero de tfw con una transformaci?n y
230 238
	 * devuelve la clase AffineTransform con dicha transformaci?n. Esta llamada gestiona los
231 239
	 * errores producidos actuando en consecuencia. Muestra los mensajes al usuario y retorna
232 240
	 * null en caso de tener problemas.
......
260 268
		}
261 269
		return new AffineTransform(result[0], result[1], result[2], result[3], result[4], result[5]);
262 270
	}
263
	
264
	/**
265
	 * Filtro para el selector de formatos de georreferenciaci?n
266
	 * @author Nacho Brodin (nachobrodin@gmail.com)
267
	 */
268
	class GeorreferencingFileFilter extends javax.swing.filechooser.FileFilter {
269
		private String				filter;
270

  
271
		public GeorreferencingFileFilter(String fil) {
272
			this.filter = fil;
273
		}
274

  
275
		public boolean accept(File f) {
276
			return f.isDirectory() || f.getName().toLowerCase().endsWith("." + filter);
277
		}
278

  
279
		public String getDescription() {
280
			return "." + filter;
281
		}
282
	}
283 271
}

Also available in: Unified diff