Statistics
| Revision:

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

History | View | Annotate | Download (20.9 KB)

1
/* 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
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
51
import org.gvsig.raster.dataset.IRasterDataSource;
52
import org.gvsig.raster.grid.filter.RasterFilterList;
53
import org.gvsig.raster.gui.properties.dialog.IRegistrablePanel;
54
import org.gvsig.raster.hierarchy.IRasterDataset;
55
import org.gvsig.raster.hierarchy.IRasterProperties;
56
import org.gvsig.raster.hierarchy.IRasterRendering;
57
import org.gvsig.rastertools.properties.control.PanSharpeningControl;
58

    
59
import com.iver.andami.PluginServices;
60
import com.iver.cit.gvsig.fmap.layers.FLayer;
61

    
62
/**
63
 * Selecciona las bandas visibles en un raster. Contiene una tabla con una fila por cada
64
 * banda de la imagen. Por medio de checkbox se selecciona para cada RGB que banda de la 
65
 * imagen ser? visualizada. 
66
 * @author Luis W. Sevilla (sevilla_lui@gva.es)
67
 * @author Nacho Brodin (brodin_ign@gva.es)
68
 */
69

    
70
public class PanSharpeningPanel extends JPanel implements IRegistrablePanel,TableModelListener {
71

    
72
        final private static long               serialVersionUID = 0;
73
        
74
         private String                                                 nom = "Pansharp";
75
         private JTable                                                 rgbTable = null;
76
         private JScrollPane                                         bandPane = null;
77
         private BandTableModel                                 tableModel = null;
78
         private int                                                         sizeX = 445;
79
         private int                                                         sizeY = 174;
80
         private JPanel                                                        activationPanel = null;
81
         private JCheckBox                                                 cbActiveSharpening = null;
82
         private JPanel                                                 pSharpNorth = null;
83
         private JPanel                                                 pSharpSouth = null;
84
         private JRadioButton                                         rbBrovey = null;
85
         private JRadioButton                                         rbHSL = null;
86
         private JPanel                                                 pHSL = null;
87
         private JSlider                                                 jSlider = null;
88
         private JTextField                                         jTextField = null;
89
         private JPanel                                                 pBrovey = null;
90
         private JSlider                                                 slBrovey = null;
91
         private JTextField                                         jTextField1 = null;
92
         private PanSharpeningControl           pansharpControl=null;
93
         private IRasterProperties                             prop              = null;
94
         private  IRasterDataset                             dataset           = null;
95
         FLayer                                 fLayer = null;
96
         private final static String[]                 columnNames = { " ", "Band" };
97
         private boolean                        visible = true;
98
         
99
        
100
        public String id = "pansharp";
101

    
102
        
103
        public PanSharpeningPanel() 
104
        {
105
                super();
106
                id = PluginServices.getText(this, id);
107
                initialize();
108
        }
109

    
110
 
111
    void initialize() {
112
        this.setPreferredSize(new Dimension(sizeX, sizeY));
113
        this.setLayout(new FlowLayout());
114
        this.setLocation(0, 0);
115
        this.setSize(445, 239);
116
        this.add(getPSharpNorth(), null);
117
        this.setTableEnabled(false);
118
    }
119

    
120
    /**
121
     * Obtiene el nombre del panel
122
     * @return Cadena con el nombre del panel
123
     */
124
    public String getName(){
125
            return this.nom;
126
    }
127
    
128
    /**
129
     * Activa o desactiva la tabla de selecci?n de banda de refinado
130
     * @param enable
131
     */
132
    public void setTableEnabled(boolean enabled){
133
            this.getRBandPane().setEnabled(enabled);
134
        this.getBandTable().setEnabled(enabled);
135
        this.getJSlider().setEnabled(enabled);
136
        this.getJSlider1().setEnabled(enabled);
137
        this.getJTextField().setEnabled(enabled);
138
        this.getJTextField1().setEnabled(enabled);
139
        this.getRbBrovey().setEnabled(enabled);
140
        this.getRbHSL().setEnabled(enabled);
141
    }
142
    
143
    /**
144
     * Determina el bandtype de de cada banda y a?ade la banda a la tabla
145
     * */
146
    public void addFiles(IRasterDataSource mDataset) {
147
            for (int i = 0; i < mDataset.getDatasetCount(); i++) {
148
                        String fName = mDataset.getDataset(i)[0].getFName();
149

    
150
                        String bandName = new File(fName).getName();
151
                        String bandType = "";
152

    
153

    
154
                        switch (mDataset.getDataset(i)[0].getDataType()[0]) {
155
                        case DataBuffer.TYPE_BYTE:
156
                                bandType = "8U";
157
                                break;
158
                        case DataBuffer.TYPE_INT:
159
                                bandType = "32";
160
                                break;
161
                        case DataBuffer.TYPE_DOUBLE:
162
                                bandType = "64";
163
                                break;
164
                        case DataBuffer.TYPE_FLOAT:
165
                                bandType = "32";
166
                                break;
167
                        case DataBuffer.TYPE_SHORT:
168
                                bandType = "16";
169
                                break;
170
                        case DataBuffer.TYPE_USHORT:
171
                                bandType = "16U";
172
                                break;
173
                        case DataBuffer.TYPE_UNDEFINED:
174
                                bandType = "??";
175
                                break;
176
                }
177
                        
178
                        for (int b = 0; b < mDataset.getDataset(i)[0].getBandCount(); b++)
179
                                addBand((b + 1) + " [" + bandType + "] " + bandName);
180
        
181
        }
182
    }
183
    
184
    // A?ade una fila a la tabla
185
    private void addBand(String bandName) {
186
                Vector v = new Vector();
187
                v.add(new Boolean(false));
188
                v.add(bandName);
189
                ((DefaultTableModel) getBandTable().getModel()).addRow(v);
190
        }
191
    
192
    
193
    public JTable getBandTable() {
194
        if (rgbTable == null) {
195
            tableModel = new BandTableModel();
196
            tableModel.addTableModelListener(this);
197
            rgbTable = new JTable(tableModel);
198
            rgbTable.setPreferredScrollableViewportSize(new Dimension(300, 60));
199
        }
200
        return rgbTable;
201
    }
202
    
203
    /**
204
     * Traducciones del panel
205
     */
206
    public void setTranslation(){
207
            this.getCbActiveSharpening().setText(PluginServices.getText(this,"onSharpening"));
208
                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));
