Statistics
| Revision:

root / trunk / extensions / extRasterTools-SE / src / org / gvsig / rastertools / properties / panels / PanSharpeningPanel.java @ 18061

History | View | Annotate | Download (20.7 KB)

1 12597 amunoz
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2007 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.properties.panels;
20
21
import java.awt.Component;
22
import java.awt.Dimension;
23
import java.awt.FlowLayout;
24
import java.awt.GridBagConstraints;
25
import java.awt.GridBagLayout;
26
import java.awt.event.ActionEvent;
27
import java.awt.event.ActionListener;
28
import java.awt.image.DataBuffer;
29
import java.io.File;
30
import java.util.Vector;
31
32
import javax.swing.AbstractCellEditor;
33
import javax.swing.ButtonGroup;
34
import javax.swing.JCheckBox;
35
import javax.swing.JPanel;
36
import javax.swing.JRadioButton;
37
import javax.swing.JScrollPane;
38
import javax.swing.JSlider;
39
import javax.swing.JTable;
40
import javax.swing.JTextField;
41
import javax.swing.SwingConstants;
42
import javax.swing.SwingUtilities;
43
import javax.swing.event.TableModelEvent;
44
import javax.swing.event.TableModelListener;
45
import javax.swing.table.DefaultTableModel;
46
import javax.swing.table.TableCellEditor;
47
import javax.swing.table.TableCellRenderer;
48
import javax.swing.table.TableColumn;
49
50 13277 nacho
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
51 13599 bsanchez
import org.gvsig.fmap.raster.layers.IRasterLayerActions;
52 15781 bsanchez
import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
53 13599 bsanchez
import org.gvsig.gui.util.StatusComponent;
54 13328 nacho
import org.gvsig.raster.dataset.IRasterDataSource;
55 12597 amunoz
import org.gvsig.raster.grid.filter.RasterFilterList;
56
import org.gvsig.raster.hierarchy.IRasterDataset;
57
import org.gvsig.raster.hierarchy.IRasterProperties;
58
import org.gvsig.raster.hierarchy.IRasterRendering;
59
import org.gvsig.rastertools.properties.control.PanSharpeningControl;
60
61
import com.iver.andami.PluginServices;
62
import com.iver.cit.gvsig.fmap.layers.FLayer;
63
64
/**
65
 * Selecciona las bandas visibles en un raster. Contiene una tabla con una fila por cada
66 15804 bsanchez
 * banda de la imagen. Por medio de checkbox se selecciona para cada RGB que banda de la
67
 * imagen ser? visualizada.
68 12597 amunoz
 * @author Luis W. Sevilla (sevilla_lui@gva.es)
69
 * @author Nacho Brodin (brodin_ign@gva.es)
70
 */
