Statistics
| Revision:

gvsig-raster / org.gvsig.raster.tools / branches / org.gvsig.raster.tools_dataaccess_refactoring / org.gvsig.raster.tools.app.basic / src / main / java / org / gvsig / raster / tools / app / basic / tool / enhanced / ui / EnhancedListener.java @ 2340

History | View | Annotate | Download (20.5 KB)

1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.tools.app.basic.tool.enhanced.ui;
23

    
24
import java.awt.Color;
25
import java.awt.Component;
26
import java.awt.event.ActionEvent;
27
import java.awt.event.ActionListener;
28
import java.io.File;
29
import java.util.List;
30

    
31
import org.gvsig.fmap.dal.coverage.RasterLocator;
32
import org.gvsig.fmap.dal.coverage.datastruct.Params;
33
import org.gvsig.fmap.dal.coverage.datastruct.Stretch;
34
import org.gvsig.fmap.dal.coverage.exception.FilterManagerException;
35
import org.gvsig.fmap.dal.coverage.exception.FilterTypeException;
36
import org.gvsig.fmap.dal.coverage.grid.RasterFilter;
37
import org.gvsig.fmap.dal.coverage.grid.RasterFilterList;
38
import org.gvsig.fmap.dal.coverage.grid.filter.LinearStretchParams;
39
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
40
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
41
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
42
import org.gvsig.i18n.Messages;
43
import org.gvsig.raster.fmap.layers.FLyrRaster;
44
import org.gvsig.raster.swing.RasterSwingLibrary;
45
import org.gvsig.raster.swing.RasterSwingLocator;
46
import org.gvsig.raster.swing.gcanvas.BaseFunction;
47
import org.gvsig.raster.swing.gcanvas.DensitySlicingLine;
48
import org.gvsig.raster.swing.gcanvas.DrawableElement;
49
import org.gvsig.raster.swing.gcanvas.GCanvas;
50
import org.gvsig.raster.swing.gcanvas.GCanvasEvent;
51
import org.gvsig.raster.swing.gcanvas.GraphicHistogram;
52
import org.gvsig.raster.swing.gcanvas.IGCanvasListener;
53
import org.gvsig.raster.swing.gcanvas.LogaritmicExponentialLine;
54
import org.gvsig.raster.swing.gcanvas.SquareRootPowLine;
55
import org.gvsig.raster.swing.gcanvas.StraightLine;
56
import org.gvsig.raster.tools.app.basic.RasterToolsUtil;
57
import org.gvsig.raster.tools.app.basic.raster.bean.previewbase.ParamStruct;
58
import org.gvsig.raster.tools.app.basic.raster.process.FilterProcess;
59
import org.gvsig.raster.tools.app.basic.raster.process.IProcessActions;
60
import org.gvsig.raster.tools.app.basic.tool.enhanced.graphics.HistogramGraphicBase;
61
import org.gvsig.raster.tools.app.basic.tool.enhanced.graphics.HistogramGraphicBase.HistogramStatus;
62
import org.gvsig.raster.util.LayerVisualStatusList;
63
import org.gvsig.raster.util.RasterNotLoadException;
64

    
65
/**
66
 * Gestor de eventos de los paneles de gr?ficas y controles.
67
 * 
68
 * 21/02/2008
69
 * @author Nacho Brodin nachobrodin@gmail.com
70
 */
