Revision 16554

View differences:

trunk/extensions/extRasterTools-SE/src/org/gvsig/raster/util/ExtendedFileFilter.java
1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 */
19
package org.gvsig.raster.util;
20

  
21
import java.io.File;
22
import java.util.ArrayList;
23

  
24
import javax.swing.filechooser.FileFilter;
25

  
26
import com.iver.andami.PluginServices;
27
/**
28
 * ExtendedFileFilter es una clase para usarla junto a los JFileChooser.
29
 * Ofrece una funcionalidad simple para poder agregar extensiones de manera
30
 * comoda y rapida. Las descripciones ya las pone con un formato.
31
 *
32
 * @version 21/11/2007
33
 * @author BorSanZa - Borja S?nchez Zamorano (borja.sanchez@iver.es)
34
 */
35
public class ExtendedFileFilter extends FileFilter {
36
	String description = null;
37

  
38
	ArrayList extensions = new ArrayList();
39

  
40
	/**
41
	 * Constructor de un ExtendedFileFilter
42
	 */
43
	public ExtendedFileFilter() {
44
	}
45

  
46
	/**
47
	 * Construye un ExtendedFileFilter con una extensi?n ya agregada
48
	 * @param extension
49
	 */
50
	public ExtendedFileFilter(String extension) {
51
		addExtension(extension);
52
	}
53

  
54
	/**
55
	 * A?ade una extensi?n a la lista de extensiones soportadas
56
	 * @param extension
57
	 */
58
	public void addExtension(String extension) {
59
		if (extension == null)
60
			return;
61

  
62
		extensions.add(extension);
63
	}
64

  
65
	/*
66
	 * (non-Javadoc)
67
	 * @see javax.swing.filechooser.FileFilter#accept(java.io.File)
68
	 */
69
	public boolean accept(File f) {
70
		if (f.isDirectory())
71
			return true;
72

  
73
		String s = f.getName();
74
		int i = s.lastIndexOf('.');
75

  
76
		if (i > 0 && i < s.length() - 1) {
77
			String extension = s.substring(i + 1).toLowerCase();
78
			for (int j = 0; j < extensions.size(); j++) {
79
				if (extensions.get(j).toString().toLowerCase().equals(extension))
80
					return true;
81
			}
82
		}
83

  
84
		return false;
85
	}
86

  
87
	/**
88
	 * Normaliza el nombre de un fichero, a?adiendo la extension si fuera
89
	 * necesario
90
	 * @param file
91
	 * @return
92
	 */
93
	public String getNormalizedFilename(File file) {
94
		String s = file.getName();
95
		int i = s.lastIndexOf('.');
96

  
97
		if (i > 0 && i < s.length() - 1) {
98
			String extension = s.substring(i + 1).toLowerCase();
99
			for (int j = 0; j < extensions.size(); j++) {
100
				if (extensions.get(j).toString().toLowerCase().equals(extension))
101
					return file.toString();
102
			}
103
		}
104

  
105
		return file.toString() + "." + extensions.get(0).toString().toLowerCase();
106
	}
107

  
108
	/*
109
	 * (non-Javadoc)
110
	 * @see javax.swing.filechooser.FileFilter#getDescription()
111
	 */
112
	public String getDescription() {
113
		String format1 = "";
114
		String format2 = "";
115
		for (int j = 0; j < extensions.size(); j++) {
116
			if (format1.length() != 0) {
117
				format1 = format1 + ", ";
118
				format2 = format2 + "; ";
119
			}
120
			format1 = format1 + extensions.get(j).toString().toUpperCase();
121
			format2 = format2 + "*." + extensions.get(j).toString().toLowerCase();
122
		}
123
		if (description == null)
124
			return PluginServices.getText(this, "files") + " " + format1 + " (" + format2 + ")";
125

  
126
		return description + " (" + format2 + ")";
127
	}
128

  
129
	/**
130
	 * Especifica la descripcion del item
131
	 * @param description the description to set
132
	 */
133
	public void setDescription(String description) {
134
		this.description = description;
135
	}
136

  
137
	/**
138
	 * Borra una extension de la lista de extensiones
139
	 * @param extension
140
	 */
141
	public void removeExtension(String extension){
142
		extensions.remove(extension);
143
 }
144

  
145
	/**
146
	 * Borra todas las extensiones existentes
147
	 */
148
	public void clearExtensions(){
149
		extensions.clear();
150
	}
151

  
152
	/**
153
	 * Devuelve una lista con las extensiones disponibles
154
	 * @return
155
	 */
156
	public ArrayList getExtensions(){
157
		return extensions;
158
	}
159
}
trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/saveraster/ui/panels/listener/DataInputListener.java
35 35
import org.gvsig.gui.beans.datainput.DataInputContainer;
36 36
import org.gvsig.gui.beans.datainput.DataInputContainerListener;
37 37
import org.gvsig.raster.dataset.GeoRasterWriter;
38
import org.gvsig.raster.util.ExtendedFileFilter;
38 39
import org.gvsig.raster.util.MathUtils;
40
import org.gvsig.raster.util.RasterUtilities;
39 41
import org.gvsig.rastertools.saveraster.ui.SaveRasterDialog;
40 42
import org.gvsig.rastertools.saveraster.ui.SaveRasterPanel;
41 43

  
......
43 45
import com.iver.cit.gvsig.addlayer.fileopen.FileOpenWizard;
44 46
/**
45 47
 * Panel encargado de manejar los eventos del los controles de Salvar a Raster
46
 * 
48
 *
47 49
 * @author Nacho Brodin (nachobrodin@gmail.com)
48 50
 */
