Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extRasterTools-SE / src / org / gvsig / rastertools / filter / FilterListener.java @ 18962

History | View | Annotate | Download (19.9 KB)

1
/* 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
package org.gvsig.rastertools.filter;
20

    
21
import java.awt.Dimension;
22
import java.awt.Graphics2D;
23
import java.awt.event.ActionEvent;
24
import java.awt.event.ActionListener;
25
import java.awt.geom.AffineTransform;
26
import java.awt.geom.Dimension2D;
27
import java.awt.geom.Point2D;
28
import java.io.File;
29
import java.util.ArrayList;
30
import java.util.EventObject;
31
import java.util.Hashtable;
32

    
33
import javax.swing.JFileChooser;
34
import javax.swing.ListModel;
35

    
36
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
37
import org.gvsig.gui.beans.imagenavigator.IClientImageNavigator;
38
import org.gvsig.gui.beans.propertiespanel.PropertiesComponent;
39
import org.gvsig.gui.beans.propertiespanel.PropertiesComponentListener;
40
import org.gvsig.gui.beans.propertiespanel.PropertyStruct;
41
import org.gvsig.gui.beans.treelist.event.TreeListChangeEvent;
42
import org.gvsig.gui.beans.treelist.event.TreeListEvent;
43
import org.gvsig.gui.beans.treelist.listeners.TreeListChangeListener;
44
import org.gvsig.gui.beans.treelist.listeners.TreeListComponentListener;
45
import org.gvsig.raster.IProcessActions;
46
import org.gvsig.raster.RasterLibrary;
47
import org.gvsig.raster.dataset.GeoRasterWriter;
48
import org.gvsig.raster.dataset.IRasterDataSource;
49
import org.gvsig.raster.dataset.InvalidSetViewException;
50
import org.gvsig.raster.dataset.Params;
51
import org.gvsig.raster.dataset.Params.Param;
52
import org.gvsig.raster.dataset.io.RasterDriverException;
53
import org.gvsig.raster.datastruct.Extent;
54
import org.gvsig.raster.datastruct.ViewPortData;
55
import org.gvsig.raster.grid.filter.FilterTypeException;
56
import org.gvsig.raster.grid.filter.FilterUIListener;
57
import org.gvsig.raster.grid.filter.IRasterFilterListManager;
58
import org.gvsig.raster.grid.filter.RasterFilter;
59
import org.gvsig.raster.grid.filter.RasterFilterList;
60
import org.gvsig.raster.grid.filter.RasterFilterListManager;
61
import org.gvsig.raster.grid.filter.RegistrableFilterListener;
62
import org.gvsig.raster.hierarchy.IRasterRendering;
63
import org.gvsig.raster.util.ExtendedFileFilter;
64
import org.gvsig.raster.util.RasterNotLoadException;
65
import org.gvsig.raster.util.RasterToolsUtil;
66
import org.gvsig.rastertools.filter.ui.FilterPanel;
67

    
68
import com.iver.andami.PluginServices;
69
import com.iver.andami.Utilities;
70
import com.iver.cit.gvsig.addlayer.fileopen.FileOpenWizard;
71
import com.iver.cit.gvsig.fmap.ViewPort;
72
import com.iver.cit.gvsig.fmap.layers.FLayer;
73
/**
74
 * <code>FilterListener</code> es la clase donde se procesar? gran parte del
75
 * c?digo que controla el panel para el manejo de un layer en la aplicaci?n de
76
 * filtros.
77
 *
78
 * @version 24/05/2007
79
 * @author BorSanZa - Borja S?nchez Zamorano (borja.sanchez@iver.es)
80
 */