71
public class EnhancedListener implements ActionListener, IGCanvasListener, ButtonsPanelListener, IProcessActions {
72
        private SelectorsPanel               selectorsPanel  = null;
73
        private GraphicsPanel                graphicsPanel   = null;
74
        private EnhancedDialog               enhancedDialog  = null;
75
        private PreviewFiltering             filteredPreview = null;
76
        private EnhancedHistogramController  enhancedManager = null;
77
        private LayerVisualStatusList        status          = new LayerVisualStatusList();
78
        
79
        /**
80
         * Constructor
81
         * @param selectorsPanel Panel con los selectores de opciones
82
         * @param graphicsPanel Panel con los gr?ficos
83
         * @param enhancedPanel Panel base con la previsualizaci?n
84
         * @param enhancedDialog Dialogo general
85
         * @param filteredPreview Preprocesado para la preview
86
         */
87
        public EnhancedListener(SelectorsPanel selectorsPanel, 
88
                                                        GraphicsPanel graphicsPanel, 
89
                                                        EnhancedDialog enhancedDialog, 
90
                                                        PreviewFiltering filteredPreview) {
91
                this.selectorsPanel = selectorsPanel;
92
                this.graphicsPanel = graphicsPanel;
93
                this.enhancedDialog = enhancedDialog;
94
                this.filteredPreview = filteredPreview;
95
                status.getVisualStatus(((FLyrRaster) enhancedDialog.getLayer()));
96
                
97
                
98
                enhancedManager = new EnhancedHistogramController(graphicsPanel.getInputHistogram(), graphicsPanel.getOutputHistogram(), enhancedDialog);
99
                
100
                selectorsPanel.getHistogramType().addActionListener(this);
101
                selectorsPanel.getDrawType().addActionListener(this);
102
                selectorsPanel.getBand(null).addActionListener(this);
103
                selectorsPanel.getEnhancedType().addActionListener(this);
104
                graphicsPanel.getLevels().addActionListener(this);
105
                graphicsPanel.getRGB().addActionListener(this);
106
        }
107
        
108
        public void actionPerformed(ActionEvent e) {
109
                //Cambio del tipo de de dibujado del histograma
110
                if(e.getSource() == selectorsPanel.getDrawType()) {
111
                        if(((String)selectorsPanel.getDrawType().getSelectedItem()).equals(Messages.getText("fill"))) {
112
                                graphicsPanel.getInputHistogram().setType(GraphicHistogram.TYPE_FILL);
113
                                graphicsPanel.getOutputHistogram().setType(GraphicHistogram.TYPE_FILL);
114
                        }
115
                        
116
                        if(((String)selectorsPanel.getDrawType().getSelectedItem()).equals(Messages.getText("line"))) {
117
                                graphicsPanel.getInputHistogram().setType(GraphicHistogram.TYPE_LINE);
118
                                graphicsPanel.getOutputHistogram().setType(GraphicHistogram.TYPE_LINE);
119
                        }
120
                        ((Component)graphicsPanel.getInputHistogram().getCanvas()).repaint();
121
                        ((Component)graphicsPanel.getOutputHistogram().getCanvas()).repaint();
122
                }
123

    
124
                // Cambio el tipo de visualizacion del histograma
125
                if (e.getSource() == selectorsPanel.getHistogramType()) {
126
                        if (((String) selectorsPanel.getHistogramType().getSelectedItem()).equals(Messages.getText("standard"))) {
127
                                graphicsPanel.getOutputHistogram().setHistogramType(GraphicHistogram.VIEW_LINEAL);
128
                        }
129
                        
130
                        if (((String) selectorsPanel.getHistogramType().getSelectedItem()).equals(Messages.getText("cumulative"))) {
131
                                graphicsPanel.getOutputHistogram().setHistogramType(GraphicHistogram.VIEW_ACUMMULATED);
132
                        }
133
                        
134
                        if (((String) selectorsPanel.getHistogramType().getSelectedItem()).equals(Messages.getText("logaritmic"))) {
135
                                graphicsPanel.getOutputHistogram().setHistogramType(GraphicHistogram.VIEW_LOGARITHMIC);
136
                        }
137
                        
138
                        if (((String) selectorsPanel.getHistogramType().getSelectedItem()).equals(Messages.getText("cumulative_logarithmic"))) {
139
                                graphicsPanel.getOutputHistogram().setHistogramType(GraphicHistogram.VIEW_ACUMMULATEDLOG);
140
                        }
141
                        ((Component)graphicsPanel.getOutputHistogram().getCanvas()).repaint();
142
                }
143

    
144
                // Seleccion de modo RGB o normal
145
                if (e.getSource() == graphicsPanel.getRGB()) {
146
                        graphicsPanel.updateHistogram();
147
                        updatePreview();
148
                }
149
                
150
                //Cambio de banda
151
                if(e.getSource() == selectorsPanel.getBand(null)) {
152
                        if(((String)selectorsPanel.getBand(null).getSelectedItem()).equals(Messages.getText("red"))) {
153
                                graphicsPanel.getInputHistogram().setHistogramDrawed(HistogramGraphicBase.RED);
154
                                graphicsPanel.getOutputHistogram().setHistogramDrawed(HistogramGraphicBase.RED);
155
                        }
156
                        
157
                        if(((String)selectorsPanel.getBand(null).getSelectedItem()).equals(Messages.getText("green"))) {
158
                                graphicsPanel.getInputHistogram().setHistogramDrawed(HistogramGraphicBase.GREEN);
159
                                graphicsPanel.getOutputHistogram().setHistogramDrawed(HistogramGraphicBase.GREEN);
160
                        }
161
                        
162
                        if(((String)selectorsPanel.getBand(null).getSelectedItem()).equals(Messages.getText("blue"))) {
163
                                graphicsPanel.getInputHistogram().setHistogramDrawed(HistogramGraphicBase.BLUE);
164
                                graphicsPanel.getOutputHistogram().setHistogramDrawed(HistogramGraphicBase.BLUE);
165
                        }
166

    
167
                        updateTypeSelected();
168
                        
169
                        HistogramStatus status = graphicsPanel.getOutputHistogram().getHistogramStatus(HistogramGraphicBase.DRAWED);
170

    
171
                        switch (status.getGraphicHistogram().getType()) {
172
                                case GraphicHistogram.TYPE_FILL:
173
                                        selectorsPanel.getDrawType().setSelectedItem(Messages.getText("fill"));
174
                                        break;
175
                                default:
176
                                        selectorsPanel.getDrawType().setSelectedItem(Messages.getText("line"));
177
                                        break;
178
                        }
179

    
180
                        switch (status.getGraphicHistogram().getTypeViewed()) {
181
                                case GraphicHistogram.VIEW_ACUMMULATED:
182
                                        selectorsPanel.getHistogramType().setSelectedItem(Messages.getText("cumulative"));
183
                                        break;
184
                                case GraphicHistogram.VIEW_LOGARITHMIC:
185
                                        selectorsPanel.getHistogramType().setSelectedItem(Messages.getText("logaritmic"));
186
                                        break;
187
                                case GraphicHistogram.VIEW_ACUMMULATEDLOG:
188
                                        selectorsPanel.getHistogramType().setSelectedItem(Messages.getText("cumulative_logarithmic"));
189
                                        break;
190
                                default:
191
                                        selectorsPanel.getHistogramType().setSelectedItem(Messages.getText("standard"));
192
                                        break;
193
                        }
194
                }
195
                
196
                //Cambio de operaci?n
197
                if(e.getSource() == selectorsPanel.getEnhancedType()) {
198
                        graphicsPanel.setLevelsEnabled(false);
199
                        
200
                        if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals(Messages.getText("lineal"))) {
201
                                graphicsPanel.getInputHistogram().setFunction(GraphicHistogram.FUNCTION_LINEAL);
202
                                updatePreview();
203
                        }
204
                        
205
                        if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals(Messages.getText("gaussian"))) {
206

    
207
                        }
208
                        
209
                        if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals(Messages.getText("logaritmic"))) {
210
                                graphicsPanel.getInputHistogram().setFunction(GraphicHistogram.FUNCTION_LOGARIT);
211
                                updatePreview();
212
                        }