209
    }
210
    
211
    /**
212
     * This method initializes jTable
213
     *
214
     * @return javax.swing.JTable
215
     */
216
    public JScrollPane getRBandPane() {
217
        if (bandPane == null) {
218
            bandPane = new JScrollPane(getBandTable());
219
            bandPane.setPreferredSize(new java.awt.Dimension(400,100));
220
            bandPane.setEnabled(true);
221
            TableColumn column = null;
222

    
223
            for (int i = 0; i < 1; i++) {
224
               column = rgbTable.getColumnModel().getColumn(i);
225
               column.setCellRenderer((TableCellRenderer) new RadioColumnRenderer());
226
               column.setCellEditor((TableCellEditor) new RadioColumnEditor());
227
               column.setMaxWidth(22);
228
               column.setMinWidth(22);
229
          }
230
        }
231
        return bandPane;
232
    }
233
  
234
    /**
235
     * Obtiene el n?mero de bandas de la lista
236
     * @return
237
     */
238
    public int getNBands() {
239
        return ((DefaultTableModel) rgbTable.getModel()).getRowCount();
240
    }
241

    
242
    /**
243
     * Obtiene el nombre de la banda de la posici?n i de la tabla
244
     * @param i
245
     * @return
246
     */
247
    public String getBandName(int i) {
248
        String s = (String) ((DefaultTableModel) rgbTable.getModel()).getValueAt(i, 1);
249
        return s.substring(s.lastIndexOf("[8U]") + 5, s.length());
250
    }
251

    
252
    /**
253
     * Selecciona una banda de la tabla.
254
     * @param i
255
     */
256
    public void selectRow(int i){
257
            ((DefaultTableModel) rgbTable.getModel()).setValueAt(new Boolean(true),i,0);
258
    }
259
    
260
    /**
261
     * Elimina todas las filas seleccionadas
262
     */
263
    public void removeSelections(){
264
            for(int i=0;i<((DefaultTableModel) rgbTable.getModel()).getRowCount();i++){
265
                    ((DefaultTableModel) rgbTable.getModel()).setValueAt(new Boolean(false),i,0);
266
            }
267
    }
268
    
269
   