81
public class FilterListener implements ActionListener, IClientImageNavigator, TreeListComponentListener, TreeListChangeListener, PropertiesComponentListener, FilterUIListener, IProcessActions {
82
        private FilterPanel  filterPanel  = null;
83
        private int          actualParam  = -1;
84
        private ArrayList    paramsList   = new ArrayList();
85
        private FLyrRasterSE previewLayer = null;
86
        /**
87
         * Cuando est? a false genera un TIFF de salida. Cuando est? a true un JPEG2000
88
         */
89
        private boolean      compress = false;
90

    
91
        public class ParamStruct {
92
                String filterName = null;
93
                Params filterParam = null;
94
                Class filterClass = null;
95

    
96
                /**
97
                 * @return the filterName
98
                 */
99
                public String getFilterName() {
100
                        return filterName;
101
                }
102

    
103
                /**
104
                 * @param filterName the filterName to set
105
                 */
106
                public void setFilterName(String filterName) {
107
                        this.filterName = filterName;
108
                }
109

    
110
                /**
111
                 * @return the filterParam
112
                 */
113
                public Params getFilterParam() {
114
                        return filterParam;
115
                }
116

    
117
                /**
118
                 * @param filterParam the filterParam to set
119
                 */
120
                public void setFilterParam(Params filterParam) {
121
                        this.filterParam = filterParam;
122
                }
123

    
124
                /**
125
                 * @return the filterClass
126
                 */
127
                public Class getFilterClass() {
128
                        return filterClass;
129
                }
130

    
131
                /**
132
                 * @param filterClass the filterClass to set
133
                 */
134
                public void setFilterClass(Class filterClass) {
135
                        this.filterClass = filterClass;
136
                }
137
        }
138

    
139
        /**
140
         * Construye un FilterListener especificando el FilterPanel asociado
141
         * @param fp
142
         */
143
        public FilterListener(FilterPanel fp) {
144
                filterPanel = fp;
145
        }
146

    
147
        /**
148
         * Asigna un valor para el par?metro que informa de si el raster de salida hay
149
         * que comprimirlo o no. Este valor es necesario cuando el raster de salida 
150
         * es mayor de 4G ya que no se puede crear un tiff tan grande.
151
         * @param compress true para comprimir el raster de salida y false para no hacerlo.
152
         */
153
        public void setCompress(boolean compress) {
154
                this.     compress = compress;
155
        }
156
        
157
        /**
158
         * Asigna la capa raster de la vista
159
         * @param fLayer
160
         */
161
        public void setLayer(FLayer fLayer) {
162
                if (fLayer instanceof FLyrRasterSE) {
163
                        try {
164
                                previewLayer = (FLyrRasterSE) fLayer.cloneLayer();
165
                        } catch (Exception e) {
166
                                RasterToolsUtil.messageBoxError("preview_not_available", filterPanel, e);
167
                        }
168
                }
169
        }
170

    
171
        /**
172
         * Asignamos los valores del PropertiesComponent al Params seleccionado
173
         */
174
        public void RefreshDataProperties() {
175
                if (actualParam == -1)
176
                        return;
177

    
178
                ArrayList listValues = getFilterPanel().getPropertiesComponent().getValues();
179

    
180
                Params params = ((ParamStruct) paramsList.get(actualParam)).getFilterParam();
181
                for (int j = 0; j < listValues.size(); j++) {
182
                        PropertyStruct ps = (PropertyStruct) listValues.get(j);
183
                        params.changeParamValue(ps.getKey(), ps.getNewValue());
184
                }
185
        }
186

    
187
        /**
188
         * Obtener la posici?n del Param seleccionado en el ArrayList
189
         * @param filterName
190
         * @return
191
         */
192
        private int getParamSelected(String filterName) {
193
                for (int i = 0; i < paramsList.size(); i++) {
194
                        if (((ParamStruct) paramsList.get(i)).getFilterName().equals(filterName))
195
                                return i;
196
                }
197
                return -1;
198
        }
199

    
200
        /**
201
         * Cambiar el panel de propiedades central por el nuevo panel, segun el filtro
202
         * seleccionado que se pasa por par?metro.
203
         * @param filter
204
         */
205
        public void changePanel(String filter) {
206
                int posParam = getParamSelected(filter);
207

    
208
                RefreshDataProperties();
209
                actualParam = posParam;
210

    
211
                PropertiesComponent propertiesComponent = new PropertiesComponent();
212

    
213
                if (posParam != -1) {
214
                        Params params = ((ParamStruct) paramsList.get(actualParam)).getFilterParam();
215
                        if (params != null) {
216
                                Param paramPanel = params.getParamById("Panel");
217
                                if(paramPanel != null && paramPanel.defaultValue instanceof RegistrableFilterListener)
218
                                        ((RegistrableFilterListener)paramPanel.defaultValue).addFilterUIListener(this);
219
                                RasterToolsUtil.loadPropertiesFromWriterParams(propertiesComponent, params, new String[]{"FilterName"});
220
                        }
221
                }
222
                getFilterPanel().setNewPropertiesComponent(propertiesComponent, filter);
223
        }
224

    
225
        /**
226
         * A?adir un nuevo Params a la lista de Params que podemos manejar. Un Params
227
         * equivale a un filtro cargado. El hecho de trabajar con Params y no con
228
         * filtros, simplifica totalmente el panel. Sin tener que depender de los
229
         * filtros nada m?s que para el momento de dibujado o guardado.
230
         * @param name
231
         * @param params
232
         * @param classFilter
233
         */
234
        public void addNewParam(String name, Params params, Class classFilter) {
235
                ParamStruct param = new ParamStruct();
236
                param.setFilterName(name);
237
                param.setFilterParam(params);
238
                param.setFilterClass(classFilter);
239
                paramsList.add(param);
240
        }
241

    
242
        /*
243
         * (non-Javadoc)
244
         * @see org.gvsig.gui.beans.propertiespanel.PropertiesComponentListener#actionChangeProperties(java.util.EventObject)
245
         */
246
        public void actionChangeProperties(EventObject e) {
247
                RefreshDataProperties();
248
                getFilterPanel().refreshPreview();
249
        }
250

    
251
        /*
252
         * (non-Javadoc)
253
         * @see org.gvsig.gui.beans.treelist.listeners.TreeListChangeListener#actionChangeSelection(org.gvsig.gui.beans.treelist.event.TreeListChangeEvent)
254
         */
255
        public void actionChangeSelection(TreeListChangeEvent e) {
256
                changePanel(e.getItem());
257
        }
258

    
259
        /*
260
         * (non-Javadoc)
261
         * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
262
         */
263
        public void actionPerformed(ActionEvent e) {
264
                getFilterPanel().refreshPreview();
265
        }
266

    
267
        /*
268
         * (non-Javadoc)
269
         * @see org.gvsig.gui.beans.treelist.listeners.TreeListComponentListener#elementAdded(org.gvsig.gui.beans.treelist.event.TreeListEvent)
270
         */
271
        public void elementAdded(TreeListEvent e) {
272
                getFilterPanel().refreshPreview();
273
        }
274

    
275
        /*
276
         * (non-Javadoc)
277
         * @see org.gvsig.gui.beans.treelist.listeners.TreeListComponentListener#elementMoved(org.gvsig.gui.beans.treelist.event.TreeListEvent)
278
         */
279
        public void elementMoved(TreeListEvent e) {
280
                getFilterPanel().refreshPreview();
281
        }
282

    
283
        /*
284
         * (non-Javadoc)
285
         * @see org.gvsig.gui.beans.treelist.listeners.TreeListComponentListener#elementRemoved(org.gvsig.gui.beans.treelist.event.TreeListEvent)
286
         */
287
        public void elementRemoved(TreeListEvent e) {
288
                getFilterPanel().refreshPreview();
289
        }
290

    
291
        /**
292
         * @return the paramsList
293
         */
294
        public ArrayList getParamsList() {
295
                return paramsList;
296
        }
297

    
298
        /**
299
         * Devuelve la ruta del fichero donde se va a guardar, en caso de guardarse
300
         * en memoria, calcula el nombre sin preguntar y devuelve la ruta.
301
         * @return
302
         */
303
        public String getFileSelected() {
304
                String path = "";
305
                if (getFilterPanel().getRadioFileGenerate().isSelected()) {
306
                        JFileChooser chooser = new JFileChooser(FileOpenWizard.getLastPath());
307
                        chooser.setDialogTitle(PluginServices.getText(this, "seleccionar_fichero"));
308

    
309
                        //A?adimos las extensiones que hayan sido registradas en el driver
310
                        String[] extList = GeoRasterWriter.getDriversExtensions();
311
                        for(int i=0;i<extList.length;i++)
312
                                chooser.addChoosableFileFilter(new ExtendedFileFilter(extList[i]));
313

    
314
                        if (chooser.showOpenDialog(getFilterPanel()) != JFileChooser.APPROVE_OPTION)
315
                                return null;
316

    
317
                        FileOpenWizard.setLastPath(chooser.getSelectedFile().getPath().substring(0, chooser.getSelectedFile().getPath().lastIndexOf(File.separator)));
318

    
319
                        ExtendedFileFilter fileFilter = (ExtendedFileFilter) chooser.getFileFilter();
320
                        path = fileFilter.getNormalizedFilename(chooser.getSelectedFile());
321
                } else {
322

    
323
                        String file = getFilterPanel().getFilenameTextField().getText();
324
                        if(file.compareTo(RasterLibrary.getOnlyLayerName()) == 0) 
325
                                RasterLibrary.usesOnlyLayerName();
326
                                                        
327
                        if(!compress)
328
                                path = Utilities.createTempDirectory() + File.separator + file + ".tif";
329
                        else
330
                                path = Utilities.createTempDirectory() + File.separator + file + ".jp2";
331
                        filterPanel.updateNewLayerText();
332
                }
333
                return path;
334
        }
335

    
336
        /**
337
         * Aqui se seleccionan que filtros se van a aplicar y se devuelven en forma
338
         * de ArrayList tanto para el dibujado como cuando aceptan o aplican el panel.
339
         * @param rendering
340
         * @return
341
         */
342
        public ArrayList applyFilters(IRasterRendering rendering) {
343
                ArrayList listFilterUsed = new ArrayList();
344

    
345
                RasterFilterList filterList = new RasterFilterList();
346
                filterList.setEnv(rendering.getRenderFilterList().getEnv());
347
                RasterFilterListManager stackManager = new RasterFilterListManager(filterList);
348

    
349
                // Conservamos filtros no visibles ya existentes
350
                ArrayList filtersInit = getFilterPanel().getFilterStatus();
351
                for (int i = 0; i < filtersInit.size(); i++) {
352
                        // Si es visible no hacemos nada
353
                        if (((RasterFilter) filtersInit.get(i)).isVisible())
354
                                continue;
355

    
356
                        RasterFilter obj = null;
357
                        for (int j = 0; j < stackManager.getRasterFilterList().size(); j++) {
358
                                Class classFilter = (Class) stackManager.getRasterFilterList().get(j);
359
                                try {
360
                                        obj = (RasterFilter) classFilter.newInstance();
361
                                        if (obj.getName().equals(((RasterFilter) filtersInit.get(i)).getName()))
362
                                                break;
363
                                } catch (InstantiationException e) {
364
                                        RasterToolsUtil.messageBoxError("error_creando_filtro", this, e);
365
                                } catch (IllegalAccessException e) {
366
                                        RasterToolsUtil.messageBoxError("error_creando_filtro", this, e);
367
                                }
368
                        }
369

    
370
                        // Si no encontramos el filtro apropiado, nos olvidamos de el
371
                        if (obj == null)
372
                                continue;
373

    
374
                        // Si no es visible tenemos que conservar el filtro
375
                        try {
376
                                Params params = (Params) ((RasterFilter) filtersInit.get(i)).getUIParams(((RasterFilter) filtersInit.get(i)).getName()).clone();
377
                                // A?ado el parametro RenderBands a los parametros del filtro
378
                                String rgb = rendering.getRenderBands()[0] + " " + rendering.getRenderBands()[1] + " " + rendering.getRenderBands()[2];
379
                                params.setParam("RenderBands", rgb, 0, null);
380

    
381
                                ParamStruct newParam = new ParamStruct();
382
                                newParam.setFilterClass(obj.getClass());
383
                                newParam.setFilterName(((RasterFilter) filtersInit.get(i)).getName());
384
                                newParam.setFilterParam(params);
385
                                listFilterUsed.add(newParam);
386
                        } catch (CloneNotSupportedException e) {
387
                        }
388
                }
389

    
390
                // Metemos los filtros seleccionados en el panel
391
                ListModel list = getFilterPanel().getTreeListContainer().getListModel();
392
                for (int i = 0; i < list.getSize(); i++) {
393
                        Hashtable hastTable = getFilterPanel().getTreeListContainer().getMap();
394
                        for (int j = 0; j < paramsList.size(); j++) {
395
                                boolean active = true;
396
                                Param param = ((ParamStruct) paramsList.get(j)).getFilterParam().getParamById("enabled");
397
                                if ((param != null) &&
398
                                        param.defaultValue instanceof Boolean &&
399
                                        ((((Boolean)param.defaultValue).booleanValue()) == false))
400
                                        active = false;
401
                                if (active) {
402
                                        if (((ParamStruct) paramsList.get(j)).getFilterName().equals(hastTable.get(list.getElementAt(i)))) {
403
                                                try {
404
                                                        Params params = (Params) ((ParamStruct) paramsList.get(j)).getFilterParam().clone();
405
                                                        // A?ado el parametro RenderBands a los parametros del filtro
406
                                                        String rgb = rendering.getRenderBands()[0] + " " + rendering.getRenderBands()[1] + " " + rendering.getRenderBands()[2];
407
                                                        params.setParam("RenderBands", rgb, 0, null);
408

    
409
                                                        ParamStruct newParam = new ParamStruct();
410
                                                        newParam.setFilterClass(((ParamStruct) paramsList.get(j)).getFilterClass());
411
                                                        newParam.setFilterName(((ParamStruct) paramsList.get(j)).getFilterName());
412
                                                        newParam.setFilterParam(params);
413
                                                        listFilterUsed.add(newParam);
414
                                                } catch (CloneNotSupportedException e) {
415
                                                }
416
                                        }
417
                                }
418
                        }
419
                }
420
                return listFilterUsed;
421
        }
422

    
423
        /*
424
         * (non-Javadoc)
425
         * @see org.gvsig.gui.beans.imagenavigator.IClientImageNavigator#drawImage(java.awt.Graphics2D, double, double, double, double, double, int, int)
426
         */
427
        public void drawImage(Graphics2D g, double x1, double y1, double x2, double y2, double zoom, int width, int height) {
428
                if (previewLayer == null || !(previewLayer instanceof IRasterRendering))
429
                        return;
430

    
431
                IRasterRendering rendering = ((IRasterRendering) previewLayer);
432

    
433
                ((FLyrRasterSE) getFilterPanel().getLayer()).setRenderBands(((FLyrRasterSE) getFilterPanel().getLayer()).getRenderBands());
434

    
435
                if ((rendering == null) || ((x2 - x1) == 0.0) || ((y2 - y1) == 0.0))
436
                        return;
437

    
438
                rendering.getRenderFilterList().pushStatus();
439
                rendering.setRenderBands(((FLyrRasterSE) getFilterPanel().getLayer()).getRenderBands());
440
                rendering.getRenderFilterList().clear();
441

    
442
                if (getFilterPanel().getCBShowFilters().isSelected()) {
443
                        RasterFilterList filterList = rendering.getRenderFilterList();
444
                        RasterFilterListManager stackManager = new RasterFilterListManager(filterList);
445

    
446
                        ArrayList listFilterUsed = applyFilters(rendering);
447
                        ArrayList exc = new ArrayList();
448
                        for (int i = 0; i < listFilterUsed.size(); i++) {
449
                                IRasterFilterListManager filterManager = stackManager.getManagerByFilterClass(((ParamStruct) listFilterUsed.get(i)).getFilterClass());
450
                                try {
451
                                        filterManager.addFilter(((ParamStruct) listFilterUsed.get(i)).getFilterClass(), ((ParamStruct) listFilterUsed.get(i)).getFilterParam());
452
                                } catch (FilterTypeException e) {
453
                                        exc.add(e);
454
                                }
455
                        }
456
                        if(exc.size() != 0) {
457
                                RasterToolsUtil.messageBoxError(PluginServices.getText(this, "error_adding_filters"), this, exc);
458
                                exc.clear();
459
                        }
460
                }
461

    
462
                ViewPort vp = new ViewPort(null);
463

    
464
                Dimension2D dimension = new Dimension(width, height);
465
                Extent extent = new Extent(new Point2D.Double(x1, y1), new Point2D.Double(x2, y2), new Point2D.Double(x2, y1), new Point2D.Double(x1, y2));
466
                //Extent extent = new Extent(x1, y1, x2, y2);
467

    
468
                ViewPortData vp2 = new ViewPortData(vp.getProjection(), extent, dimension);
469
                vp2.setMat(new AffineTransform(zoom, 0.0, 0.0, zoom, -x1*zoom, -y1*zoom));
470

    
471
                Extent extent2 = ((FLyrRasterSE) getFilterPanel().getLayer()).getFullRasterExtent();//.getBufferFactory().getDataSource().getExtent();
472

    
473
                AffineTransform trans = g.getTransform();
474
                // Calcular cuanto sobresale la imagen y rectificar ese desplazamiento
475
                if (y1 > extent2.maxY()) {
476
                        g.translate(0.0, (-(extent2.maxY() - y1) * zoom)*2.0);
477
                }
478

    
479
                try {
480
                        previewLayer.getRender().draw(g, vp2);
481
                } catch (RasterDriverException e) {
482
                        RasterToolsUtil.messageBoxError(PluginServices.getText(this, "error_render_preview"), this, e);
483
                } catch (InvalidSetViewException e) {
484
                        RasterToolsUtil.messageBoxError(PluginServices.getText(this, "error_setview_preview"), this, e);
485
                } catch (InterruptedException e) {
486
                }
487
                g.setTransform(trans);
488

    
489
                rendering.getRenderFilterList().popStatus();
490
        }
491

    
492
        /**
493
         * Que acciones se ejecutaran al haber presionado el bot?n aceptar o aplicar
494
         */
495
        public void accept() {
496
                IRasterDataSource raster = ((FLyrRasterSE) getFilterPanel().getLayer()).getDataSource();
497
                if (raster == null)
498
                        return;
499

    
500
                String path = null;
501
                if (!getFilterPanel().getRadioOnlyView().isSelected()) {
502
                        path = getFileSelected();
503
                        if (path == null)
504
                                return;
505
                }
506

    
507
                //Rendering rendering = ((FLyrRasterSE) getFilterPanel().getLayer()).getRender();
508
                IRasterRendering rendering = (IRasterRendering) getFilterPanel().getLayer();
509

    
510
                // Array para guardar los filtros que se van a usar en forma de ParamStruct
511
                ArrayList listFilterUsed = applyFilters(rendering);
512

    
513
                if (filterPanel.getRadioOnlyView().isSelected()) {
514
                        try {
515
                                FilterProcess.addSelectedFilters(rendering.getRenderFilterList(), listFilterUsed);
516
                                ((FLyrRasterSE) getFilterPanel().getLayer()).setRenderFilterList(rendering.getRenderFilterList());
517
                                getFilterPanel().getLayer().getMapContext().invalidate();
518
                        } catch (FilterTypeException e) {
519
                                RasterToolsUtil.messageBoxError(PluginServices.getText(this, "error_adding_filters"), this, e);
520
                        }
521
                } else {
522
                        FilterProcess filterProcess = new FilterProcess();
523
                        filterProcess.setActions(this);
524
                        filterProcess.addParam("rendering", rendering);
525
                        filterProcess.addParam("filename", path);
526
                        filterProcess.addParam("rasterdatasource", raster);
527
                        filterProcess.addParam("listfilterused", listFilterUsed);
528
                        filterProcess.start();
529
                }
530
        }
531

    
532
        /**
533
         * Devuelve el FilterPanel asociado al FilterListener
534
         * @return
535
         */
536
        public FilterPanel getFilterPanel() {
537
                return filterPanel;
538
        }
539

    
540
        /**
541
         * Acciones que se realizan al finalizar de crear los recortes de imagen.
542
         * Este m?todo es llamado por el thread TailRasterProcess al finalizar.
543
         */
544
        public void loadLayerInToc(String fileName) {
545
                if (!getFilterPanel().getRadioNewLayer().isSelected())
546
                        return;
547
                if(!new File(fileName).exists())
548
                        return;
549
                try {
550
                        RasterToolsUtil.loadLayer(getFilterPanel().getViewName(), fileName, null);
551
                } catch (RasterNotLoadException e) {
552
                        RasterToolsUtil.messageBoxError("error_cargar_capa", this, e);
553
                }
554

    
555
                if(filterPanel != null)
556
                        filterPanel.updateNewLayerText();
557
        }
558

    
559
        /*
560
         * (non-Javadoc)
561
         * @see org.gvsig.raster.grid.filter.FilterUIListener#actionValuesCompleted(java.util.EventObject)
562
         */
563
        public void actionValuesCompleted(EventObject e) {
564
                actionChangeProperties(e);
565
        }
566

    
567
        /*
568
         * (non-Javadoc)
569
         * @see org.gvsig.rastertools.IProcessActions#end(java.lang.Object)
570
         */
571
        public void end(Object param) {
572
                loadLayerInToc((String) param);
573
        }
574

    
575
        public void interrupted() {}
576
}