213
                        
214
                        if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals(Messages.getText("exponential"))) {
215
                                graphicsPanel.getInputHistogram().setFunction(GraphicHistogram.FUNCTION_EXPONENT);
216
                                updatePreview();
217
                        }
218
                        
219
                        if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals(Messages.getText("equalization"))) {
220
                                graphicsPanel.getInputHistogram().setFunction(GraphicHistogram.FUNCTION_NONE);
221
                                int[] renderBands = enhancedDialog.getLayer().getRender().getRenderColorInterpretation().buildRenderBands();
222
                                String values = "";
223
                                for (int i = 0; i < renderBands.length; i++) 
224
                                        values += renderBands[i] + " ";
225
                                values = values.trim();
226
                                Params params = RasterLocator.getManager().createParams("", 0, 0, null);
227
                                params.setParam("Histogram", graphicsPanel.getHistogram(), -1, null);
228
                                params.setParam("RenderBands", values, -1, null);
229
                                params.setParam("EcualizedBands", new int[]{0, 1, 2}, -1, null);
230
                                                
231
                                Class<?> filterClass = enhancedDialog.getLayer().getRender().getFilterList().getFilterClassByID("equalization");
232
                                filteredPreview.addNewParam("equalization", params, filterClass);                                
233
                                updatePreview();
234
                        }
235
                        
236
                        if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals(Messages.getText("square_root"))) {
237
                                graphicsPanel.getInputHistogram().setFunction(GraphicHistogram.FUNCTION_SQUARE_ROOT);
238
                                updatePreview();
239
                        }
240
                        