270
        public JPanel getPSharpNorth() {
271
                if (pSharpNorth == null) {
272
                        GridBagConstraints gridBagConstraints10 = new GridBagConstraints();
273
                        gridBagConstraints10.gridx = 0;
274
                        gridBagConstraints10.gridy = 1;
275
                        GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
276
                        GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
277
                        pSharpNorth = new JPanel();
278
                        pSharpNorth.setLayout(new GridBagLayout());
279
                        pSharpNorth.setPreferredSize(new java.awt.Dimension(440,259));
280
                        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));
281
                        gridBagConstraints2.gridx = 0;
282
                        gridBagConstraints2.gridy = 0;
283
                        gridBagConstraints2.anchor = java.awt.GridBagConstraints.WEST;
284
                        gridBagConstraints2.gridwidth = 0;
285
                        gridBagConstraints2.gridheight = 1;
286
                        gridBagConstraints3.gridx = 0;
287
                        gridBagConstraints3.gridy = 2;
288
                        gridBagConstraints3.weightx = 0.0D;
289
                        gridBagConstraints3.weighty = 0.0D;
290
                        gridBagConstraints3.fill = java.awt.GridBagConstraints.NONE;
291
                        gridBagConstraints3.ipadx = 0;
292
                        gridBagConstraints3.ipady = 0;
293
                        gridBagConstraints3.insets = new java.awt.Insets(0,0,0,0);
294
                        gridBagConstraints3.gridheight = 0;
295
                        gridBagConstraints3.gridwidth = 0;
296
                        pSharpNorth.add(getActivationPanel(), gridBagConstraints2);
297
                        pSharpNorth.add(getRBandPane(), gridBagConstraints3);
298
                        pSharpNorth.add(getPSharpSouth(), gridBagConstraints10);
299
                }
300
                return pSharpNorth;
301
        }
302
   
303
        private JPanel getActivationPanel() {
304
                if (activationPanel == null) {
305
                        FlowLayout flowLayout = new FlowLayout();
306
                        flowLayout.setAlignment(java.awt.FlowLayout.LEFT);
307
                        flowLayout.setVgap(0);
308
                        flowLayout.setHgap(0);
309
                        activationPanel = new JPanel();
310
                        activationPanel.setLayout(flowLayout);
311
                        activationPanel.setPreferredSize(new java.awt.Dimension(340,30));
312
                        activationPanel.add(getCbActiveSharpening(), null);
313
                }
314
                return activationPanel;
315
        }
316
        
317
        public JCheckBox getCbActiveSharpening() {
318
                if (cbActiveSharpening == null) {
319
                        cbActiveSharpening = new JCheckBox();
320
                        cbActiveSharpening.setText("Activar Pansharpening");
321
                        cbActiveSharpening.setPreferredSize(new java.awt.Dimension(150,23));
322
                        cbActiveSharpening.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
323
                }
324
                return cbActiveSharpening;
325
        }
326
        
327
        
328
        private JPanel getPSharpSouth() {
329
                if (pSharpSouth == null) {
330
                        GridBagConstraints gridBagConstraints8 = new GridBagConstraints();
331
                        GridBagConstraints gridBagConstraints9 = new GridBagConstraints();
332
                        pSharpSouth = new JPanel();
333
                        pSharpSouth.setLayout(new GridBagLayout());
334
                        pSharpSouth.setPreferredSize(new java.awt.Dimension(410,62));
335
                        gridBagConstraints9.gridy = 1;
336
                        gridBagConstraints8.gridy = 0;
337
                        pSharpSouth.add(getJPanel(), gridBagConstraints8);
338
                        ButtonGroup group = new ButtonGroup();
339
                        group.add(getRbBrovey());
340
                        group.add(getRbHSL());
341
                        gridBagConstraints9.ipadx = 0;
342
                        pSharpSouth.add(getPKernel(), gridBagConstraints9);
343
                }
344
                return pSharpSouth;
345
        }
346
        /**
347
         * This method initializes jRadioButton        
348
         *         
349
         * @return javax.swing.JRadioButton        
350
         */    
351
        public JRadioButton getRbBrovey() {
352
                if (rbBrovey == null) {
353
                        rbBrovey = new JRadioButton();
354
                        rbBrovey.setText("Brovey");
355
                        rbBrovey.setPreferredSize(new java.awt.Dimension(70,23));
356
                        rbBrovey.setSelected(true);
357
                }
358
                return rbBrovey;
359
        }