71
72 15781 bsanchez
public class PanSharpeningPanel extends AbstractPanel implements TableModelListener {
73 13599 bsanchez
        final private static long serialVersionUID = 0;
74 15804 bsanchez
75 13599 bsanchez
        private String                nom                = "Pansharp";
76
        private JTable                rgbTable           = null;
77
        private JScrollPane           bandPane           = null;
78
        private BandTableModel        tableModel         = null;
79
        private int                   sizeX              = 445;
80
        private int                   sizeY              = 174;
81
        private JPanel                activationPanel    = null;
82
        private JCheckBox             cbActiveSharpening = null;
83
        private JPanel                pSharpNorth        = null;
84
        private JPanel                pSharpSouth        = null;
85
        private JRadioButton          rbBrovey           = null;
86
        private JRadioButton          rbHSL              = null;
87
        private JPanel                pHSL               = null;
88
        private JSlider               jSlider            = null;
89
        private JTextField            jTextField         = null;
90
        private JPanel                pBrovey            = null;
91
        private JSlider               slBrovey           = null;
92
        private JTextField            jTextField1        = null;
93
        private PanSharpeningControl  pansharpControl    = null;
94
        private IRasterProperties     prop               = null;
95
        private IRasterDataset        dataset            = null;
96
        FLayer                        fLayer             = null;
97
        private final static String[] columnNames        = { " ", "Band" };
98 12597 amunoz
99 15804 bsanchez
        public PanSharpeningPanel()
100 12597 amunoz
        {
101
                super();
102 15781 bsanchez
                setLabel(PluginServices.getText(this, "pansharp"));
103 12597 amunoz
                initialize();
104
        }
105
106 15804 bsanchez
107 15781 bsanchez
        protected void initialize() {
108 17047 nbrodin
                this.setPreferredSize(new Dimension(sizeX, sizeY));
109
                this.setLayout(new FlowLayout());
110
                this.setLocation(0, 0);
111
                this.setSize(445, 239);
112
                this.add(getPSharpNorth(), null);
113
                this.setTableEnabled(false);
114
                this.setPreferredSize(new Dimension(100, 80));
115
        }
116 12597 amunoz
117 15804 bsanchez
                /*
118
                 * (non-Javadoc)
119 17047 nbrodin
                 *
120 15804 bsanchez
                 * @see org.gvsig.raster.gui.properties.dialog.IRegistrablePanel#initializeUI()
121
                 */
122
                public void initializeUI() {
123
                }
124
125
                /**
126
                 * Obtiene el nombre del panel
127
                 * @return Cadena con el nombre del panel
128
                 */
129
                public String getName(){
130
                        return this.nom;
131
                }
132
133
                /**
134
                 * Activa o desactiva la tabla de selecci?n de banda de refinado
135
                 * @param enable
136
                 */
137
                public void setTableEnabled(boolean enabled){
138
                        this.getRBandPane().setEnabled(enabled);
139
                                this.getBandTable().setEnabled(enabled);
140
                                this.getJSlider().setEnabled(enabled);
141
                                this.getJSlider1().setEnabled(enabled);
142
                                this.getJTextField().setEnabled(enabled);
143
                                this.getJTextField1().setEnabled(enabled);
144
                                this.getRbBrovey().setEnabled(enabled);
145
                                this.getRbHSL().setEnabled(enabled);
146
                }
147
148
                /**
149
                 * Determina el bandtype de de cada banda y a?ade la banda a la tabla
150
                 * */
151
                public void addFiles(IRasterDataSource mDataset) {
152
                        for (int i = 0; i < mDataset.getDatasetCount(); i++) {
153 13328 nacho
                        String fName = mDataset.getDataset(i)[0].getFName();
154 12597 amunoz
155
                        String bandName = new File(fName).getName();
156
                        String bandType = "";
157
158
159 13377 nacho
                        switch (mDataset.getDataset(i)[0].getDataType()[0]) {
160 12597 amunoz
                        case DataBuffer.TYPE_BYTE:
161
                                bandType = "8U";
162
                                break;
163
                        case DataBuffer.TYPE_INT:
164
                                bandType = "32";
165
                                break;
166
                        case DataBuffer.TYPE_DOUBLE:
167
                                bandType = "64";
168
                                break;
169
                        case DataBuffer.TYPE_FLOAT:
170
                                bandType = "32";
171
                                break;
172
                        case DataBuffer.TYPE_SHORT:
173
                                bandType = "16";
174
                                break;
175
                        case DataBuffer.TYPE_USHORT:
176
                                bandType = "16U";
177
                                break;
178
                        case DataBuffer.TYPE_UNDEFINED:
179
                                bandType = "??";
180
                                break;
181
                }
182 15804 bsanchez
183 13328 nacho
                        for (int b = 0; b < mDataset.getDataset(i)[0].getBandCount(); b++)
184 12597 amunoz
                                addBand((b + 1) + " [" + bandType + "] " + bandName);
185 15804 bsanchez
186
                                }
187
                }
188
189
                // A?ade una fila a la tabla
190
                private void addBand(String bandName) {
191 12597 amunoz
                Vector v = new Vector();
192
                v.add(new Boolean(false));
193
                v.add(bandName);
194
                ((DefaultTableModel) getBandTable().getModel()).addRow(v);
195
        }
196 15804 bsanchez
197
198
                public JTable getBandTable() {
199
                                if (rgbTable == null) {
200
                                                tableModel = new BandTableModel();
201
                                                tableModel.addTableModelListener(this);
202
                                                rgbTable = new JTable(tableModel);
203
                                                rgbTable.setPreferredScrollableViewportSize(new Dimension(300, 60));
204
                                }
205
                                return rgbTable;
206
                }
207
208
                /**
209
                 * Traducciones del panel
210
                 */
211
                public void setTranslation(){
212
                        this.getCbActiveSharpening().setText(PluginServices.getText(this,"onSharpening"));
213 12597 amunoz
                this.getPSharpNorth().setBorder(javax.swing.BorderFactory.createTitledBorder(null, PluginServices.getText(this,"selectBandaRefinado"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
214 15804 bsanchez
                }
215 12597 amunoz
216 15804 bsanchez
                /**
217
                 * This method initializes jTable
218
                 *
219
                 * @return javax.swing.JTable
220
                 */
221
                public JScrollPane getRBandPane() {
222
                                if (bandPane == null) {
223
                                                bandPane = new JScrollPane(getBandTable());
224
                                                bandPane.setPreferredSize(new java.awt.Dimension(400,100));
225
                                                bandPane.setEnabled(true);
226
                                                TableColumn column = null;
227 12597 amunoz
228 15804 bsanchez
                                                for (int i = 0; i < 1; i++) {
229
                                                         column = rgbTable.getColumnModel().getColumn(i);
230
                                                         column.setCellRenderer((TableCellRenderer) new RadioColumnRenderer());
231
                                                         column.setCellEditor((TableCellEditor) new RadioColumnEditor());
232
                                                         column.setMaxWidth(22);
233
                                                         column.setMinWidth(22);
234
                                        }
235
                                }
236
                                return bandPane;
237
                }
238 12597 amunoz
239 15804 bsanchez
                /**
240
                 * Obtiene el n?mero de bandas de la lista
241
                 * @return
242
                 */
243
                public int getNBands() {
244
                                return ((DefaultTableModel) rgbTable.getModel()).getRowCount();
245
                }
246
247
                /**
248
                 * Obtiene el nombre de la banda de la posici?n i de la tabla
249
                 * @param i
250
                 * @return
251
                 */
252
                public String getBandName(int i) {
253
                                String s = (String) ((DefaultTableModel) rgbTable.getModel()).getValueAt(i, 1);
254
                                return s.substring(s.lastIndexOf("[8U]") + 5, s.length());
255
                }
256
257
                /**
258
                 * Selecciona una banda de la tabla.
259
                 * @param i
260
                 */
261
                public void selectRow(int i){
262
                        ((DefaultTableModel) rgbTable.getModel()).setValueAt(new Boolean(true),i,0);
263
                }
264
265
                /**
266
                 * Elimina todas las filas seleccionadas
267
                 */
268
                public void removeSelections(){
269
                        for(int i=0;i<((DefaultTableModel) rgbTable.getModel()).getRowCount();i++){
270
                                ((DefaultTableModel) rgbTable.getModel()).setValueAt(new Boolean(false),i,0);
271
                        }
272
                }
273
274
275 12597 amunoz
        public JPanel getPSharpNorth() {
276
                if (pSharpNorth == null) {
277
                        GridBagConstraints gridBagConstraints10 = new GridBagConstraints();
278
                        gridBagConstraints10.gridx = 0;
279
                        gridBagConstraints10.gridy = 1;
280
                        GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
281
                        GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
282
                        pSharpNorth = new JPanel();
283
                        pSharpNorth.setLayout(new GridBagLayout());
284
                        pSharpNorth.setPreferredSize(new java.awt.Dimension(440,259));
285
                        pSharpNorth.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Selector de banda de refinado", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
286
                        gridBagConstraints2.gridx = 0;
287
                        gridBagConstraints2.gridy = 0;
288
                        gridBagConstraints2.anchor = java.awt.GridBagConstraints.WEST;
289
                        gridBagConstraints2.gridwidth = 0;
290
                        gridBagConstraints2.gridheight = 1;
291
                        gridBagConstraints3.gridx = 0;
292
                        gridBagConstraints3.gridy = 2;
293
                        gridBagConstraints3.weightx = 0.0D;
294
                        gridBagConstraints3.weighty = 0.0D;
295
                        gridBagConstraints3.fill = java.awt.GridBagConstraints.NONE;
296
                        gridBagConstraints3.ipadx = 0;
297
                        gridBagConstraints3.ipady = 0;
298
                        gridBagConstraints3.insets = new java.awt.Insets(0,0,0,0);
299
                        gridBagConstraints3.gridheight = 0;
300
                        gridBagConstraints3.gridwidth = 0;
301
                        pSharpNorth.add(getActivationPanel(), gridBagConstraints2);
302
                        pSharpNorth.add(getRBandPane(), gridBagConstraints3);
303
                        pSharpNorth.add(getPSharpSouth(), gridBagConstraints10);
304
                }
305
                return pSharpNorth;
306
        }
307 15804 bsanchez
308 12597 amunoz
        private JPanel getActivationPanel() {
309
                if (activationPanel == null) {
310
                        FlowLayout flowLayout = new FlowLayout();
311
                        flowLayout.setAlignment(java.awt.FlowLayout.LEFT);
312
                        flowLayout.setVgap(0);
313
                        flowLayout.setHgap(0);
314
                        activationPanel = new JPanel();
315
                        activationPanel.setLayout(flowLayout);
316
                        activationPanel.setPreferredSize(new java.awt.Dimension(340,30));
317
                        activationPanel.add(getCbActiveSharpening(), null);
318
                }
319
                return activationPanel;
320
        }
321 15804 bsanchez
322 12597 amunoz
        public JCheckBox getCbActiveSharpening() {
323
                if (cbActiveSharpening == null) {
324
                        cbActiveSharpening = new JCheckBox();
325
                        cbActiveSharpening.setText("Activar Pansharpening");
326
                        cbActiveSharpening.setPreferredSize(new java.awt.Dimension(150,23));
327
                        cbActiveSharpening.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
328
                }
329
                return cbActiveSharpening;
330
        }
331 15804 bsanchez
332
333 12597 amunoz
        private JPanel getPSharpSouth() {
334
                if (pSharpSouth == null) {
335
                        GridBagConstraints gridBagConstraints8 = new GridBagConstraints();
336
                        GridBagConstraints gridBagConstraints9 = new GridBagConstraints();
337
                        pSharpSouth = new JPanel();
338
                        pSharpSouth.setLayout(new GridBagLayout());
339
                        pSharpSouth.setPreferredSize(new java.awt.Dimension(410,62));
340
                        gridBagConstraints9.gridy = 1;
341
                        gridBagConstraints8.gridy = 0;
342
                        pSharpSouth.add(getJPanel(), gridBagConstraints8);
343
                        ButtonGroup group = new ButtonGroup();
344
                        group.add(getRbBrovey());
345
                        group.add(getRbHSL());
346
                        gridBagConstraints9.ipadx = 0;
347
                        pSharpSouth.add(getPKernel(), gridBagConstraints9);
348
                }
349
                return pSharpSouth;
350
        }
351
        /**
352 15804 bsanchez
         * This method initializes jRadioButton
353
         *
354
         * @return javax.swing.JRadioButton
355
         */
356 12597 amunoz
        public JRadioButton getRbBrovey() {
357
                if (rbBrovey == null) {
358
                        rbBrovey = new JRadioButton();
359
                        rbBrovey.setText("Brovey");
360
                        rbBrovey.setPreferredSize(new java.awt.Dimension(70,23));
361
                        rbBrovey.setSelected(true);
362
                }
363
                return rbBrovey;
364
        }
365
        /**
366 15804 bsanchez
         * This method initializes jRadioButton
367
         *
368
         * @return javax.swing.JRadioButton
369
         */
370 12597 amunoz
        public JRadioButton getRbHSL() {
371
                if (rbHSL == null) {
372
                        rbHSL = new JRadioButton();
373
                        rbHSL.setText("HSL");
374
                        rbHSL.setPreferredSize(new java.awt.Dimension(70,23));
375
                }
376
                return rbHSL;
377
        }
378
        /**
379 15804 bsanchez
         * This method initializes jPanel
380
         *
381
         * @return javax.swing.JPanel
382
         */
383 12597 amunoz
        private JPanel getPKernel() {
384
                if (pHSL == null) {
385
                        GridBagConstraints gridBagConstraints7 = new GridBagConstraints();
386
                        GridBagConstraints gridBagConstraints6 = new GridBagConstraints();
387
                        GridBagConstraints gridBagConstraints5 = new GridBagConstraints();
388
                        pHSL = new JPanel();
389
                        pHSL.setLayout(new GridBagLayout());
390
                        pHSL.setPreferredSize(new java.awt.Dimension(400,30));
391
                        gridBagConstraints5.gridx = 0;
392
                        gridBagConstraints5.gridy = 0;
393
                        gridBagConstraints5.insets = new java.awt.Insets(0,0,0,0);
394
                        gridBagConstraints5.gridheight = 0;
395
                        gridBagConstraints6.gridx = 1;
396
                        gridBagConstraints6.gridwidth = 1;
397
                        gridBagConstraints6.gridy = 0;
398
                        gridBagConstraints6.weightx = 1.0;
399
                        gridBagConstraints6.fill = java.awt.GridBagConstraints.HORIZONTAL;
400
                        gridBagConstraints6.insets = new java.awt.Insets(0,0,0,0);
401
                        gridBagConstraints6.gridheight = 0;
402
                        gridBagConstraints7.weightx = 1.0D;
403
                        gridBagConstraints7.weighty = 1.0D;
404
                        gridBagConstraints7.gridwidth = 1;
405
                        gridBagConstraints7.fill = java.awt.GridBagConstraints.HORIZONTAL;
406
                        gridBagConstraints7.gridheight = 1;
407
                        gridBagConstraints7.gridy = 0;
408
                        gridBagConstraints7.gridx = 2;
409
                        pHSL.add(getJTextField(), gridBagConstraints7);
410
                        pHSL.add(getRbHSL(), gridBagConstraints5);
411
                        pHSL.add(getJSlider(), gridBagConstraints6);
412
                        this.getJSlider().setValue(0);
413
                }
414
                return pHSL;
415
        }
416
        /**
417 15804 bsanchez
         * This method initializes jSlider
418
         *
419
         * @return javax.swing.JSlider
420
         */
421 12597 amunoz
        public JSlider getJSlider() {
422
                if (jSlider == null) {
423
                        jSlider = new JSlider();
424
                        jSlider.setMinimum(0);
425
                        jSlider.setPreferredSize(new java.awt.Dimension(180,16));
426
                        jSlider.setMaximum(100);
427 15804 bsanchez
428 12597 amunoz
                }
429
                return jSlider;
430
        }
431
        /**
432 15804 bsanchez
         * This method initializes jTextField
433
         *
434
         * @return javax.swing.JTextField
435
         */
436 12597 amunoz
        public JTextField getJTextField() {
437
                if (jTextField == null) {
438
                        jTextField = new JTextField();
439
                        jTextField.setPreferredSize(new java.awt.Dimension(20,19));
440
                        jTextField.setText("0.0");
441
                }
442
                return jTextField;
443
        }
444
445 15804 bsanchez
446 12597 amunoz
        /**
447 15804 bsanchez
         * This method initializes jPanel
448
         *
449
         * @return javax.swing.JPanel
450 12597 amunoz
         */
451
        private JPanel getJPanel() {
452
                if (pBrovey == null) {
453
                        GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
454
                        gridBagConstraints11.fill = java.awt.GridBagConstraints.HORIZONTAL;
455
                        gridBagConstraints11.gridx = 2;
456
                        gridBagConstraints11.gridy = 0;
457
                        gridBagConstraints11.weighty = 1.0D;
458
                        gridBagConstraints11.weightx = 1.0;
459
                        GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
460
                        gridBagConstraints1.fill = java.awt.GridBagConstraints.HORIZONTAL;
461
                        gridBagConstraints1.gridheight = 0;
462
                        gridBagConstraints1.gridx = 1;
463
                        gridBagConstraints1.gridy = 0;
464
                        gridBagConstraints1.weightx = 1.0;
465
                        GridBagConstraints gridBagConstraints = new GridBagConstraints();
466
                        gridBagConstraints.anchor = java.awt.GridBagConstraints.CENTER;
467
                        gridBagConstraints.gridy = 0;
468
                        gridBagConstraints.gridheight = 0;
469
                        gridBagConstraints.gridx = 0;
470
                        pBrovey = new JPanel();
471
                        pBrovey.setLayout(new GridBagLayout());
472
                        pBrovey.setPreferredSize(new java.awt.Dimension(400,30));
473
                        pBrovey.add(getRbBrovey(), gridBagConstraints);
474
                        pBrovey.add(getJSlider1(), gridBagConstraints1);
475
                        this.getJSlider1().setValue(0);
476
                        pBrovey.add(getJTextField1(), gridBagConstraints11);
477
                }
478
                return pBrovey;
479
        }
480
481
        /**
482 15804 bsanchez
         * This method initializes jSlider1
483
         *
484
         * @return javax.swing.JSlider
485 12597 amunoz
         */
486
        public JSlider getJSlider1() {
487
                if (slBrovey == null) {
488
                        slBrovey = new JSlider();
489
                        slBrovey.setMaximum(100);
490
                        slBrovey.setPreferredSize(new java.awt.Dimension(180,16));
491 15804 bsanchez
492 12597 amunoz
                }
493
                return slBrovey;
494
        }
495
496
        /**
497 15804 bsanchez
         * This method initializes jTextField1
498
         *
499
         * @return javax.swing.JTextField
500 12597 amunoz
         */
501
        public JTextField getJTextField1() {
502
                if (jTextField1 == null) {
503
                        jTextField1 = new JTextField();
504
                        jTextField1.setPreferredSize(new java.awt.Dimension(20,19));
505
                        jTextField1.setText("0");
506
                }
507
                return jTextField1;
508
        }
509 15804 bsanchez
510
511
512 12597 amunoz
        /*
513
         * Actualiza por si hay variaciones*/
514
        private void refresh() {
515 15781 bsanchez
                setReference(fLayer);
516 12597 amunoz
        }
517
518
        public void accept() {
519
                pansharpControl.accept();
520
        }
521
522
        /**
523
         * Aplicar los cambios sin guardar su estado
524
         */
525
        public void apply() {
526
                pansharpControl.apply();
527
        }
528
529
        public void cancel() {
530
                pansharpControl.cancel();
531
        }
532
533
        public void setComponentSize(int w, int h) {
534 15804 bsanchez
535 12597 amunoz
        }
536 15804 bsanchez
537 15781 bsanchez
        public void setReference(Object ref) {
538
                super.setReference(ref);
539 15804 bsanchez
540 15781 bsanchez
                if (!(ref instanceof FLayer))
541
                        return;
542 15804 bsanchez
543 15781 bsanchez
                FLayer lyr = (FLayer) ref;
544
545 12597 amunoz
                fLayer = lyr;
546 13599 bsanchez
                actionEnabled();
547 12618 amunoz
                clear();
548
                //getFileList().clear();
549
550 12597 amunoz
                RasterFilterList rfl = null;
551 12618 amunoz
552
                /*if (lyr instanceof IRasterDataset)
553
                        dataset = (IRasterDataset) lyr;*/
554
                if (lyr instanceof IRasterProperties)
555
                        rfl = (((IRasterProperties) lyr).getRenderFilterList());
556 15804 bsanchez
557 12618 amunoz
                if (lyr instanceof IRasterProperties)
558
                        prop = (IRasterProperties) lyr;
559
560 12597 amunoz
                if (lyr instanceof IRasterRendering) {
561 13311 nacho
                        if (((IRasterRendering) lyr).existColorTable() && pansharpControl != null) {
562 12597 amunoz
                                pansharpControl.init(null, null, lyr);
563
                                this.setEnabled(false);
564
                                return;
565
                        }
566
                }
567
568
                this.setEnabled(true);
569
570
                if (lyr instanceof IRasterDataset) {
571
                        dataset = (IRasterDataset) lyr;
572 13328 nacho
                        addFiles(dataset.getDataSource());
573 12597 amunoz
                }
574 12618 amunoz
575 15781 bsanchez
                pansharpControl= new PanSharpeningControl(getPanelGroup(), this, (IRasterDataset)dataset,prop, lyr,rfl);
576 15804 bsanchez
577 12597 amunoz
        }
578 15804 bsanchez
579 13599 bsanchez
        private void actionEnabled() {
580 15804 bsanchez
                FLyrRasterSE fLyrRasterSE = ((FLyrRasterSE) fLayer);
581 13599 bsanchez
582 15804 bsanchez
                if (!fLyrRasterSE.isActionEnabled(IRasterLayerActions.PANSHARPENING))
583
                        StatusComponent.setDisabled(getPSharpNorth());
584 12597 amunoz
585 15804 bsanchez
                if (!fLyrRasterSE.isActionEnabled(IRasterLayerActions.PANSHARPENING))
586
                        setVisible(false);
587
                else
588
                        setVisible(true);
589 13259 nacho
        }
590 15804 bsanchez
591 13277 nacho
        /*
592
         * (non-Javadoc)
593
         * @see org.gvsig.raster.gui.properties.dialog.IRegistrablePanel#getLayerClass()
594
         */
595
        public Class getLayerClass() {
596
                return FLyrRasterSE.class;
597
        }
598 13259 nacho
599 12597 amunoz
        /**
600
         * Elimina todas las entradas de la tabla de bandas.
601
         */
602
        private void clear() {
603
                int rows = ((DefaultTableModel) getBandTable().getModel()).getRowCount();
604
                if (rows > 0) {
605
                        for (int i = 0; i < rows; i++)
606
                                ((DefaultTableModel) getBandTable().getModel()).removeRow(0);
607
                }
608
        }
609 15804 bsanchez
610
611
612 12597 amunoz
         class RadioColumnEditor extends AbstractCellEditor implements TableCellEditor {
613
                        final private static long serialVersionUID = -3370601314380922368L;
614
                        public JRadioButton       theRadioButton;
615
616
                        public RadioColumnEditor() {
617
                                super();
618
                                theRadioButton = new JRadioButton();
619
                                theRadioButton.addActionListener(new ActionListener() {
620
                                        public void actionPerformed(ActionEvent event) {
621
                                                fireEditingStopped();
622
                                                //setMode(mode);
623
                                                //onlyApply();
624
                                        }
625
                                });
626
                        }
627
628
                        public Component getTableCellEditorComponent(JTable table, Object obj, boolean isSelected, int row, int col) {
629
                                theRadioButton.setHorizontalAlignment(SwingUtilities.CENTER);
630
631
                                Boolean lValueAsBoolean = (Boolean) obj;
632
                                theRadioButton.setSelected(lValueAsBoolean.booleanValue());
633
634
                                return theRadioButton;
635
                        }
636
637
                        public Object getCellEditorValue() {
638
                                return new Boolean(theRadioButton.isSelected());
639
                        }
640
                }
641
642
                class RadioColumnRenderer extends JRadioButton implements TableCellRenderer {
643
                        final private static long serialVersionUID = -3370601314380922368L;
644
645
                        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
646
                                if (value == null) {
647
                                        this.setSelected(false);
648
                                }
649
650
                                Boolean ValueAsBoolean = (Boolean) value;
651
                                this.setSelected(ValueAsBoolean.booleanValue());
652
                                this.setHorizontalAlignment(SwingConstants.CENTER);
653
654
                                return this;
655
                        }
656
                }
657 15804 bsanchez
658
                        // Modelo de la tabla que contiene las bandas
659
                        class BandTableModel extends DefaultTableModel {
660 12597 amunoz
                        final private static long serialVersionUID = -3370601314380922368L;
661
                         // String de con las cabeceras de la tabla
662 15804 bsanchez
663 12597 amunoz
                        public BandTableModel() {
664
                                super(new Object[0][2], columnNames);
665
                        }
666
667
                        public Class getColumnClass(int c) {
668
                                if (c < 1) {
669
                                        return Boolean.class;
670
                                }
671
672
                                return String.class;
673
                        }
674
675
676
                         public void addNew() {
677 15804 bsanchez
                                                                super.addRow(new Object[] { new Boolean(false), ""});
678
                                                }
679
680 12597 amunoz
                         public void addRow(){
681
                                addRow(new Object[] { new Boolean(false), ""});
682 15804 bsanchez
683 12597 amunoz
                         }
684
                        public void setValueAt(Object value, int row, int col) {
685
                                if ((col < 1) && ((Boolean) value).booleanValue()) {
686
                                        for (int i = 0; i < getRowCount(); i++) {
687
                                                if (i != row) {
688
                                                        setValueAt(new Boolean(false), i, col);
689
                                                }
690
                                        }
691
                                }
692
693
                                super.setValueAt(value, row, col);
694 15804 bsanchez
                        }
695 12597 amunoz
                }
696
697
                public void tableChanged(TableModelEvent arg0) {
698 15804 bsanchez
699 12597 amunoz
                }
700 15804 bsanchez
701 15781 bsanchez
                public void selected() {
702
                        refresh();
703
                }
704
}