241
                        if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals(Messages.getText("level_slice"))) {
242
                                graphicsPanel.setLevelsEnabled(true);
243
                                graphicsPanel.getInputHistogram().setFunction(GraphicHistogram.FUNCTION_DENSITY);
244

    
245
                                // Establece el numero de niveles en el cuadro de texto
246
                                HistogramStatus status = graphicsPanel.getInputHistogram().getHistogramStatus(HistogramGraphicBase.DRAWED);
247
                                graphicsPanel.getLevels().setValue(new Long(((DensitySlicingLine) status.getBaseFunction()).getLevels()));
248
                                updatePreview();
249
                        }
250
                }
251
                
252
                //Cambio de tipo (estandar/acumulado)
253
                if(e.getSource() == selectorsPanel.getHistogramType()) {
254
                        if(((String)selectorsPanel.getHistogramType().getSelectedItem()).equals(Messages.getText("standard"))) {
255
                                
256
                        }
257
                        
258
                        if(((String)selectorsPanel.getHistogramType().getSelectedItem()).equals(Messages.getText("cumulative"))) {
259
                                
260
                        }
261
                }
262
                
263
                //Cambio en el n?mero de niveles
264
                if(e.getSource() == graphicsPanel.getLevels()) {
265
                        Long lValue = (Long)graphicsPanel.getLevels().getValue();
266
                        int value = lValue.intValue();
267
                        if(value > 30 || value < 2) {
268
                                RasterSwingLibrary.messageBoxInfo(Messages.getText("range_wrong") + " [2-30]", graphicsPanel);
269
                                if(value > 30)
270
                                        value = 30;
271
                                if(value < 2)
272
                                        value = 2;
273
                        }
274
                        graphicsPanel.getLevels().setValue(new Long(value));
275
                        try {
276
                                graphicsPanel.getInputHistogram().setLevel(value);
277
                                updatePreview();
278
                        } catch (NumberFormatException exc) {
279
                                //No asignamos el nivel
280
                        }
281
                }
282
        }
283
        
284
        /**
285
         * Actualiza el combo de EnhancedType para que este seleccionado siempre el
286
         * item que corresponde con la grafica mostrada en ese momento
287
         */
288
        private void updateTypeSelected() {
289
                HistogramStatus status = graphicsPanel.getInputHistogram().getHistogramStatus(HistogramGraphicBase.DRAWED);
290

    
291
                if (status.getBaseFunction().getClass().equals(DensitySlicingLine.class))
292
                        selectorsPanel.setSelectedEnhancedType(Messages.getText("level_slice"));
293

    
294
                if (status.getBaseFunction().getClass().equals(StraightLine.class))
295
                        selectorsPanel.setSelectedEnhancedType(Messages.getText("lineal"));
296

    
297
                Class<?> filterClass = enhancedDialog.getLayer().getRender().getFilterList().getFilterClassByID("equalization");
298
                if (status.getBaseFunction().getClass().equals(filterClass))
299
                        selectorsPanel.setSelectedEnhancedType(Messages.getText("equalization"));
300

    
301
                if (status.getBaseFunction().getClass().equals(SquareRootPowLine.class))
302
                        selectorsPanel.setSelectedEnhancedType(Messages.getText("square_root"));
303

    
304
                if (status.getBaseFunction().getClass().equals(LogaritmicExponentialLine.class)) {
305
                        if (((StraightLine) status.getBaseFunction()).getValueFunction() >= 0)
306
                                selectorsPanel.setSelectedEnhancedType(Messages.getText("logaritmic"));
307
                        else
308
                                selectorsPanel.setSelectedEnhancedType(Messages.getText("exponential"));
309
                }
310
        }
311
        
312
        /**
313
         * En la primera carga se define cada banda en los histogramas, para dejarlo en
314
         * su estado logico.
315
         * @param stretch
316
         * @param band
317
         */