360
        /**
361
         * This method initializes jRadioButton        
362
         *         
363
         * @return javax.swing.JRadioButton        
364
         */    
365
        public JRadioButton getRbHSL() {
366
                if (rbHSL == null) {
367
                        rbHSL = new JRadioButton();
368
                        rbHSL.setText("HSL");
369
                        rbHSL.setPreferredSize(new java.awt.Dimension(70,23));
370
                }
371
                return rbHSL;
372
        }
373
        /**
374
         * This method initializes jPanel        
375
         *         
376
         * @return javax.swing.JPanel        
377
         */    
378
        private JPanel getPKernel() {
379
                if (pHSL == null) {
380
                        GridBagConstraints gridBagConstraints7 = new GridBagConstraints();
381
                        GridBagConstraints gridBagConstraints6 = new GridBagConstraints();
382
                        GridBagConstraints gridBagConstraints5 = new GridBagConstraints();
383
                        pHSL = new JPanel();
384
                        pHSL.setLayout(new GridBagLayout());
385
                        pHSL.setPreferredSize(new java.awt.Dimension(400,30));
386
                        gridBagConstraints5.gridx = 0;
387
                        gridBagConstraints5.gridy = 0;
388
                        gridBagConstraints5.insets = new java.awt.Insets(0,0,0,0);
389
                        gridBagConstraints5.gridheight = 0;
390
                        gridBagConstraints6.gridx = 1;
391
                        gridBagConstraints6.gridwidth = 1;
392
                        gridBagConstraints6.gridy = 0;
393
                        gridBagConstraints6.weightx = 1.0;
394
                        gridBagConstraints6.fill = java.awt.GridBagConstraints.HORIZONTAL;
395
                        gridBagConstraints6.insets = new java.awt.Insets(0,0,0,0);
396
                        gridBagConstraints6.gridheight = 0;
397
                        gridBagConstraints7.weightx = 1.0D;
398
                        gridBagConstraints7.weighty = 1.0D;
399
                        gridBagConstraints7.gridwidth = 1;
400
                        gridBagConstraints7.fill = java.awt.GridBagConstraints.HORIZONTAL;
401
                        gridBagConstraints7.gridheight = 1;
402
                        gridBagConstraints7.gridy = 0;
403
                        gridBagConstraints7.gridx = 2;
404
                        pHSL.add(getJTextField(), gridBagConstraints7);
405
                        pHSL.add(getRbHSL(), gridBagConstraints5);
406
                        pHSL.add(getJSlider(), gridBagConstraints6);
407
                        this.getJSlider().setValue(0);
408
                }
409
                return pHSL;
410
        }
411
        /**
412
         * This method initializes jSlider        
413
         *         
414
         * @return javax.swing.JSlider        
415
         */    
416
        public JSlider getJSlider() {
417
                if (jSlider == null) {
418
                        jSlider = new JSlider();
419
                        jSlider.setMinimum(0);
420
                        jSlider.setPreferredSize(new java.awt.Dimension(180,16));
421
                        jSlider.setMaximum(100);
422
                        
423
                }
424
                return jSlider;
425
        }
426
        /**
427
         * This method initializes jTextField        
428
         *         
429
         * @return javax.swing.JTextField        
430
         */    
431
        public JTextField getJTextField() {
432
                if (jTextField == null) {
433
                        jTextField = new JTextField();
434
                        jTextField.setPreferredSize(new java.awt.Dimension(20,19));
435
                        jTextField.setText("0.0");
436
                }
437
                return jTextField;
438
        }
439

    
440
        
441
        /**
442
         * This method initializes jPanel        
443
         *         
444
         * @return javax.swing.JPanel        
445
         */
