svn-gvsig-desktop / trunk / extensions / extRasterTools-SE / src / org / gvsig / rastertools / filter / FilterListener.java @ 19285
History | View | Annotate | Download (17.4 KB)
1 | 11750 | bsanchez | /* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
|
---|---|---|---|
2 | *
|
||
3 | * Copyright (C) 2006 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 | 11572 | bsanchez | package org.gvsig.rastertools.filter; |
20 | |||
21 | import java.awt.event.ActionEvent; |
||
22 | import java.awt.event.ActionListener; |
||
23 | 11831 | bsanchez | import java.io.File; |
24 | 11715 | bsanchez | import java.util.ArrayList; |
25 | import java.util.EventObject; |
||
26 | 11750 | bsanchez | import java.util.Hashtable; |
27 | 11572 | bsanchez | |
28 | 11831 | bsanchez | import javax.swing.JFileChooser; |
29 | 11750 | bsanchez | import javax.swing.ListModel; |
30 | |||
31 | 12425 | nacho | import org.gvsig.fmap.raster.layers.FLyrRasterSE; |
32 | 11750 | bsanchez | import org.gvsig.gui.beans.propertiespanel.PropertiesComponent; |
33 | 11715 | bsanchez | import org.gvsig.gui.beans.propertiespanel.PropertiesComponentListener; |
34 | 11750 | bsanchez | import org.gvsig.gui.beans.propertiespanel.PropertyStruct; |
35 | 11654 | bsanchez | import org.gvsig.gui.beans.treelist.event.TreeListChangeEvent; |
36 | import org.gvsig.gui.beans.treelist.event.TreeListEvent; |
||
37 | import org.gvsig.gui.beans.treelist.listeners.TreeListChangeListener; |
||
38 | import org.gvsig.gui.beans.treelist.listeners.TreeListComponentListener; |
||
39 | 18538 | nbrodin | import org.gvsig.raster.IProcessActions; |
40 | 18962 | nbrodin | import org.gvsig.raster.RasterLibrary; |
41 | 11972 | bsanchez | import org.gvsig.raster.dataset.GeoRasterWriter; |
42 | 13328 | nacho | import org.gvsig.raster.dataset.IRasterDataSource; |
43 | 11750 | bsanchez | import org.gvsig.raster.dataset.Params; |
44 | import org.gvsig.raster.dataset.Params.Param; |
||
45 | 17110 | nbrodin | import org.gvsig.raster.grid.filter.FilterTypeException; |
46 | 14247 | nbrodin | import org.gvsig.raster.grid.filter.FilterUIListener; |
47 | 11750 | bsanchez | import org.gvsig.raster.grid.filter.IRasterFilterListManager; |
48 | 12333 | bsanchez | import org.gvsig.raster.grid.filter.RasterFilter; |
49 | 11750 | bsanchez | import org.gvsig.raster.grid.filter.RasterFilterList; |
50 | import org.gvsig.raster.grid.filter.RasterFilterListManager; |
||
51 | 14247 | nbrodin | import org.gvsig.raster.grid.filter.RegistrableFilterListener; |
52 | 14439 | bsanchez | import org.gvsig.raster.hierarchy.IRasterRendering; |
53 | 16554 | bsanchez | import org.gvsig.raster.util.ExtendedFileFilter; |
54 | 14083 | nbrodin | import org.gvsig.raster.util.RasterNotLoadException; |
55 | import org.gvsig.raster.util.RasterToolsUtil; |
||
56 | 19285 | bsanchez | import org.gvsig.rastertools.filter.ui.FilterDialog; |
57 | 11572 | bsanchez | |
58 | 11831 | bsanchez | import com.iver.andami.PluginServices; |
59 | import com.iver.andami.Utilities; |
||
60 | 13975 | nacho | import com.iver.cit.gvsig.addlayer.fileopen.FileOpenWizard; |
61 | 11803 | bsanchez | /**
|
62 | * <code>FilterListener</code> es la clase donde se procesar? gran parte del
|
||
63 | * c?digo que controla el panel para el manejo de un layer en la aplicaci?n de
|
||
64 | * filtros.
|
||
65 | *
|
||
66 | * @version 24/05/2007
|
||
67 | 12369 | bsanchez | * @author BorSanZa - Borja S?nchez Zamorano (borja.sanchez@iver.es)
|
68 | 11803 | bsanchez | */
|
69 | 19285 | bsanchez | public class FilterListener implements ActionListener, TreeListComponentListener, TreeListChangeListener, PropertiesComponentListener, FilterUIListener, IProcessActions { |
70 | private FilterDialog filterDialog = null; |
||
71 | 14439 | bsanchez | private int actualParam = -1; |
72 | private ArrayList paramsList = new ArrayList(); |
||
73 | 16591 | nbrodin | /**
|
74 | * Cuando est? a false genera un TIFF de salida. Cuando est? a true un JPEG2000
|
||
75 | */
|
||
76 | private boolean compress = false; |
||
77 | 11831 | bsanchez | |
78 | 11750 | bsanchez | public class ParamStruct { |
79 | String filterName = null; |
||
80 | Params filterParam = null;
|
||
81 | Class filterClass = null; |
||
82 | 11572 | bsanchez | |
83 | 11715 | bsanchez | /**
|
84 | 11750 | bsanchez | * @return the filterName
|
85 | 11715 | bsanchez | */
|
86 | 11750 | bsanchez | public String getFilterName() { |
87 | return filterName;
|
||
88 | 11715 | bsanchez | } |
89 | |||
90 | /**
|
||
91 | 11750 | bsanchez | * @param filterName the filterName to set
|
92 | 11715 | bsanchez | */
|
93 | 11750 | bsanchez | public void setFilterName(String filterName) { |
94 | this.filterName = filterName;
|
||
95 | 11715 | bsanchez | } |
96 | |||
97 | /**
|
||
98 | 11750 | bsanchez | * @return the filterParam
|
99 | 11715 | bsanchez | */
|
100 | 11750 | bsanchez | public Params getFilterParam() {
|
101 | return filterParam;
|
||
102 | 11715 | bsanchez | } |
103 | |||
104 | /**
|
||
105 | 11750 | bsanchez | * @param filterParam the filterParam to set
|
106 | 11715 | bsanchez | */
|
107 | 11750 | bsanchez | public void setFilterParam(Params filterParam) { |
108 | this.filterParam = filterParam;
|
||
109 | 11715 | bsanchez | } |
110 | |||
111 | 11750 | bsanchez | /**
|
112 | * @return the filterClass
|
||
113 | */
|
||
114 | public Class getFilterClass() { |
||
115 | return filterClass;
|
||
116 | } |
||
117 | |||
118 | /**
|
||
119 | * @param filterClass the filterClass to set
|
||
120 | */
|
||
121 | public void setFilterClass(Class filterClass) { |
||
122 | this.filterClass = filterClass;
|
||
123 | } |
||
124 | 11897 | bsanchez | } |
125 | |||
126 | 11750 | bsanchez | /**
|
127 | * Construye un FilterListener especificando el FilterPanel asociado
|
||
128 | 19285 | bsanchez | * @param filterDialog
|
129 | 11750 | bsanchez | */
|
130 | 19285 | bsanchez | public FilterListener(FilterDialog filterDialog) {
|
131 | this.filterDialog = filterDialog;
|
||
132 | 11572 | bsanchez | } |
133 | |||
134 | 11750 | bsanchez | /**
|
135 | 16591 | nbrodin | * Asigna un valor para el par?metro que informa de si el raster de salida hay
|
136 | * que comprimirlo o no. Este valor es necesario cuando el raster de salida
|
||
137 | * es mayor de 4G ya que no se puede crear un tiff tan grande.
|
||
138 | * @param compress true para comprimir el raster de salida y false para no hacerlo.
|
||
139 | */
|
||
140 | public void setCompress(boolean compress) { |
||
141 | 19285 | bsanchez | this.compress = compress;
|
142 | 16591 | nbrodin | } |
143 | |||
144 | /**
|
||
145 | 11897 | bsanchez | * Asignamos los valores del PropertiesComponent al Params seleccionado
|
146 | */
|
||
147 | public void RefreshDataProperties() { |
||
148 | 16328 | bsanchez | if (actualParam == -1) |
149 | 14247 | nbrodin | return;
|
150 | 11897 | bsanchez | |
151 | 19285 | bsanchez | ArrayList listValues = getFilterDialog().getPropertiesComponent().getValues();
|
152 | 16328 | bsanchez | |
153 | 11750 | bsanchez | Params params = ((ParamStruct) paramsList.get(actualParam)).getFilterParam(); |
154 | 14247 | nbrodin | for (int j = 0; j < listValues.size(); j++) { |
155 | 11750 | bsanchez | PropertyStruct ps = (PropertyStruct) listValues.get(j); |
156 | 14247 | nbrodin | params.changeParamValue(ps.getKey(), ps.getNewValue()); |
157 | 11750 | bsanchez | } |
158 | 11572 | bsanchez | } |
159 | |||
160 | 11897 | bsanchez | /**
|
161 | * Obtener la posici?n del Param seleccionado en el ArrayList
|
||
162 | * @param filterName
|
||
163 | * @return
|
||
164 | */
|
||
165 | private int getParamSelected(String filterName) { |
||
166 | for (int i = 0; i < paramsList.size(); i++) { |
||
167 | 11750 | bsanchez | if (((ParamStruct) paramsList.get(i)).getFilterName().equals(filterName))
|
168 | return i;
|
||
169 | } |
||
170 | 11897 | bsanchez | return -1; |
171 | 11750 | bsanchez | } |
172 | 11572 | bsanchez | |
173 | 11897 | bsanchez | /**
|
174 | * Cambiar el panel de propiedades central por el nuevo panel, segun el filtro
|
||
175 | * seleccionado que se pasa por par?metro.
|
||
176 | * @param filter
|
||
177 | */
|
||
178 | 11750 | bsanchez | public void changePanel(String filter) { |
179 | int posParam = getParamSelected(filter);
|
||
180 | 11572 | bsanchez | |
181 | 11750 | bsanchez | RefreshDataProperties(); |
182 | actualParam = posParam; |
||
183 | 11897 | bsanchez | |
184 | 11750 | bsanchez | PropertiesComponent propertiesComponent = new PropertiesComponent();
|
185 | 11897 | bsanchez | |
186 | 11750 | bsanchez | if (posParam != -1) { |
187 | Params params = ((ParamStruct) paramsList.get(actualParam)).getFilterParam(); |
||
188 | if (params != null) { |
||
189 | 14247 | nbrodin | Param paramPanel = params.getParamById("Panel");
|
190 | if(paramPanel != null && paramPanel.defaultValue instanceof RegistrableFilterListener) |
||
191 | ((RegistrableFilterListener)paramPanel.defaultValue).addFilterUIListener(this);
|
||
192 | RasterToolsUtil.loadPropertiesFromWriterParams(propertiesComponent, params, new String[]{"FilterName"}); |
||
193 | 11654 | bsanchez | } |
194 | 11572 | bsanchez | } |
195 | 19285 | bsanchez | getFilterDialog().setNewPropertiesComponent(propertiesComponent, filter); |
196 | 11572 | bsanchez | } |
197 | 11803 | bsanchez | |
198 | /**
|
||
199 | * A?adir un nuevo Params a la lista de Params que podemos manejar. Un Params
|
||
200 | * equivale a un filtro cargado. El hecho de trabajar con Params y no con
|
||
201 | * filtros, simplifica totalmente el panel. Sin tener que depender de los
|
||
202 | * filtros nada m?s que para el momento de dibujado o guardado.
|
||
203 | * @param name
|
||
204 | * @param params
|
||
205 | * @param classFilter
|
||
206 | */
|
||
207 | 11750 | bsanchez | public void addNewParam(String name, Params params, Class classFilter) { |
208 | ParamStruct param = new ParamStruct();
|
||
209 | param.setFilterName(name); |
||
210 | param.setFilterParam(params); |
||
211 | param.setFilterClass(classFilter); |
||
212 | paramsList.add(param); |
||
213 | } |
||
214 | 11654 | bsanchez | |
215 | 11750 | bsanchez | /*
|
216 | 11754 | bsanchez | * (non-Javadoc)
|
217 | * @see org.gvsig.gui.beans.propertiespanel.PropertiesComponentListener#actionChangeProperties(java.util.EventObject)
|
||
218 | */
|
||
219 | public void actionChangeProperties(EventObject e) { |
||
220 | RefreshDataProperties(); |
||
221 | 19285 | bsanchez | getFilterDialog().refreshPreview(); |
222 | 11754 | bsanchez | } |
223 | 11750 | bsanchez | |
224 | 11754 | bsanchez | /*
|
225 | * (non-Javadoc)
|
||
226 | * @see org.gvsig.gui.beans.treelist.listeners.TreeListChangeListener#actionChangeSelection(org.gvsig.gui.beans.treelist.event.TreeListChangeEvent)
|
||
227 | */
|
||
228 | public void actionChangeSelection(TreeListChangeEvent e) { |
||
229 | changePanel(e.getItem()); |
||
230 | } |
||
231 | 11654 | bsanchez | |
232 | 11754 | bsanchez | /*
|
233 | * (non-Javadoc)
|
||
234 | * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
|
||
235 | */
|
||
236 | public void actionPerformed(ActionEvent e) { |
||
237 | 19285 | bsanchez | getFilterDialog().refreshPreview(); |
238 | 11754 | bsanchez | } |
239 | 11654 | bsanchez | |
240 | 11754 | bsanchez | /*
|
241 | * (non-Javadoc)
|
||
242 | * @see org.gvsig.gui.beans.treelist.listeners.TreeListComponentListener#elementAdded(org.gvsig.gui.beans.treelist.event.TreeListEvent)
|
||
243 | */
|
||
244 | public void elementAdded(TreeListEvent e) { |
||
245 | 19285 | bsanchez | getFilterDialog().refreshPreview(); |
246 | 11754 | bsanchez | } |
247 | 11654 | bsanchez | |
248 | 11754 | bsanchez | /*
|
249 | * (non-Javadoc)
|
||
250 | * @see org.gvsig.gui.beans.treelist.listeners.TreeListComponentListener#elementMoved(org.gvsig.gui.beans.treelist.event.TreeListEvent)
|
||
251 | */
|
||
252 | public void elementMoved(TreeListEvent e) { |
||
253 | 19285 | bsanchez | getFilterDialog().refreshPreview(); |
254 | 11754 | bsanchez | } |
255 | 11715 | bsanchez | |
256 | 11754 | bsanchez | /*
|
257 | * (non-Javadoc)
|
||
258 | * @see org.gvsig.gui.beans.treelist.listeners.TreeListComponentListener#elementRemoved(org.gvsig.gui.beans.treelist.event.TreeListEvent)
|
||
259 | */
|
||
260 | public void elementRemoved(TreeListEvent e) { |
||
261 | 19285 | bsanchez | getFilterDialog().refreshPreview(); |
262 | 11754 | bsanchez | } |
263 | 11784 | bsanchez | |
264 | /**
|
||
265 | * @return the paramsList
|
||
266 | */
|
||
267 | public ArrayList getParamsList() { |
||
268 | return paramsList;
|
||
269 | } |
||
270 | 11897 | bsanchez | |
271 | /**
|
||
272 | * Devuelve la ruta del fichero donde se va a guardar, en caso de guardarse
|
||
273 | * en memoria, calcula el nombre sin preguntar y devuelve la ruta.
|
||
274 | * @return
|
||
275 | */
|
||
276 | public String getFileSelected() { |
||
277 | 11831 | bsanchez | String path = ""; |
278 | 19285 | bsanchez | if (getFilterDialog().getRadioFileGenerate().isSelected()) {
|
279 | 13975 | nacho | JFileChooser chooser = new JFileChooser(FileOpenWizard.getLastPath()); |
280 | 11897 | bsanchez | chooser.setDialogTitle(PluginServices.getText(this, "seleccionar_fichero")); |
281 | |||
282 | //A?adimos las extensiones que hayan sido registradas en el driver
|
||
283 | String[] extList = GeoRasterWriter.getDriversExtensions(); |
||
284 | for(int i=0;i<extList.length;i++) |
||
285 | 16554 | bsanchez | chooser.addChoosableFileFilter(new ExtendedFileFilter(extList[i]));
|
286 | 11897 | bsanchez | |
287 | 19285 | bsanchez | if (chooser.showOpenDialog(getFilterDialog()) != JFileChooser.APPROVE_OPTION) |
288 | 11897 | bsanchez | return null; |
289 | |||
290 | 13975 | nacho | FileOpenWizard.setLastPath(chooser.getSelectedFile().getPath().substring(0, chooser.getSelectedFile().getPath().lastIndexOf(File.separator))); |
291 | 16554 | bsanchez | |
292 | ExtendedFileFilter fileFilter = (ExtendedFileFilter) chooser.getFileFilter(); |
||
293 | path = fileFilter.getNormalizedFilename(chooser.getSelectedFile()); |
||
294 | 11831 | bsanchez | } else {
|
295 | 17804 | nbrodin | |
296 | 19285 | bsanchez | String file = getFilterDialog().getMainPanel().getFilenameTextField().getText();
|
297 | 18962 | nbrodin | if(file.compareTo(RasterLibrary.getOnlyLayerName()) == 0) |
298 | RasterLibrary.usesOnlyLayerName(); |
||
299 | 17804 | nbrodin | |
300 | 16591 | nbrodin | if(!compress)
|
301 | 17804 | nbrodin | path = Utilities.createTempDirectory() + File.separator + file + ".tif"; |
302 | 16591 | nbrodin | else
|
303 | 17804 | nbrodin | path = Utilities.createTempDirectory() + File.separator + file + ".jp2"; |
304 | 19285 | bsanchez | filterDialog.updateNewLayerText(); |
305 | 11831 | bsanchez | } |
306 | 11897 | bsanchez | return path;
|
307 | } |
||
308 | |||
309 | 11912 | bsanchez | /**
|
310 | 12333 | bsanchez | * Aqui se seleccionan que filtros se van a aplicar y se devuelven en forma
|
311 | * de ArrayList tanto para el dibujado como cuando aceptan o aplican el panel.
|
||
312 | * @param rendering
|
||
313 | * @return
|
||
314 | 11912 | bsanchez | */
|
315 | 14439 | bsanchez | public ArrayList applyFilters(IRasterRendering rendering) { |
316 | 12333 | bsanchez | ArrayList listFilterUsed = new ArrayList(); |
317 | 11831 | bsanchez | |
318 | 12333 | bsanchez | RasterFilterList filterList = new RasterFilterList();
|
319 | 15778 | nbrodin | filterList.setEnv(rendering.getRenderFilterList().getEnv()); |
320 | 12333 | bsanchez | RasterFilterListManager stackManager = new RasterFilterListManager(filterList);
|
321 | 11897 | bsanchez | |
322 | 12333 | bsanchez | // Conservamos filtros no visibles ya existentes
|
323 | 19285 | bsanchez | ArrayList filtersInit = getFilterDialog().getFilterStatus();
|
324 | 12333 | bsanchez | for (int i = 0; i < filtersInit.size(); i++) { |
325 | // Si es visible no hacemos nada
|
||
326 | if (((RasterFilter) filtersInit.get(i)).isVisible())
|
||
327 | continue;
|
||
328 | 11897 | bsanchez | |
329 | 12333 | bsanchez | RasterFilter obj = null;
|
330 | for (int j = 0; j < stackManager.getRasterFilterList().size(); j++) { |
||
331 | Class classFilter = (Class) stackManager.getRasterFilterList().get(j); |
||
332 | try {
|
||
333 | obj = (RasterFilter) classFilter.newInstance(); |
||
334 | if (obj.getName().equals(((RasterFilter) filtersInit.get(i)).getName()))
|
||
335 | break;
|
||
336 | } catch (InstantiationException e) { |
||
337 | 14527 | nbrodin | RasterToolsUtil.messageBoxError("error_creando_filtro", this, e); |
338 | 12333 | bsanchez | } catch (IllegalAccessException e) { |
339 | 14527 | nbrodin | RasterToolsUtil.messageBoxError("error_creando_filtro", this, e); |
340 | 12333 | bsanchez | } |
341 | } |
||
342 | 11815 | bsanchez | |
343 | 12333 | bsanchez | // Si no encontramos el filtro apropiado, nos olvidamos de el
|
344 | if (obj == null) |
||
345 | continue;
|
||
346 | |||
347 | // Si no es visible tenemos que conservar el filtro
|
||
348 | try {
|
||
349 | Params params = (Params) ((RasterFilter) filtersInit.get(i)).getUIParams(((RasterFilter) filtersInit.get(i)).getName()).clone(); |
||
350 | // A?ado el parametro RenderBands a los parametros del filtro
|
||
351 | String rgb = rendering.getRenderBands()[0] + " " + rendering.getRenderBands()[1] + " " + rendering.getRenderBands()[2]; |
||
352 | params.setParam("RenderBands", rgb, 0, null); |
||
353 | |||
354 | ParamStruct newParam = new ParamStruct();
|
||
355 | newParam.setFilterClass(obj.getClass()); |
||
356 | newParam.setFilterName(((RasterFilter) filtersInit.get(i)).getName()); |
||
357 | newParam.setFilterParam(params); |
||
358 | listFilterUsed.add(newParam); |
||
359 | } catch (CloneNotSupportedException e) { |
||
360 | } |
||
361 | } |
||
362 | |||
363 | // Metemos los filtros seleccionados en el panel
|
||
364 | 19285 | bsanchez | ListModel list = getFilterDialog().getMainPanel().getTreeListContainer().getListModel();
|
365 | 11856 | bsanchez | for (int i = 0; i < list.getSize(); i++) { |
366 | 19285 | bsanchez | Hashtable hastTable = getFilterDialog().getMainPanel().getTreeListContainer().getMap();
|
367 | 11856 | bsanchez | for (int j = 0; j < paramsList.size(); j++) { |
368 | boolean active = true; |
||
369 | 17976 | bsanchez | Param param = ((ParamStruct) paramsList.get(j)).getFilterParam().getParamById("enabled");
|
370 | 16328 | bsanchez | if ((param != null) && |
371 | param.defaultValue instanceof Boolean && |
||
372 | 14247 | nbrodin | ((((Boolean)param.defaultValue).booleanValue()) == false)) |
373 | 11856 | bsanchez | active = false;
|
374 | 11897 | bsanchez | if (active) {
|
375 | 11856 | bsanchez | if (((ParamStruct) paramsList.get(j)).getFilterName().equals(hastTable.get(list.getElementAt(i)))) {
|
376 | 11897 | bsanchez | try {
|
377 | Params params = (Params) ((ParamStruct) paramsList.get(j)).getFilterParam().clone(); |
||
378 | // A?ado el parametro RenderBands a los parametros del filtro
|
||
379 | String rgb = rendering.getRenderBands()[0] + " " + rendering.getRenderBands()[1] + " " + rendering.getRenderBands()[2]; |
||
380 | params.setParam("RenderBands", rgb, 0, null); |
||
381 | |||
382 | ParamStruct newParam = new ParamStruct();
|
||
383 | newParam.setFilterClass(((ParamStruct) paramsList.get(j)).getFilterClass()); |
||
384 | newParam.setFilterName(((ParamStruct) paramsList.get(j)).getFilterName()); |
||
385 | newParam.setFilterParam(params); |
||
386 | listFilterUsed.add(newParam); |
||
387 | } catch (CloneNotSupportedException e) { |
||
388 | } |
||
389 | 11856 | bsanchez | } |
390 | } |
||
391 | } |
||
392 | } |
||
393 | 12333 | bsanchez | return listFilterUsed;
|
394 | } |
||
395 | 11864 | bsanchez | |
396 | 12333 | bsanchez | /*
|
397 | * (non-Javadoc)
|
||
398 | * @see org.gvsig.gui.beans.imagenavigator.IClientImageNavigator#drawImage(java.awt.Graphics2D, double, double, double, double, double, int, int)
|
||
399 | */
|
||
400 | 19285 | bsanchez | public void drawImage(IRasterRendering rendering) { |
401 | rendering.setRenderBands(((FLyrRasterSE) getFilterDialog().getLayer()).getRenderBands()); |
||
402 | 14439 | bsanchez | rendering.getRenderFilterList().clear(); |
403 | 12333 | bsanchez | |
404 | 19285 | bsanchez | if (getFilterDialog().getCBShowFilters().isSelected()) {
|
405 | 14439 | bsanchez | RasterFilterList filterList = rendering.getRenderFilterList(); |
406 | 12333 | bsanchez | RasterFilterListManager stackManager = new RasterFilterListManager(filterList);
|
407 | |||
408 | ArrayList listFilterUsed = applyFilters(rendering);
|
||
409 | 17110 | nbrodin | ArrayList exc = new ArrayList(); |
410 | 12333 | bsanchez | for (int i = 0; i < listFilterUsed.size(); i++) { |
411 | IRasterFilterListManager filterManager = stackManager.getManagerByFilterClass(((ParamStruct) listFilterUsed.get(i)).getFilterClass()); |
||
412 | 17110 | nbrodin | try {
|
413 | filterManager.addFilter(((ParamStruct) listFilterUsed.get(i)).getFilterClass(), ((ParamStruct) listFilterUsed.get(i)).getFilterParam()); |
||
414 | } catch (FilterTypeException e) {
|
||
415 | exc.add(e); |
||
416 | } |
||
417 | 12333 | bsanchez | } |
418 | 17110 | nbrodin | if(exc.size() != 0) { |
419 | RasterToolsUtil.messageBoxError(PluginServices.getText(this, "error_adding_filters"), this, exc); |
||
420 | exc.clear(); |
||
421 | } |
||
422 | 12333 | bsanchez | } |
423 | } |
||
424 | |||
425 | /**
|
||
426 | * Que acciones se ejecutaran al haber presionado el bot?n aceptar o aplicar
|
||
427 | */
|
||
428 | public void accept() { |
||
429 | 19285 | bsanchez | IRasterDataSource raster = ((FLyrRasterSE) getFilterDialog().getLayer()).getDataSource(); |
430 | 13328 | nacho | if (raster == null) |
431 | 12333 | bsanchez | return;
|
432 | |||
433 | String path = null; |
||
434 | 19285 | bsanchez | if (!getFilterDialog().getRadioOnlyView().isSelected()) {
|
435 | 12333 | bsanchez | path = getFileSelected(); |
436 | if (path == null) |
||
437 | return;
|
||
438 | } |
||
439 | |||
440 | 16591 | nbrodin | //Rendering rendering = ((FLyrRasterSE) getFilterPanel().getLayer()).getRender();
|
441 | 19285 | bsanchez | IRasterRendering rendering = (IRasterRendering) getFilterDialog().getLayer(); |
442 | 12333 | bsanchez | |
443 | // Array para guardar los filtros que se van a usar en forma de ParamStruct
|
||
444 | ArrayList listFilterUsed = applyFilters(rendering);
|
||
445 | |||
446 | 19285 | bsanchez | if (filterDialog.getRadioOnlyView().isSelected()) {
|
447 | 17110 | nbrodin | try {
|
448 | FilterProcess.addSelectedFilters(rendering.getRenderFilterList(), listFilterUsed); |
||
449 | 19285 | bsanchez | ((FLyrRasterSE) getFilterDialog().getLayer()).setRenderFilterList(rendering.getRenderFilterList()); |
450 | getFilterDialog().getLayer().getMapContext().invalidate(); |
||
451 | 17110 | nbrodin | } catch (FilterTypeException e) {
|
452 | RasterToolsUtil.messageBoxError(PluginServices.getText(this, "error_adding_filters"), this, e); |
||
453 | } |
||
454 | 11897 | bsanchez | } else {
|
455 | 17718 | bsanchez | FilterProcess filterProcess = new FilterProcess();
|
456 | filterProcess.setActions(this);
|
||
457 | 18367 | bsanchez | filterProcess.addParam("rendering", rendering);
|
458 | 17718 | bsanchez | filterProcess.addParam("filename", path);
|
459 | filterProcess.addParam("rasterdatasource", raster);
|
||
460 | filterProcess.addParam("listfilterused", listFilterUsed);
|
||
461 | 11856 | bsanchez | filterProcess.start(); |
462 | } |
||
463 | 11815 | bsanchez | } |
464 | 11897 | bsanchez | |
465 | 11912 | bsanchez | /**
|
466 | * Devuelve el FilterPanel asociado al FilterListener
|
||
467 | * @return
|
||
468 | */
|
||
469 | 19285 | bsanchez | public FilterDialog getFilterDialog() {
|
470 | return filterDialog;
|
||
471 | 11856 | bsanchez | } |
472 | 11897 | bsanchez | |
473 | 11856 | bsanchez | /**
|
474 | * Acciones que se realizan al finalizar de crear los recortes de imagen.
|
||
475 | * Este m?todo es llamado por el thread TailRasterProcess al finalizar.
|
||
476 | */
|
||
477 | public void loadLayerInToc(String fileName) { |
||
478 | 19285 | bsanchez | if (!getFilterDialog().getRadioNewLayer().isSelected())
|
479 | 11856 | bsanchez | return;
|
480 | if(!new File(fileName).exists()) |
||
481 | return;
|
||
482 | try {
|
||
483 | 19285 | bsanchez | RasterToolsUtil.loadLayer(getFilterDialog().getViewName(), fileName, null);
|
484 | 14083 | nbrodin | } catch (RasterNotLoadException e) {
|
485 | RasterToolsUtil.messageBoxError("error_cargar_capa", this, e); |
||
486 | 11856 | bsanchez | } |
487 | 16328 | bsanchez | |
488 | 19285 | bsanchez | if(filterDialog != null) |
489 | filterDialog.updateNewLayerText(); |
||
490 | 11856 | bsanchez | } |
491 | 12514 | bsanchez | |
492 | 14247 | nbrodin | /*
|
493 | * (non-Javadoc)
|
||
494 | * @see org.gvsig.raster.grid.filter.FilterUIListener#actionValuesCompleted(java.util.EventObject)
|
||
495 | */
|
||
496 | public void actionValuesCompleted(EventObject e) { |
||
497 | actionChangeProperties(e); |
||
498 | } |
||
499 | 17718 | bsanchez | |
500 | /*
|
||
501 | * (non-Javadoc)
|
||
502 | * @see org.gvsig.rastertools.IProcessActions#end(java.lang.Object)
|
||
503 | */
|
||
504 | public void end(Object param) { |
||
505 | loadLayerInToc((String) param);
|
||
506 | } |
||
507 | |||
508 | public void interrupted() {} |
||
509 | 11572 | bsanchez | } |