318
        private void firstLoadBand(Stretch stretch, int band) {
319
                boolean firstBand = ((band == HistogramGraphicBase.GRAY) || (band == HistogramGraphicBase.RED));
320

    
321
                graphicsPanel.getInputHistogram().setHistogramDrawed(band);
322
                
323
                BaseFunction baseFunction = null;
324
                HistogramStatus status;
325
                status = graphicsPanel.getInputHistogram().getHistogramStatus(band);
326
                if (status == null)
327
                        return;
328
                
329
                GCanvas canvas = RasterSwingLocator.getSwingManager().createGraphicCanvas(Color.white);
330
                
331
                switch (stretch.getFunctionType()) {
332
                        case 0:
333
                                if (firstBand) {
334
                                        selectorsPanel.getEnhancedType().setSelectedItem(Messages.getText("lineal"));
335
                                        graphicsPanel.setLevelsEnabled(false);
336
                                }
337
                                baseFunction = canvas.createStraightLineForGCanvas(
338
                                                ((DrawableElement)status.getBaseFunction()).getColor());
339
                                ((StraightLine) baseFunction).clearSquares();
340
                                for (int i = 0; i < stretch.getStretchIn().length; i++) {
341
                                        ((StraightLine) baseFunction).addSquare(
342
                                                (stretch.getStretchIn()[i] - stretch.getMinValue()) / (stretch.getMaxValue() - stretch.getMinValue()),
343
                                                stretch.getStretchOut()[i] / 255.0D);
344
                                }
345
                                break;
346
                        case 1:
347
                                if (firstBand) {
348
                                        if (stretch.getValueFunction() >= 0)
349
                                                selectorsPanel.getEnhancedType().setSelectedItem(Messages.getText("logaritmic"));
350
                                        else
351
                                                selectorsPanel.getEnhancedType().setSelectedItem(Messages.getText("exponential"));
352
                                        graphicsPanel.setLevelsEnabled(false);
353
                                }
354
                                baseFunction = canvas.createLogaritmicExponentialLineForGCanvas(
355
                                                ((DrawableElement)status.getBaseFunction()).getColor(), stretch.getValueFunction());
356
                                break;
357
                        case 2:
358
                                if (firstBand) {
359
                                        selectorsPanel.getEnhancedType().setSelectedItem(Messages.getText("square_root"));
360
                                        graphicsPanel.setLevelsEnabled(false);
361
                                }
362
                                baseFunction = canvas.createSquareRootPowLineForGCanvas(
363
                                                ((DrawableElement)status.getBaseFunction()).getColor(), stretch.getValueFunction());
364
                                break;
365
                        case 3:
366
                                if (firstBand) {
367
                                        selectorsPanel.getEnhancedType().setSelectedItem(Messages.getText("level_slice"));
368
                                        graphicsPanel.setLevelsEnabled(true);
369
                                }
370
                                baseFunction = canvas.createDensitySliceForGCanvas(
371
                                                ((DrawableElement)status.getBaseFunction()).getColor(), (int) stretch.getValueFunction());
372
                                break;
373
                }
374
                if (baseFunction != null) {
375
                        status.setBaseFunction(baseFunction);
376
                        graphicsPanel.getInputHistogram().setHistogramDrawed(band);
377
                }
378
        }
379
        
380
        /**
381
         * En la primera carga se han de establecer todos los histogramas de entrada
382
         * a sus valores correspondientes segun el filtro.
383
         */
384
        public void firstLoad() {
385
                RasterFilterList rasterFilterList = enhancedDialog.getLayer().getRender().getFilterList();
386

    
387
                RasterFilter filter = rasterFilterList.getByName("enhanced_stretch");
388
                if (filter != null) {
389
                        LinearStretchParams stretch = (LinearStretchParams) filter.getParam("stretchs");
390
                        
391
                        firstLoadBand(stretch.getBlue(), HistogramGraphicBase.BLUE);
392
                        firstLoadBand(stretch.getGreen(), HistogramGraphicBase.GREEN);
393
                        firstLoadBand(stretch.getRed(), HistogramGraphicBase.RED);
394
                        firstLoadBand(stretch.getRed(), HistogramGraphicBase.GRAY);
395
                        graphicsPanel.getRGB().setSelected(stretch.isRgb());
396
                }
397
                graphicsPanel.getInputHistogram().repaint();
398
        }
399
        
400
        /**
401
         * Coge los datos que hay en los histogramas y los aplica a la vista previa
402
         */
403
        public void updatePreview() {
404
                enhancedManager.updatePreview();
405
                enhancedManager.updateHistogramOut();
406
        }
407

    
408
        /**
409
         * Coge los datos que hay en los histogramas y los aplica en el histograma de salida
410
         */
411
        private void updateHistogramOut() {
412
                updateTypeSelected();
413
                enhancedManager.updatePreview();
414
                enhancedManager.updateHistogramOut();
415
        }
416
        
417
        public void actionDataChanged(GCanvasEvent e) {
418
                if (e.getKey().equals("minmax")) {
419
                        updatePreview();
420
                        return;
421
                }
422
                if (e.getKey().equals("line")) {
423
                        updatePreview();
424
                        return;
425
                }
426
        }