446
        private JPanel getJPanel() {
447
                if (pBrovey == null) {
448
                        GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
449
                        gridBagConstraints11.fill = java.awt.GridBagConstraints.HORIZONTAL;
450
                        gridBagConstraints11.gridx = 2;
451
                        gridBagConstraints11.gridy = 0;
452
                        gridBagConstraints11.weighty = 1.0D;
453
                        gridBagConstraints11.weightx = 1.0;
454
                        GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
455
                        gridBagConstraints1.fill = java.awt.GridBagConstraints.HORIZONTAL;
456
                        gridBagConstraints1.gridheight = 0;
457
                        gridBagConstraints1.gridx = 1;
458
                        gridBagConstraints1.gridy = 0;
459
                        gridBagConstraints1.weightx = 1.0;
460
                        GridBagConstraints gridBagConstraints = new GridBagConstraints();
461
                        gridBagConstraints.anchor = java.awt.GridBagConstraints.CENTER;
462
                        gridBagConstraints.gridy = 0;
463
                        gridBagConstraints.gridheight = 0;
464
                        gridBagConstraints.gridx = 0;
465
                        pBrovey = new JPanel();
466
                        pBrovey.setLayout(new GridBagLayout());
467
                        pBrovey.setPreferredSize(new java.awt.Dimension(400,30));
468
                        pBrovey.add(getRbBrovey(), gridBagConstraints);
469
                        pBrovey.add(getJSlider1(), gridBagConstraints1);
470
                        this.getJSlider1().setValue(0);
471
                        pBrovey.add(getJTextField1(), gridBagConstraints11);
472
                }
473
                return pBrovey;
474
        }
475

    
476
        /**
477
         * This method initializes jSlider1        
478
         *         
479
         * @return javax.swing.JSlider        
480
         */
481
        public JSlider getJSlider1() {
482
                if (slBrovey == null) {
483
                        slBrovey = new JSlider();
484
                        slBrovey.setMaximum(100);
485
                        slBrovey.setPreferredSize(new java.awt.Dimension(180,16));
486
                        
487
                }
488
                return slBrovey;
489
        }
490

    
491
        /**
492
         * This method initializes jTextField1        
493
         *         
494
         * @return javax.swing.JTextField        
495
         */
496
        public JTextField getJTextField1() {
497
                if (jTextField1 == null) {
498
                        jTextField1 = new JTextField();
499
                        jTextField1.setPreferredSize(new java.awt.Dimension(20,19));
500
                        jTextField1.setText("0");
501
                }
502
                return jTextField1;
503
        }
504
        
505
        
506
        
507
        /*
508
         * Actualiza por si hay variaciones*/
509
        private void refresh() {
510
                setLayer(fLayer);
511
                
512
        }
513

    
514
        /*
515
         * (non-Javadoc)
516
         * @see org.gvsig.rastertools.properties.dialog.IRegistrablePanel#getID()
517
         */
518
        public String getID() {
519
                return id;
520
        }
521

    
522
        /*
523
         * (non-Javadoc)
524
         * @see org.gvsig.rastertools.properties.dialog.IRegistrablePanel#selectTab(java.lang.String)
525
         */
526
        public void selectTab(String id) {
527
                if (this.id.equals(id))
528
                        refresh();
529
                
530
        }
531

    
532
        public void accept() {
533
                pansharpControl.accept();
534
        }
535

    
536
        /**
537
         * Aplicar los cambios sin guardar su estado
538
         */
539
        public void apply() {
540
                pansharpControl.apply();
541
        }
542

    
543
        public void cancel() {
544
                pansharpControl.cancel();
545
        }
546

    
547
        public void setComponentSize(int w, int h) {
548
                
549
        }
550
        
551
        
552
        public void setLayer(FLayer lyr) {
553
                fLayer = lyr;
554
                clear();
555
                //getFileList().clear();
556

    
557
                RasterFilterList rfl = null;
558

    
559
                /*if (lyr instanceof IRasterDataset)
560
                        dataset = (IRasterDataset) lyr;*/
561
                if (lyr instanceof IRasterProperties)
562
                        rfl = (((IRasterProperties) lyr).getRenderFilterList());
563
                
564
                if (lyr instanceof IRasterProperties)
565
                        prop = (IRasterProperties) lyr;
566

    
567
                if (lyr instanceof IRasterRendering) {
568
                        if (((IRasterRendering) lyr).existColorTable() && pansharpControl != null) {
569
                                pansharpControl.init(null, null, lyr);
570
                                this.setEnabled(false);
571
                                return;
572
                        }
573
                }
574

    
575
                this.setEnabled(true);
576

    
577
                if (lyr instanceof IRasterDataset) {
578
                        dataset = (IRasterDataset) lyr;
579
                        addFiles(dataset.getDataSource());
580
                }
581

    
582
                pansharpControl= new PanSharpeningControl(this, (IRasterDataset)dataset,prop, lyr,rfl);
583
                
584
        }
585
        
