Statistics
| Revision:

root / trunk / extensions / extRasterTools-SE / src / org / gvsig / rastertools / filter / ui / FilterPanel.java @ 12383

History | View | Annotate | Download (20.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.ui;
20

    
21
import java.awt.BorderLayout;
22
import java.awt.Dimension;
23
import java.util.ArrayList;
24
import java.util.Hashtable;
25

    
26
import javax.swing.BorderFactory;
27
import javax.swing.ButtonGroup;
28
import javax.swing.DefaultListModel;
29
import javax.swing.JCheckBox;
30
import javax.swing.JLabel;
31
import javax.swing.JPanel;
32
import javax.swing.JRadioButton;
33
import javax.swing.JTextField;
34

    
35
import org.gvsig.fmap.layers.FLyrRasterSE;
36
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
37
import org.gvsig.gui.beans.defaultbuttonspanel.DefaultButtonsPanel;
38
import org.gvsig.gui.beans.imagenavigator.ImageNavigator;
39
import org.gvsig.gui.beans.propertiespanel.PropertiesComponent;
40
import org.gvsig.gui.beans.treelist.TreeListContainer;
41
import org.gvsig.raster.dataset.Params;
42
import org.gvsig.raster.dataset.Params.Param;
43
import org.gvsig.raster.datastruct.Extent;
44
import org.gvsig.raster.grid.filter.RasterFilter;
45
import org.gvsig.raster.grid.filter.RasterFilterList;
46
import org.gvsig.raster.grid.filter.RasterFilterListManager;
47
import org.gvsig.raster.grid.render.Rendering;
48
import org.gvsig.rastertools.RasterModule;
49
import org.gvsig.rastertools.filter.FilterListener;
50
import org.gvsig.rastertools.filter.FilterListener.ParamStruct;
51

    
52
import com.iver.andami.PluginServices;
53
import com.iver.cit.gvsig.fmap.layers.FLayer;
54
import com.iver.cit.gvsig.project.documents.view.gui.View;
55
/**
56
 * <code>FilterPanel</code> es el panel para filtros donde se construye sus
57
 * componentes visuales b?sicos.
58
 *
59
 * @version 18/05/2007
60
 * @author BorSanZa - Borja S?nchez Zamorano (borja.sanchez@iver.es)
61
 */
62
public class FilterPanel extends DefaultButtonsPanel {
63
        private static final long                serialVersionUID = -5406900542488229074L;
64

    
65
        private JCheckBox                                                jCBShowFilters = null;
66
        private JPanel                                                        jPanelOptions = null;
67
        private JPanel                                                        jPreview = null;
68
        private JRadioButton                                jRBFileGenerate = null;
69
        private JRadioButton                                jRBNewLayer = null;
70
        private JRadioButton                                jRBOnlyView = null;
71
        private JRadioButton                                jRBOpenMemory = null;
72
        private ImageNavigator                        imageNavigator = null;
73
        private PropertiesComponent        propertiesComponent = null;
74
        private TreeListContainer                treeListContainer = null;
75
        private JPanel                                                        jPNameFile = null;
76
        private JPanel                                                        centralPanel = null;
77
        private JTextField                                        filenameTextField = null;
78
        private JLabel                                                        labelFilename = null;
79

    
80
        private FilterListener                        filterListener = null;
81
        private FLayer                                                         fLayer = null;
82

    
83
        private String                                                        viewName = null;
84

    
85
        private ArrayList                                                filterStatus = null;
86

    
87
        /**
88
         * Constructor de un FilterPanel
89
         */
90
        public FilterPanel() {
91
                super(ButtonsPanel.BUTTONS_ACCEPTCANCELAPPLY);
92

    
93
                this.setLayout(new BorderLayout(5, 5));
94
                initialize();
95
                getPropertiesComponent();
96
                translate();
97
        }
98

    
99
        /**
100
         * Seccion donde ir?n todas las traducciones invariables del componente
101
         */
102
        private void translate() {
103
                getCBShowFilters().setText(PluginServices.getText(this, "aplicar_vista_previa"));
104
                getRadioOnlyView().setText(PluginServices.getText(this, "solo_visualizacion"));
105
                getRadioFileGenerate().setText(PluginServices.getText(this, "generar_fichero"));
106
                getRadioNewLayer().setText(PluginServices.getText(this, "capa_nueva"));
107
                getRadioOpenMemory().setText(PluginServices.getText(this, "abrir_memoria"));
108
                getLabelFilename().setText(PluginServices.getText(this, "nombre_capa") + ":");
109
        }
110

    
111
        /**
112
         * This method initializes this
113
         */
114
        private void initialize() {
115
                this.add(getTreeListContainer(), BorderLayout.WEST);
116
                this.add(getCentralPanel(), BorderLayout.CENTER);
117
                this.add(getPPreview(), BorderLayout.EAST);
118
                menuBuild();
119
        }
120

    
121
        /**
122
         * Obtener y generar el JPanel central que contendr? las propiedades
123
         * @return
124
         */
125
        private JPanel getCentralPanel() {
126
                if (centralPanel == null) {
127
                        centralPanel = new JPanel();
128
                        centralPanel.setLayout(new BorderLayout());
129
                        centralPanel.add(getJPNameFile(), BorderLayout.SOUTH);
130
                }
131
                return centralPanel;
132
        }
133

    
134
        /**
135
         * Construye el arbol para el men? de filtros disponibles
136
         */
137
        private void menuBuild() {
138
                Hashtable keys = new Hashtable();
139
                RasterFilterList filterList = new RasterFilterList();
140
                // Creamos un stackManager para recorrer los filtros registrados en gvSIG
141
                RasterFilterListManager stackManager = new RasterFilterListManager(filterList);
142

    
143
                int count = 0;
144
                RasterFilter obj = null;
145

    
146
                for (int i = 0; i < stackManager.getRasterFilterList().size(); i++) {
147
                        Class classFilter = (Class) stackManager.getRasterFilterList().get(i);
148

    
149
                        try {
150
                                obj = (RasterFilter) classFilter.newInstance();
151
                                if (!obj.isVisible())
152
                                        continue;
153

    
154
                                // Crear grupos de los filtros
155
                                if (!keys.containsKey(new String(obj.getGroup()))) {
156
                                        keys.put(new String(obj.getGroup()), obj);
157
                                        getTreeListContainer().addClass(new String(obj.getGroup()), count);
158
                                        count++;
159
                                }
160
                                // Crear cada entrada de los filtro
161
                                String[] names = obj.getNames();
162
                                for (int j = 0; j < names.length; j++) {
163
                                        obj.setName(names[j]);
164
                                        getFilterListener().addNewParam(names[j], initFilterParam(obj.getUIParams(names[j])), classFilter);
165
                                        getTreeListContainer().addEntry(PluginServices.getText(this, names[j]), obj.getGroup(), names[j]);
166
                                }
167
                        } catch (InstantiationException e) {
168
                                // No hacer nada, el filtro no lo hemos podido crear
169
                        } catch (IllegalAccessException e) {
170
                                // No hacer nada, el filtro no lo hemos podido crear
171
                        }
172
                }
173

    
174
                getTreeListContainer().getTree().expandRow(0);
175
        }
176

    
177
        /**
178
         * Comprueba que el nombre del filtro esta cargado en las extensiones
179
         * @param filter
180
         * @return
181
         */
182
        private boolean hasThisFilter(String filter) {
183
                RasterFilterList filterList = new RasterFilterList();
184
                RasterFilterListManager stackManager = new RasterFilterListManager(filterList);
185

    
186
                boolean error;
187
                RasterFilter obj = null;
188

    
189
                for (int i = 0; i < stackManager.getRasterFilterList().size(); i++) {
190
                        Class classFilter = (Class) stackManager.getRasterFilterList().get(i);
191
                        error = true;
192

    
193
                        try {
194
                                obj = (RasterFilter) classFilter.newInstance();
195
                                error = false;
196
                        } catch (InstantiationException e) {
197
                        } catch (IllegalAccessException e) {
198
                        }
199

    
200
                        if (!error) {
201
                                String[] names = obj.getNames();
202
                                for (int j = 0; j < names.length; j++)
203
                                        if (filter.equals(names[j]))
204
                                                return true;
205
                        }
206
                }
207
                return false;
208
        }
209

    
210
        /**
211
         * Sirve para a?adir mas parametros genericos por defecto al panel, de momento
212
         * solo he puesto para activar o desactivar un filtro.
213
         * @param params
214
         * @return
215
         */
216
        private Params initFilterParam(Params params) {
217
                params.setParam(PluginServices.getText(this, "enabled"), true + "", Params.CHECK, null);
218
                Param param = params.getParamById(PluginServices.getText(this, "enabled"));
219
                params.getParams().remove(params.getParams().size() - 1);
220
                params.getParams().add(0, param);
221
                return params;
222
        }
223

    
224
        /**
225
         * This method initializes jPanel
226
         * @return javax.swing.JPanel
227
         */
228
        public TreeListContainer getTreeListContainer() {
229
                if (treeListContainer == null) {
230
                        treeListContainer = new TreeListContainer();
231
                        treeListContainer.getTree().expandRow(0);
232
                        treeListContainer.addTreeListListener(getFilterListener());
233
                        treeListContainer.addChangeSelectionListener(getFilterListener());
234
                }
235
                return treeListContainer;
236
        }
237

    
238
        /**
239
         * Obtener el PropertiesComponent del panel de filtros, en caso de no existir,
240
         * lo crea.
241
         * @return
242
         */
243
        public PropertiesComponent getPropertiesComponent() {
244
                if (propertiesComponent == null) {
245
                        propertiesComponent = new PropertiesComponent();
246
                        getCentralPanel().add(propertiesComponent, BorderLayout.CENTER);
247

    
248
                        propertiesComponent.addStateChangedListener(getFilterListener());
249
                }
250
                return propertiesComponent;
251
        }
252

    
253
        /**
254
         * Devuelve el panel donde estar? el widget de preview
255
         * @return
256
         */
257
        private JPanel getPPreview() {
258
                if (jPreview == null) {
259
                        jPreview = new JPanel();
260
                        JPanel jsubpanel = new JPanel();
261
                        JPanel jsubpanel2 = new JPanel();
262
                        jsubpanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null, PluginServices.getText(this, "vista_previa"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
263
                        jsubpanel.setLayout(new BorderLayout());
264
                        jsubpanel2.setBorder(javax.swing.BorderFactory.createEmptyBorder(8, 8, 8, 8));
265
                        jsubpanel2.setLayout(new BorderLayout());
266

    
267
                        jsubpanel.setPreferredSize(new Dimension(192, 192));
268
                        jsubpanel.setMinimumSize(new Dimension(192, 192));
269
                        jsubpanel.setMaximumSize(new Dimension(192, 192));
270

    
271
                        jsubpanel2.add(getImageNavigator(), BorderLayout.CENTER);
272
                        jsubpanel.add(jsubpanel2, BorderLayout.CENTER);
273

    
274
                        jPreview.setLayout(new javax.swing.BoxLayout(jPreview, javax.swing.BoxLayout.Y_AXIS));
275
                        jPreview.add(jsubpanel);
276
                        jPreview.add(panelOptions());
277

    
278
                        panelOptions().setPreferredSize(new Dimension(192, 132));
279
                        panelOptions().setMinimumSize(new Dimension(192, 132));
280
                        panelOptions().setMaximumSize(new Dimension(192, 132));
281
                }
282
                return jPreview;
283
        }
284

    
285
        /**
286
         * @return the jLabelShowFilters
287
         */
288
        public JCheckBox getCBShowFilters() {
289
                if (jCBShowFilters == null) {
290
                        jCBShowFilters = new JCheckBox();
291
                        jCBShowFilters.addActionListener(getFilterListener());
292
                        jCBShowFilters.setSelected(true);
293
                }
294
                return jCBShowFilters;
295
        }
296

    
297
        /**
298
         * Devuelve el Widget del preview, en caso de no existir lo crea.
299
         * @return
300
         */
301
        private ImageNavigator getImageNavigator() {
302
                if (imageNavigator == null) {
303
                        imageNavigator = new ImageNavigator(getFilterListener());
304
                        imageNavigator.setFocusable(true);
305
                        imageNavigator.setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.gray, 1));
306
                }
307
                return imageNavigator;
308
        }
309

    
310
        /**
311
         * Devuelve el panel de Opciones, en caso de no existir, lo crea.
312
         * @return
313
         */
314
        private JPanel panelOptions() {
315
                if (jPanelOptions == null) {
316
                        JPanel jPanel2 = null;
317

    
318
                        ButtonGroup buttonGroup1;
319
                        ButtonGroup buttonGroup2;
320

    
321
                        java.awt.GridBagConstraints gridBagConstraints;
322

    
323
                        buttonGroup1 = new javax.swing.ButtonGroup();
324
                        buttonGroup2 = new ButtonGroup();
325
                        jPanelOptions = new JPanel();
326
                        jPanel2 = new JPanel();
327

    
328
                        jPanelOptions.setLayout(new java.awt.GridBagLayout());
329

    
330
                        gridBagConstraints = new java.awt.GridBagConstraints();
331
                        gridBagConstraints.gridx = 0;
332
                        gridBagConstraints.gridy = 1;
333
                        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
334
                        gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
335
                        jPanelOptions.add(getCBShowFilters(), gridBagConstraints);
336

    
337
                        buttonGroup1.add(getRadioOnlyView());
338

    
339
                        gridBagConstraints = new java.awt.GridBagConstraints();
340
                        gridBagConstraints.gridx = 0;
341
                        gridBagConstraints.gridy = 2;
342
                        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
343
                        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
344
                        jPanelOptions.add(getRadioOnlyView(), gridBagConstraints);
345

    
346
                        buttonGroup1.add(getRadioNewLayer());
347

    
348
                        gridBagConstraints = new java.awt.GridBagConstraints();
349
                        gridBagConstraints.gridx = 0;
350
                        gridBagConstraints.gridy = 3;
351
                        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
352
                        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
353
                        jPanelOptions.add(getRadioNewLayer(), gridBagConstraints);
354

    
355
                        jPanel2.setLayout(new java.awt.GridBagLayout());
356

    
357
                        jPanel2.setBorder(BorderFactory.createTitledBorder(""));
358
                        buttonGroup2.add(getRadioFileGenerate());
359
                        gridBagConstraints = new java.awt.GridBagConstraints();
360
                        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
361
                        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
362
                        jPanel2.add(getRadioFileGenerate(), gridBagConstraints);
363

    
364
                        buttonGroup2.add(getRadioOpenMemory());
365
                        gridBagConstraints = new java.awt.GridBagConstraints();
366
                        gridBagConstraints.gridx = 0;
367
                        gridBagConstraints.gridy = 1;
368
                        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
369
                        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
370
                        jPanel2.add(getRadioOpenMemory(), gridBagConstraints);
371

    
372
                        gridBagConstraints = new java.awt.GridBagConstraints();
373
                        gridBagConstraints.gridx = 0;
374
                        gridBagConstraints.gridy = 4;
375
                        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
376
                        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
377
                        jPanelOptions.add(jPanel2, gridBagConstraints);
378
                }
379

    
380
                return jPanelOptions;
381
        }
382

    
383
        /**
384
         * Devuelve el JRadioButton de generar fichero
385
         * @return
386
         */
387
        public JRadioButton getRadioFileGenerate() {
388
                if (jRBFileGenerate == null) {
389
                        jRBFileGenerate = new JRadioButton();
390
                        jRBFileGenerate.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
391
                        jRBFileGenerate.setMargin(new java.awt.Insets(0, 0, 0, 0));
392
                }
393
                return jRBFileGenerate;
394
        }
395

    
396
        /**
397
         * Devuelve el JRadioButton de Solo vista
398
         * @return
399
         */
400
        public JRadioButton getRadioOnlyView() {
401
                if (jRBOnlyView == null) {
402
                        jRBOnlyView = new JRadioButton();
403
                        jRBOnlyView.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
404
                        jRBOnlyView.setMargin(new java.awt.Insets(0, 0, 0, 0));
405
                }
406
                return jRBOnlyView;
407
        }
408

    
409
        /**
410
         * Devuelve el JRadioButton de nueva capa
411
         * @return
412
         */
413
        public JRadioButton getRadioNewLayer() {
414
                if (jRBNewLayer == null) {
415
                        jRBNewLayer = new JRadioButton();
416
                        jRBNewLayer.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
417
                        jRBNewLayer.setMargin(new java.awt.Insets(0, 0, 0, 0));
418
                        jRBNewLayer.addItemListener(new java.awt.event.ItemListener() {
419
                                public void itemStateChanged(java.awt.event.ItemEvent evt) {
420
                                        jRBNewLayerStateChanged(evt);
421
                                }
422
                        });
423
                        jRBNewLayer.setSelected(true);
424
                }
425
                return jRBNewLayer;
426
        }
427

    
428
        /**
429
         * Devuelve el JRadioButton de Abrir en memoria
430
         * @return
431
         */
432
        public JRadioButton getRadioOpenMemory() {
433
                if (jRBOpenMemory == null) {
434
                        jRBOpenMemory = new JRadioButton();
435
                        jRBOpenMemory.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
436
                        jRBOpenMemory.setMargin(new java.awt.Insets(0, 0, 0, 0));
437

    
438
                        jRBOpenMemory.addItemListener(new java.awt.event.ItemListener() {
439
                                public void itemStateChanged(java.awt.event.ItemEvent evt) {
440
                                        jRBOpenMemoryStateChanged(evt);
441
                                }
442
                        });
443
                        jRBOpenMemory.setSelected(true);
444
                }
445
                return jRBOpenMemory;
446
        }
447

    
448
        /**
449
         * Especificar el nombre de la nueva capa para el recuadro de texto asign?ndo
450
         * en cada llamada un nombre consecutivo.
451
         */
452
        public void setNewLayerText() {
453
                filenameTextField.setText("NewLayer_" + RasterModule.layerCount);
454
                RasterModule.layerCount++;
455
        }
456

    
457
        /**
458
         * This method initializes jPNameFile
459
         *
460
         * @return javax.swing.JPanel
461
         */
462
        private JPanel getJPNameFile() {
463
                if (jPNameFile == null) {
464
                        jPNameFile = new JPanel();
465
                        jPNameFile.setBorder(javax.swing.BorderFactory.createTitledBorder(null, PluginServices.getText(this, "nombre_capa"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
466
                        jPNameFile.add(getLabelFilename());
467
                        jPNameFile.add(getFilenameTextField());
468
                        setNewLayerText();
469
                }
470
                return jPNameFile;
471
        }
472

    
473
        private JLabel getLabelFilename() {
474
                if (labelFilename == null) {
475
                        labelFilename = new JLabel();
476
                }
477
                return labelFilename;
478
        }
479

    
480
        /**
481
         * This method initializes filenameTextField
482
         *
483
         * @return javax.swing.JTextField
484
         */
485
        public JTextField getFilenameTextField() {
486
                if (filenameTextField == null) {
487
                        filenameTextField = new JTextField();
488
                        filenameTextField.setPreferredSize(new Dimension(150, filenameTextField.getPreferredSize().height));
489
                }
490
                return filenameTextField;
491
        }
492

    
493
        /**
494
         * Devuelve el componente <code>FilterListener</code>, que contendr? el
495
         * proceso en si del panel
496
         */
497
        private FilterListener getFilterListener() {
498
                if (filterListener == null) {
499
                        filterListener = new FilterListener(this);
500
                }
501

    
502
                return filterListener;
503
        }
504

    
505
        /**
506
         * Devuelve el FLayer asignado al panel
507
         * @return
508
         */
509
        public FLayer getLayer() {
510
                return fLayer;
511
        }
512

    
513
        /**
514
         * Definir el FLayer del panel, haciendo todas las cargas necesarias despues
515
         * de especificarlo.
516
         * @param layer
517
         */
518
        public void setLayer(FLayer layer) {
519
                this.fLayer = layer;
520
                View view = (View) PluginServices.getMDIManager().getActiveWindow();
521
                viewName = PluginServices.getMDIManager().getWindowInfo(view).getTitle();
522

    
523
                Extent extent2 = ((FLyrRasterSE) fLayer).getDatasource().getExtent();
524
                getImageNavigator().setViewDimensions(extent2.getMin().getX(), extent2.getMax().getY(), extent2.getMax().getX(), extent2.getMin().getY());
525
                getImageNavigator().setZoom(1.0/((FLyrRasterSE) fLayer).getDatasource().getXCellSize());
526
                getImageNavigator().imageCenter();
527
                getImageNavigator().updateBuffer();
528

    
529
                Rendering rendering = ((FLyrRasterSE) layer).getRender();
530
                RasterFilterList rfl = rendering.getFilterList();
531

    
532
                filterStatus = rfl.getStatusCloned();
533

    
534
                /**
535
                 *  Carga el listado de filtros que ya estaban aplicados en la capa al abrir
536
                 */
537
                int i = 0;
538
                boolean filters = false;
539
                while (rfl.get(i) != null) {
540
                        DefaultListModel list = (DefaultListModel) getTreeListContainer().getListModel();
541
                        if (rfl.get(i).isVisible() && hasThisFilter(rfl.get(i).getName())) {
542
                                list.addElement(PluginServices.getText(this, rfl.get(i).getName()));
543
                                for (int j = 0; j < getFilterListener().getParamsList().size(); j++) {
544
                                        if (((ParamStruct) getFilterListener().getParamsList().get(j)).getFilterName().equals(rfl.get(i).getName())) {
545
                                                filters = true;
546
                                                ((ParamStruct) getFilterListener().getParamsList().get(j)).setFilterParam(initFilterParam(rfl.get(i).getUIParams(rfl.get(i).getName())));
547
                                        }
548
                                }
549
                        }
550

    
551
                        i++;
552
                }
553

    
554
                // Si existen filtros ya en la capa, pondremos los RadioButton para que
555
                // los cambios se hagan sobre la visualizaci?n
556
                if (filters)
557
                        getRadioOnlyView().setSelected(true);
558

    
559
                // Selecciona el primer item del arbol
560
                TreeListContainer lc = getTreeListContainer();
561
                lc.getTree().expandRow(1);
562
                lc.getTree().setSelectionInterval(2, 2);
563
        }
564

    
565
        /**
566
         * Obtiene el nombre de la vista
567
         * @return
568
         */
569
        public String getViewName() {
570
                return viewName;
571
        }
572

    
573
        /**
574
         * Poner los estados de los RadioButton en caso de que cambien de valor
575
         * @param evt
576
         */
577
        private void jRBNewLayerStateChanged(java.awt.event.ItemEvent evt) {
578
                if (getRadioNewLayer().getSelectedObjects() != null) {
579
                        getRadioFileGenerate().setEnabled(true);
580
                        getRadioOpenMemory().setEnabled(true);
581
                        if (getRadioOpenMemory().getSelectedObjects() != null)
582
                                setFilenameEnabled(true);
583
                        else
584
                                setFilenameEnabled(false);
585
                } else {
586
                        getRadioFileGenerate().setEnabled(false);
587
                        getRadioOpenMemory().setEnabled(false);
588
                        setFilenameEnabled(false);
589
                }
590
        }
591

    
592
        private void setFilenameEnabled(boolean value) {
593
                getFilenameTextField().setEnabled(value);
594
                getLabelFilename().setEnabled(value);
595
        }
596

    
597
        /**
598
         * Poner los estados de los RadioButton en caso de que cambien de valor
599
         * @param evt
600
         */
601
        private void jRBOpenMemoryStateChanged(java.awt.event.ItemEvent evt) {
602
                if (getRadioOpenMemory().getSelectedObjects() != null) {
603
                        setFilenameEnabled(true);
604
                } else {
605
                        setFilenameEnabled(false);
606
                }
607
        }
608

    
609
        /**
610
         * Asigna el t?tulo al panel
611
         * @param title T?tulo del panel
612
         */
613
        public void setTitle(String title) {
614
                getPropertiesComponent().setBorder(BorderFactory.createTitledBorder(null, PluginServices.getText(this, "filtro_de") + " " + PluginServices.getText(this, title), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
615
        }
616

    
617
        /**
618
         * Actualizamos la vista previa
619
         */
620
        public void refreshPreview() {
621
                getImageNavigator().updateBuffer();
622
        }
623

    
624
        /**
625
         * Volvemos todo a la normalidad cuando se cancela
626
         */
627
        public void cancel() {
628
                getLayer().getMapContext().invalidate();
629
        }
630

    
631
        /**
632
         * Volvemos todo a la normalidad cuando se cancela
633
         */
634
        public void restoreFilters() {
635
                Rendering rendering = ((FLyrRasterSE) getLayer()).getRender();
636
                rendering.getFilterList().setStatus(filterStatus);
637
        }
638

    
639
        /**
640
         * Asignar un nuevo componente de PropertiesComponent, eliminando el anterior
641
         * que hubiera.
642
         * @param component
643
         * @param name
644
         */
645
        public void setNewPropertiesComponent(PropertiesComponent component, String name) {
646
                getPropertiesComponent().setVisible(false);
647
                this.remove(propertiesComponent);
648
                propertiesComponent = null;
649
                propertiesComponent = component;
650
                getCentralPanel().add(propertiesComponent, BorderLayout.CENTER);
651
                propertiesComponent.addStateChangedListener(getFilterListener());
652
                setTitle(name);
653
                this.validate();
654
        }
655

    
656
        /**
657
         * Cuando se aceptan los cambios en el panel ejecutaremos el aceptar del
658
         * listener
659
         */
660
        public void accept() {
661
                filterListener.accept();
662
        }
663

    
664
        /**
665
         * Devuelve el arrayList de filtros inicial
666
         * @return
667
         */
668
        public ArrayList getFilterStatus() {
669
                return filterStatus;
670
        }
671
}