427

    
428
        public void actionDataDragged(GCanvasEvent e) {
429
                if (e.getKey().equals("minmax")) {
430
                        updateHistogramOut();
431
                        return;
432
                }
433
                if (e.getKey().equals("line")) {
434
                        updateHistogramOut();
435
                        return;
436
                }
437
        }
438

    
439
        public void actionButtonPressed(ButtonsPanelEvent e) {
440
                switch (e.getButton()) {
441
                case ButtonsPanel.BUTTON_CANCEL:
442
                        cancel();
443
                        break;
444
                case ButtonsPanel.BUTTON_APPLY:
445
                        apply();
446
                        break;
447
                case ButtonsPanel.BUTTON_CLOSE:
448
                        enhancedDialog.close();
449
                        break;
450
                }
451
        }
452
        
453
        /**
454
         * Que acciones se ejecutaran al haber presionado el bot?n aceptar o aplicar
455
         */
456
        public void apply() {
457
                FLyrRaster lyr = enhancedDialog.getLayer();
458
                if (lyr == null)
459
                        return;
460

    
461
                String path = null;
462
                if (!enhancedDialog.getNewOrSaveLayerPanel().isOnlyViewSelected()) {
463
                        path = enhancedDialog.getNewOrSaveLayerPanel().getFileSelected();
464
                        if (path == null)
465
                                return;
466
                }
467

    
468

    
469
                // Array para guardar los filtros que se van a usar en forma de ParamStruct
470
                List<ParamStruct> listFilterUsed = enhancedDialog.getFilteredPreview().applySelectedFilters(null);
471

    
472
                if (enhancedDialog.getNewOrSaveLayerPanel().isOnlyViewSelected()) {
473
                        try {
474
                                ParamStruct.addSelectedFilters(lyr.getRender().getFilterList(), listFilterUsed);
475
                                enhancedDialog.getLayer().getRender().setFilterList(lyr.getRender().getFilterList());
476
                                enhancedDialog.getLayer().getMapContext().invalidate();
477
                        } catch (FilterTypeException e) {
478
                                RasterSwingLibrary.messageBoxError(Messages.getText("error_adding_filters"), this, e);
479
                        } catch (FilterManagerException e) {
480
                                RasterSwingLibrary.messageBoxError(Messages.getText("error_adding_filters"), this, e);
481
                        }
482
                } else {
483
                        FilterProcess filterProcess = new FilterProcess();
484
                        filterProcess.setActions(this);
485
                        filterProcess.addParam("rendering", lyr);
486
                        filterProcess.addParam("filename", path);
487
                        filterProcess.addParam("rasterdatasource", lyr.getDataStore());
488
                        filterProcess.addParam("layer", ((FLyrRaster) enhancedDialog.getLayer()));
489
                        filterProcess.addParam("listfilterused", listFilterUsed);
490
                        filterProcess.addParam("onlyrenderbands", Boolean.TRUE);
491
                        filterProcess.start();
492
                }
493
        }
494
        
495
        /**
496
         * Volvemos todo a la normalidad cuando se cancela
497
         */
498
        public void cancel() {
499
                if (enhancedDialog.getLayer() != null) {
500
                        status.restoreVisualStatus(enhancedDialog.getLayer());
501
                        enhancedDialog.getLayer().getMapContext().invalidate();
502
                }
503
        }
504
        
505

    
506
        /**
507
         * Acciones que se realizan al finalizar de crear los recortes de imagen.
508
         * Este m?todo es llamado por el thread TailRasterProcess al finalizar.
509
         */
510
        public void loadLayerInToc(String fileName) {
511
                if (!enhancedDialog.getNewOrSaveLayerPanel().isNewLayerSelected())
512
                        return;
513
                if(!new File(fileName).exists())
514
                        return;
515
                try {
516
                        RasterToolsUtil.loadLayer(enhancedDialog.getViewName(), fileName, null);
517
                } catch (RasterNotLoadException e) {
518
                        RasterSwingLibrary.messageBoxError("error_cargar_capa", this, e);
519
                }
520

    
521
                if(enhancedDialog != null)
522
                        enhancedDialog.getNewOrSaveLayerPanel().updateNewLayerText();
523
        }
524

    
525
        public void end(Object param) {
526
                loadLayerInToc((String) param);
527
        }
528
        
529
        public void interrupted() {}
530
}