49 51
public class DataInputListener implements ActionListener, MouseListener, FocusListener, KeyListener, DataInputContainerListener {
......
115 117
	}
116 118

  
117 119
	/**
118
	 * A partir del valor de tama?o de imagen de salida, comprueba el tipo de 
120
	 * A partir del valor de tama?o de imagen de salida, comprueba el tipo de
119 121
	 * dato seleccionado por el usuario (Pixels, mms, cms, mts, pulgadas) y devuelve
120 122
	 * el valor en pixeles.
121 123
	 * @param value Cadena introducida por el usuario
......
140 142
	/**
141 143
	 * Asigna al JTextField pasado como par?metro el valor en pixels, cms, mms ,mtrs, pulgadas dependiendo
142 144
	 * de la selecci?n del combo
143
	 * @param pixel	Valor en pixels	
145
	 * @param pixel	Valor en pixels
144 146
	 * @param field Campo donde se escribe el valor
145 147
	 */
146 148
	private void setCorrectMeasure(double pixel, DataInputContainer field){
......
270 272
			//Validamos el ancho si se ha introducido algo
271 273
			if(!controlPanel.getTWidth().getValue().equals(""))
272 274
				validateTextField(controlPanel.getTWidth());
273
			
275

  
274 276
			//Validamos el alto si se ha introducido algo
275 277
			if(!controlPanel.getTHeight().getValue().equals(""))
276 278
				validateTextField(controlPanel.getTHeight());
......
290 292
			double ulX = Double.parseDouble(controlPanel.getTSupIzqX().getValue());
291 293
			double ulY = Double.parseDouble(controlPanel.getTSupIzqY().getValue());
292 294

  
293
			if (ulX > lrX) 
295
			if (ulX > lrX)
294 296
				size[0] = ulX - lrX;
295
			else 
297
			else
296 298
				size[0] = lrX - ulX;
297
			
298
			if (ulY > lrY) 
299

  
300
			if (ulY > lrY)
299 301
				size[1] = ulY - lrY;
300
			else 
302
			else
301 303
				size[1] = lrY - ulY;
302
			
304

  
303 305
			return size;
304 306
		}
305 307

  
......
436 438
	 */