586
        /*
587
         * (non-Javadoc)
588
         * @see org.gvsig.raster.gui.properties.dialog.IRegistrablePanel#setVisiblePanel(boolean)
589
         */
590
        public void setVisiblePanel(boolean visible) {
591
                this.visible = visible;
592
  }
593

    
594
        /*
595
         * (non-Javadoc)
596
         * @see org.gvsig.raster.gui.properties.dialog.IRegistrablePanel#isVisiblePanel()
597
         */
598
        public boolean isVisiblePanel() {
599
                return visible;
600
        }
601
        
602
        /*
603
         * (non-Javadoc)
604
         * @see org.gvsig.raster.gui.properties.dialog.IRegistrablePanel#getLayerClass()
605
         */
606
        public Class getLayerClass() {
607
                return FLyrRasterSE.class;
608
        }
609

    
610
        /**
611
         * Elimina todas las entradas de la tabla de bandas.
612
         */
613
        private void clear() {
614
                int rows = ((DefaultTableModel) getBandTable().getModel()).getRowCount();
615
                if (rows > 0) {
616
                        for (int i = 0; i < rows; i++)
617
                                ((DefaultTableModel) getBandTable().getModel()).removeRow(0);
618
                }
619
        }
620
        
621
        
622
        
623
         class RadioColumnEditor extends AbstractCellEditor implements TableCellEditor {
624
                        final private static long serialVersionUID = -3370601314380922368L;
625
                        public JRadioButton       theRadioButton;
626

    
627
                        public RadioColumnEditor() {
628
                                super();
629
                                theRadioButton = new JRadioButton();
630
                                theRadioButton.addActionListener(new ActionListener() {
631
                                        public void actionPerformed(ActionEvent event) {
632
                                                fireEditingStopped();
633
                                                //setMode(mode);
634
                                                //onlyApply();
635
                                        }
636
                                });
637
                        }
638

    
639
                        public Component getTableCellEditorComponent(JTable table, Object obj, boolean isSelected, int row, int col) {
640
                                theRadioButton.setHorizontalAlignment(SwingUtilities.CENTER);
641

    
642
                                Boolean lValueAsBoolean = (Boolean) obj;
643
                                theRadioButton.setSelected(lValueAsBoolean.booleanValue());
644

    
645
                                return theRadioButton;
646
                        }
647

    
648
                        public Object getCellEditorValue() {
649
                                return new Boolean(theRadioButton.isSelected());
650
                        }
651
                }
652

    
653
                class RadioColumnRenderer extends JRadioButton implements TableCellRenderer {
654
                        final private static long serialVersionUID = -3370601314380922368L;
655

    
656
                        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
657
                                if (value == null) {
658
                                        this.setSelected(false);
659
                                }
660

    
661
                                Boolean ValueAsBoolean = (Boolean) value;
662
                                this.setSelected(ValueAsBoolean.booleanValue());
663
                                this.setHorizontalAlignment(SwingConstants.CENTER);
664

    
665
                                return this;
666
                        }
667
                }
668
                
669
                  // Modelo de la tabla que contiene las bandas
670
            class BandTableModel extends DefaultTableModel {
671
                        final private static long serialVersionUID = -3370601314380922368L;
672
                         // String de con las cabeceras de la tabla
673
                         
674
                        public BandTableModel() {
675
                                super(new Object[0][2], columnNames);
676
                        }
677

    
678
                        public Class getColumnClass(int c) {
679
                                if (c < 1) {
680
                                        return Boolean.class;
681
                                }
682

    
683
                                return String.class;
684
                        }
685

    
686

    
687
                         public void addNew() {
688
                            super.addRow(new Object[] { new Boolean(false), ""});
689
                        }
690
                         
691
                         public void addRow(){
692
                                addRow(new Object[] { new Boolean(false), ""});
693
                                 
694
                         }
695
                        public void setValueAt(Object value, int row, int col) {
696
                                if ((col < 1) && ((Boolean) value).booleanValue()) {
697
                                        for (int i = 0; i < getRowCount(); i++) {
698
                                                if (i != row) {
699
                                                        setValueAt(new Boolean(false), i, col);
700
                                                }
701
                                        }
702
                                }
703

    
704
                                super.setValueAt(value, row, col);
705
                        }                
706
                }
707

    
708
                public void tableChanged(TableModelEvent arg0) {
709
                        
710
                }
711

    
712
}
713