Statistics
| Revision:

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
}