437 439
	public void enableButtons() {
438 440
		try {
439
			if (Double.parseDouble(controlPanel.getTWidth().getValue()) == 0 || 
441
			if (Double.parseDouble(controlPanel.getTWidth().getValue()) == 0 ||
440 442
				Double.parseDouble(controlPanel.getTHeight().getValue()) == 0 ||
441 443
				controlPanel.getTWidth().getValue().equals("") ||
442 444
				controlPanel.getTHeight().getValue().equals("") ||
443 445
				this.fName == null || this.fName.equals("")) {
444
				if (dialog != null) 
446
				if (dialog != null)
445 447
					dialog.getButtonsPanel().getButton(ButtonsPanel.BUTTON_APPLY).setEnabled(false);
446 448
				return;
447 449
			}
......
469 471
			// A?adimos las extensiones que hayan sido registradas en el driver
470 472
			String[] extList = GeoRasterWriter.getDriversExtensions();
471 473
			for (int i = 0; i < extList.length; i++)
472
				chooser.addChoosableFileFilter(new WriterFilter(extList[i]));
474
				chooser.addChoosableFileFilter(new ExtendedFileFilter(extList[i]));
473 475

  
474 476
			int returnVal = chooser.showOpenDialog(controlPanel);
475 477

  
476 478
			if (returnVal == JFileChooser.APPROVE_OPTION) {
477
				this.fName = chooser.getSelectedFile().toString();
478
				String ext = ((WriterFilter) chooser.getFileFilter()).getDescription();
479
				ExtendedFileFilter fileFilter = ((ExtendedFileFilter) chooser.getFileFilter());
479 480

  
480
				// FileFilter filter = chooser.getFileFilter();
481
				ext = ext.toLowerCase().substring(ext.lastIndexOf(".") + 1, ext.length());
481
				fName = fileFilter.getNormalizedFilename(new File(fName));
482
				String ext = RasterUtilities.getExtensionFromFileName(fName);
482 483

  
483
				if ((fName != null) && !fName.equals("")) {
484
					if (!fName.endsWith("." + ext))
485
						fName = fName + "." + ext;
484
				controlPanel.getBProperties().setText(
485
						PluginServices.getText(this, "props") + " " + GeoRasterWriter.getDriverType(ext));
486 486

  
487
					controlPanel.getBProperties().setText(
488
							PluginServices.getText(this, "props") + " " + GeoRasterWriter.getDriverType(ext));
489
				}
490 487
				controlPanel.getBProperties().setEnabled(true);
491 488
				controlPanel.getLFileName().setText(
492 489
						fName.substring(fName.lastIndexOf(File.separator) + 1, fName.length()));
......
511 508

  
512 509
	/**
513 510
	 * Devuelve el nombre del fichero seleccionado
514
	 * 
511
	 *
515 512
	 * @return Nombre del fichero seleccionado
516 513
	 */
517 514
	public String getFileName() {
......
603 600

  
604 601
	/**
605 602
	 * Obtiene la altura en pixels de la imagen de salida
606
	 * 
603
	 *
607 604
	 * @return entero con la altura en pixels
608 605
	 */
609 606
	public double getHeightInPixels() {
......
612 609

  
613 610
	/**
614 611
	 * Obtiene la anchura en pixels de la imagen de salida
615
	 * 
612
	 *
616 613
	 * @return entero con la anchura en pixels
617 614
	 */
618 615
	public double getWidthInPixels() {
619 616
		return widthInPixels;
620 617
	}
621
	
618

  
622 619
	/**
623 620
	 * Asigna el valor de ancho en pixels
624
	 * @param value double 
621
	 * @param value double
625 622
	 */
626 623
	public void setWidthInPixels(double value) {
627 624
		this.widthInPixels = value;
628 625
	}
629
	
626

  
630 627
	/**
631 628
	 * Asigna el valor de alto en pixels
632
	 * @param value double 
629
	 * @param value double
633 630
	 */
634 631
	public void setHeightInPixels(double value) {
635 632
		this.heightInPixels = value;
......
642 639
			enableButtons();
643 640
		}
644 641
	}
645
}
646

  
647
/**
648
 * Filtro para el selector de formatos de escritura
649
 * 
650
 * @author Nacho Brodin (nachobrodin@gmail.com)
651
 */
652
class WriterFilter extends javax.swing.filechooser.FileFilter {
653
	private String filter;
654

  
655
	public WriterFilter(String fil) {
656
		this.filter = fil;
657
	}
658

  
659
	public boolean accept(File f) {
660
		return f.isDirectory() || f.getName().toLowerCase().endsWith("." + filter);
661
	}
662

  
663
	public String getDescription() {
664
		return "." + filter;
665
	}
666 642
}
trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/saveas/SaveAsTocMenuEntry.java
21 21
import java.awt.Component;
22 22
import java.beans.PropertyChangeEvent;
23 23
import java.beans.PropertyChangeListener;
24
import java.io.File;
25 24
import java.util.ArrayList;
26 25

  
27 26
import javax.swing.JFileChooser;
......
41 40
import org.gvsig.raster.hierarchy.IRasterDataset;
42 41
import org.gvsig.raster.hierarchy.IRasterGeoOperations;
43 42
import org.gvsig.raster.hierarchy.IRasterOperations;
43
import org.gvsig.raster.util.ExtendedFileFilter;
44 44
import org.gvsig.raster.util.RasterToolsUtil;
45 45
import org.gvsig.rastertools.clipping.ClippingProcess;
46 46
import org.gvsig.rastertools.clipping.WriterBufferServer;
......
114 114
	 * @see com.iver.cit.gvsig.project.documents.view.toc.AbstractTocContextMenuAction#isEnabled(com.iver.cit.gvsig.project.documents.view.toc.ITocItem, com.iver.cit.gvsig.fmap.layers.FLayer[])
115 115
	 */
116 116
	public boolean isEnabled(ITocItem item, FLayer[] selectedItems) {
117
		if(getNodeLayer(item) instanceof ILayerState) 
118
			if(!((ILayerState)getNodeLayer(item)).isOpen()) 
117
		if(getNodeLayer(item) instanceof ILayerState)
118
			if(!((ILayerState)getNodeLayer(item)).isOpen())
119 119
				return false;
120 120
		return selectedItems.length == 1;
121 121
	}
......
128 128
		if (isTocItemBranch(item)) {
129 129
			if(selectedItems == null || selectedItems.length != 1)
130 130
				return false;
131
			return( getNodeLayer(item) instanceof FLyrRasterSE && 
132
				    ((FLyrRasterSE)getNodeLayer(item)).isActionEnabled(IRasterLayerActions.SAVEAS));
131
			return( getNodeLayer(item) instanceof FLyrRasterSE &&
132
						((FLyrRasterSE)getNodeLayer(item)).isActionEnabled(IRasterLayerActions.SAVEAS));
133 133
		}
134 134
		return false;
135 135
	}
......
163 163
			return;
164 164
		}
165 165
		for (int i = 0; i < extList.size(); i++)
166
			chooser.addChoosableFileFilter(new WriterFilter((String) extList.get(i)));
166
			chooser.addChoosableFileFilter(new ExtendedFileFilter((String) extList.get(i)));
167 167

  
168 168
		// Cargamos el panel de propiedades en el selector
169 169
		panelProperty = loadPanelProperties((String) extList.get(extList.size() - 1));
170 170
		chooser.setAccessory(panelProperty);
171
		chooser.setAcceptAllFileFilterUsed(false);
171 172

  
172 173
		if (w instanceof View) {
173
			if (chooser.showOpenDialog(((View) w).getComponent(0)) == JFileChooser.APPROVE_OPTION) {
174
			if (chooser.showSaveDialog(((View) w).getComponent(0)) == JFileChooser.APPROVE_OPTION) {
174 175
				// Creaci?n de par?metros
175 176
				String tit = PluginServices.getMDIManager().getWindowInfo(w).getTitle();
176 177
				WriterBufferServer dataWriter = new WriterBufferServer();
......
180 181
				for (int i = 0; i < ((IRasterOperations) fLayer).getBandCount(); i++)
181 182
					drawableBands[i] = i;
182 183
				FileOpenWizard.setLastPath(chooser.getCurrentDirectory().toString());
183
				String file = chooser.getSelectedFile().toString() + chooser.getFileFilter().getDescription();
184
				String file =  ((ExtendedFileFilter) chooser.getFileFilter()).getNormalizedFilename(chooser.getSelectedFile());
184 185
				if (!RasterToolsUtil.canWrite(chooser.getCurrentDirectory().toString(), this))
185 186
					return;
186 187
				Params params = null;
......
201 202
				clippingProcess.setInterpolationMethod(BufferInterpolation.INTERPOLATION_NearestNeighbour);
202 203
				clippingProcess.setAffineTransform(dataset.getAffineTransform());
203 204
				clippingProcess.setActions(new SaveAsActions());
204
				
205

  
205 206
				if (params != null)
206 207
					RasterToolsUtil.loadWriterParamsFromPropertiesPanel(panelProperty, params);
207 208
				clippingProcess.setParams(params);
......
220 221
	 * sustituye el panel properties por el del nuevo driver seleccionado
221 222
	 */
222 223
	public void propertyChange(PropertyChangeEvent evt) {
223
		if(evt.getNewValue() instanceof WriterFilter) {
224
			String ext = ((WriterFilter)evt.getNewValue()).getDescription();
224
		if (evt.getNewValue() instanceof ExtendedFileFilter) {
225
			String ext = ((ExtendedFileFilter) evt.getNewValue()).getExtensions().get(0).toString();
225 226
			panelProperty = loadPanelProperties(ext);
226 227
			chooser.setAccessory(panelProperty);
227 228
			chooser.revalidate();
......
249 250
		RasterToolsUtil.loadPropertiesFromWriterParams(panelProperty, params, null);
250 251
		return panelProperty;
251 252
	}
252

  
253
	/**
254
	 * @author Nacho Brodin (nachobrodin@gmail.com) Filtro para el selector de
255
	 *         formatos de escritura
256
	 */
257
	class WriterFilter extends javax.swing.filechooser.FileFilter {
258
			private String filter;
259

  
260
			public WriterFilter(String fil) {
261
					this.filter = fil;
262
			}
263

  
264
			public boolean accept(File f) {
265
					return f.isDirectory() || f.getName().toLowerCase().endsWith("." + filter);
266
			}
267

  
268
			public String getDescription() {
269
					return "." + filter;
270
			}
271
	}
272

  
273 253
}
trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/filter/FilterListener.java
57 57
import org.gvsig.raster.grid.filter.RasterFilterListManager;
58 58
import org.gvsig.raster.grid.filter.RegistrableFilterListener;
59 59
import org.gvsig.raster.hierarchy.IRasterRendering;
60
import org.gvsig.raster.util.ExtendedFileFilter;
60 61
import org.gvsig.raster.util.RasterNotLoadException;
61 62
import org.gvsig.raster.util.RasterToolsUtil;
62 63
import org.gvsig.rastertools.RasterModule;
......
293 294
			//A?adimos las extensiones que hayan sido registradas en el driver
294 295
			String[] extList = GeoRasterWriter.getDriversExtensions();
295 296
			for(int i=0;i<extList.length;i++)
296
				chooser.addChoosableFileFilter(new WriterFilter(extList[i]));
297
				chooser.addChoosableFileFilter(new ExtendedFileFilter(extList[i]));
297 298

  
298 299
			if (chooser.showOpenDialog(getFilterPanel()) != JFileChooser.APPROVE_OPTION)
299 300
				return null;
300 301

  
301
			String fName = chooser.getSelectedFile().toString();
302
			String ext = ((WriterFilter)chooser.getFileFilter()).getDescription();
303

  
304
			ext = ext.toLowerCase().substring(ext.lastIndexOf(".") + 1, ext.length());
305

  
306
			if ((fName != null) && !fName.equals(""))
307
				if (!fName.endsWith("." + ext))
308
					fName = fName + "." + ext;
309

  
310 302
			FileOpenWizard.setLastPath(chooser.getSelectedFile().getPath().substring(0, chooser.getSelectedFile().getPath().lastIndexOf(File.separator)));
311
			path = fName;
303

  
304
			ExtendedFileFilter fileFilter = (ExtendedFileFilter) chooser.getFileFilter();
305
			path = fileFilter.getNormalizedFilename(chooser.getSelectedFile());
312 306
		} else {
313 307
			path = Utilities.createTempDirectory() + File.separator + getFilterPanel().getFilenameTextField().getText() + ".tif";
314 308
			filterPanel.setNewLayerText();
......
535 529
	public void actionValuesCompleted(EventObject e) {
536 530
		actionChangeProperties(e);
537 531
	}
538
}
539

  
540
/**
541
 * @author Nacho Brodin <brodin_ign@gva.es>
542
 * Filtro para el selector de formatos de escritura
543
 */
544
class WriterFilter extends javax.swing.filechooser.FileFilter {
545
	private String				filter;
546

  
547
	public WriterFilter(String fil) {
548
		this.filter = fil;
549
	}
550

  
551
	public boolean accept(File f) {
552
		return f.isDirectory() || f.getName().toLowerCase().endsWith("." + filter);
553
	}
554

  
555
	public String getDescription() {
556
		return "." + filter;
557
	}
558 532
}
trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/properties/control/BandSetupListener.java
25 25

  
26 26
import javax.swing.JFileChooser;
27 27
import javax.swing.JOptionPane;
28
import javax.swing.filechooser.FileFilter;
29 28

  
30
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
31 29
import org.gvsig.raster.dataset.IRasterDataSource;
32 30
import org.gvsig.raster.dataset.NotSupportedExtensionException;
33 31
import org.gvsig.raster.dataset.RasterDataset;
34 32
import org.gvsig.raster.dataset.RasterDriverException;
35 33
import org.gvsig.raster.datastruct.Extent;
34
import org.gvsig.raster.gui.wizards.DriverFileFilter;
36 35
import org.gvsig.raster.hierarchy.IRasterDataset;
37 36
import org.gvsig.raster.hierarchy.IRasterProperties;
38 37
import org.gvsig.raster.hierarchy.IRasterRendering;
39 38
import org.gvsig.raster.util.RasterToolsUtil;
40 39
import org.gvsig.rastertools.properties.panels.BandSetupPanel;
41 40

  
42
import com.hardcode.driverManager.DriverLoadException;
43 41
import com.iver.andami.PluginServices;
44 42
import com.iver.andami.messages.NotificationManager;
45 43
import com.iver.cit.gvsig.addlayer.fileopen.FileOpenWizard;
......
71 69
	protected RasterDataset[] grd            = null;
72 70

  
73 71
	/**
74
	 * Filtro para la selecci?n de ficheros raster
75
	 * @author Nacho Brodin (nachobrodin@gmail.com)
76
	 */
77
	public class DriverFileFilter extends FileFilter {
78

  
79
		//private String driverName = null;
80

  
81
		public DriverFileFilter(String driverName) throws DriverLoadException {
82
			//this.driverName = driverName;
83
		}
84

  
85
		/**
86
		 * @see javax.swing.filechooser.FileFilter#accept(java.io.File)
87
		 */
88
		public boolean accept(File f) {
89
			if (f.isDirectory())
90
				return true;
91
			if (fLayer instanceof FLyrRasterSE)
92
				return FLyrRasterSE.isFileAccepted(f);
93
			else
94
				throw new RuntimeException("Tipo no reconocido");
95
		}
96

  
97
		/**
98
		 * @see javax.swing.filechooser.FileFilter#getDescription()
99
		 */
100
		public String getDescription() {
101
			return (String)dataset.getInfo("DriverName");
102
		}
103
	}
104

  
105
	/**
106 72
	 * Constructor
107 73
	 * @param bs Panel del selector de bandas
108 74
	 * @param lyr Capa raster
......
181 147
		fileChooser.setMultiSelectionEnabled(true);
182 148
		fileChooser.setAcceptAllFileFilterUsed(false);
183 149

  
184
		try {
185
			FileFilter auxF = new DriverFileFilter((String) dataset.getInfo("DriverName"));
186
			fileChooser.addChoosableFileFilter(auxF);
187
		} catch (DriverLoadException e1) {
188
			NotificationManager.addError("No se pudo acceder a los drivers", e1);
189
		}
150
		fileChooser.addChoosableFileFilter(new DriverFileFilter());
190 151

  
191 152
		int result = fileChooser.showOpenDialog(bandSetupPanel);
192 153

  
trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/geolocation/listener/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