Statistics
| Revision:

root / branches / v2_0_0_prep / extensions / extRemoteSensing / src / org / gvsig / remotesensing / tasseledcap / TransformationPanel.java @ 31496

History | View | Annotate | Download (20 KB)

1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
         *
3
         * Copyright (C) 2006 Instituto de Desarrollo Regional 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
         * For more information, contact:
20
         *
21
         *  Generalitat Valenciana
22
         *   Conselleria d'Infraestructures i Transport
23
         *   Av. Blasco Iba?ez, 50
24
         *   46010 VALENCIA
25
         *   SPAIN
26
         *
27
         *      +34 963862235
28
         *   gvsig@gva.es
29
         *      www.gvsig.gva.es
30
         *
31
         *    or
32
         *
33
         *   Instituto de Desarrollo Regional (Universidad de Castilla La-Mancha)
34
         *   Campus Universitario s/n
35
         *   02071 Alabacete
36
         *   Spain
37
         *
38
         *   +34 967 599 200
39
         */
40
package org.gvsig.remotesensing.tasseledcap;
41

    
42
import java.awt.BorderLayout;
43
import java.awt.Color;
44
import java.awt.Dimension;
45
import java.awt.GridBagConstraints;
46
import java.awt.GridBagLayout;
47
import java.awt.event.ActionEvent;
48
import java.awt.event.ActionListener;
49
import java.awt.event.FocusEvent;
50
import java.awt.event.FocusListener;
51
import java.io.File;
52

    
53
import javax.swing.BorderFactory;
54
import javax.swing.ButtonGroup;
55
import javax.swing.ComboBoxModel;
56
import javax.swing.DefaultComboBoxModel;
57
import javax.swing.JLabel;
58
import javax.swing.JPanel;
59
import javax.swing.JRadioButton;
60
import javax.swing.JScrollPane;
61
import javax.swing.JTable;
62
import javax.swing.JTextField;
63
import javax.swing.SwingConstants;
64
import javax.swing.border.CompoundBorder;
65
import javax.swing.border.EmptyBorder;
66
import javax.swing.border.TitledBorder;
67

    
68
import org.gvsig.andami.PluginServices;
69
import org.gvsig.andami.Utilities;
70
import org.gvsig.andami.ui.mdiManager.IWindow;
71
import org.gvsig.andami.ui.mdiManager.IWindowListener;
72
import org.gvsig.andami.ui.mdiManager.WindowInfo;
73
import org.gvsig.app.project.documents.view.gui.DefaultViewPanel;
74
import org.gvsig.fmap.mapcontext.MapContext;
75
import org.gvsig.fmap.mapcontext.layers.FLayers;
76
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
77
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
78
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
79
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
80
import org.gvsig.gui.beans.defaultbuttonspanel.DefaultButtonsPanel;
81
import org.gvsig.gui.beans.swing.JFileChooser;
82
import org.gvsig.raster.IProcessActions;
83
import org.gvsig.raster.RasterLibrary;
84
import org.gvsig.raster.buffer.WriterBufferServer;
85
import org.gvsig.raster.dataset.GeoRasterWriter;
86
import org.gvsig.raster.util.ExtendedFileFilter;
87
import org.gvsig.raster.util.PropertyEvent;
88
import org.gvsig.raster.util.PropertyListener;
89
import org.gvsig.raster.util.RasterToolsUtil;
90
import org.gvsig.remotesensing.principalcomponents.PCStatistics;
91
import org.gvsig.remotesensing.principalcomponents.PCStatisticsProcess;
92
import org.gvsig.remotesensing.principalcomponents.gui.BandTableFormat;
93
import org.gvsig.remotesensing.principalcomponents.gui.PrincipalComponentCalculusPanel;
94
import org.gvsig.utils.swing.JComboBox;
95

    
96

    
97
/**
98
 * Clase que implementa la interfaz para las transformaciones multiespectrales de Componentes
99
 * Principales y TasseledCap.
100
 * @author aMu?oz (alejandro.munoz@uclm.es)
101
 * @version 30/4/2008
102
 * */
103

    
104
public class TransformationPanel extends DefaultButtonsPanel implements PropertyListener, IWindow, IWindowListener,
105
ButtonsPanelListener,ActionListener,FocusListener, IProcessActions{
106

    
107
        private static final long serialVersionUID = 1L;
108
        private int                                         width=380;
109
        private int                                         height=450;
110
        private MapContext                                 m_MapContext=null;
111
        private JScrollPane                                scrollBandas=null;
112
        private BandTableFormat                 mModeloTabla=null;
113
        private JTable                                         jTableBandas=null;
114
        private FLayers                                 layers=null;
115
        private JComboBox                                comboLayers= null;
116
        private int[]                                         bands= null;
117
        private JPanel                                        panelSeleccion=null;
118
        private JRadioButton                         rButtonFile=null;
119
        private JRadioButton                         rButtonMemory =null;
120
        private JPanel                                         nombreCapa=null;
121
        private JTextField                                 jTextNombreCapa=null;
122
        private JPanel                                        panelCentral= null;
123
        private JRadioButton                        rTasseledCapOption=null;
124
        private JComboBox                                typeTasseledCap=null;
125
        private JRadioButton                        rPrincipalComponentOption=null;
126
        private DefaultViewPanel view=null;
127
        private PCStatisticsProcess         statisticsProcess= null;
128
        private boolean selectedBands[]= null;
129

    
130
        public void actionValueChanged(PropertyEvent e) {
131

    
132
        }
133

    
134
        public WindowInfo getWindowInfo() {
135
                WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODELESSDIALOG | WindowInfo.RESIZABLE | WindowInfo.MAXIMIZABLE);
136
                m_viewinfo.setWidth(width);
137
                m_viewinfo.setHeight(height);
138
                m_viewinfo.setTitle(PluginServices.getText(this,"transformacion_title"));
139
                m_viewinfo.setX(300);
140
                return m_viewinfo;
141
        }
142

    
143

    
144
        /**
145
         * @param view vista de la aplicacion
146
         */
147
        public TransformationPanel(DefaultViewPanel view) {
148
                m_MapContext = view.getModel().getMapContext();
149
                this.view=view;
150
                layers = m_MapContext.getLayers();
151
                this.setPreferredSize(new Dimension(width, height));
152
                this.setSize(width, height);
153
                this.setLayout(new BorderLayout(3, 3));
154
                this.addButtonPressedListener(this);
155
                initialize();
156
        }
157

    
158

    
159
        /**
160
         * Inicializaci?n del cuadro de dialogo
161
         */
162
        private void initialize(){
163
                BorderLayout bd=new BorderLayout();
164
                this.setLayout(bd);
165
                TitledBorder topBorder = BorderFactory.createTitledBorder(" ");
166
                topBorder.setTitlePosition(TitledBorder.TOP);
167
                this.setBorder(new CompoundBorder(topBorder,new EmptyBorder(0,5,5,5)));
168
                this.setLayout(new BorderLayout());
169
                this.add(getSelectionImagePanel(), BorderLayout.NORTH);
170
                JPanel aux= new JPanel(); aux.setBackground(Color.RED);
171
                this.add(getPanelCentral(), BorderLayout.CENTER);
172
                this.add(getOutputOptionsPanel(), BorderLayout.SOUTH);
173
                getBandas();
174
        }
175

    
176

    
177
        /**
178
         * Toma las Bandas de la imagen seleccionada en el combo Imagen
179
         */
180
        public void getBandas(){
181

    
182
                // Antes de insertar se borra lo anterior
183
                getModeloTabla().LimpiarLista();
184

    
185
                FLyrRasterSE rasterLayer= (FLyrRasterSE)layers.getLayer((String)getComboCapas().getSelectedItem());
186
                String bandas[]=new String[rasterLayer.getBandCount()];
187
                bands= new int[rasterLayer.getBandCount()];
188
                if (layers.getLayer((String)getComboCapas().getSelectedItem()) instanceof  FLyrRasterSE ){
189
                        for (int j=0; j<rasterLayer.getBandCount(); j++){
190
                                        String s=(PluginServices.getText(this,"banda"))+(j+1);
191
                                        bandas[j]=s;
192
                                        bands[j]=j;
193
                                }
194
                        for (int i=0;i<bandas.length;i++)
195
                                getModeloTabla().addRow(bandas[i],true);
196
                        getTableBands().updateUI();
197
                }
198
        }
199

    
200
        /**
201
         * @return modelo de tabla
202
         * @see BandTableFormat
203
         */
204
        public BandTableFormat getModeloTabla() {
205
                if(mModeloTabla==null){
206
                        mModeloTabla=new BandTableFormat();
207
                }
208
                return mModeloTabla;
209
        }
210

    
211
        /**
212
         * @return scroll con bandas del r?ster
213
         */
214
        public JScrollPane getScrollBands() {
215
                if (scrollBandas==null){
216
                        scrollBandas=new JScrollPane();
217
                }
218
                getTableBands().getColumn("").setPreferredWidth(30);
219
                scrollBandas.setPreferredSize(new Dimension(250,80));
220
                scrollBandas.setViewportView(getTableBands());
221
                scrollBandas.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
222
                return scrollBandas;
223
        }
224

    
225
        /**
226
         * @return tabla conlas bandas de la imagen
227
         */
228
        private JTable getTableBands(){
229
                if (jTableBandas==null){
230
                        jTableBandas=new JTable(getModeloTabla());
231
                }
232
                return jTableBandas;
233
        }
234

    
235

    
236
        /**
237
         * @return JComboBox con los r?ster cargados en la vista.
238
         */
239
         public JComboBox getComboCapas() {
240
                if (comboLayers==null){
241
                        ComboBoxModel jComboBoxLayersModel = new
242
                DefaultComboBoxModel(getLayerNames());
243
                        comboLayers = new JComboBox();
244
                        comboLayers.setModel(jComboBoxLayersModel);
245
                        comboLayers.setEnabled(true);
246
                        comboLayers.addActionListener(this);
247
                        comboLayers.setSelectedIndex(0);
248
                }
249
                return comboLayers;
250
        }
251

    
252

    
253

    
254
         /**
255
          * @return array de string con los nombre de las capas raster
256
          */
257
        private String[] getLayerNames() {
258
                int i, capasraster=0;
259
                for (i = 0; i < layers.getLayersCount(); i++) {
260
                        if (layers.getLayer(i)instanceof  FLyrRasterSE)
261
                                capasraster++;
262
                }
263
                // Solo se toman las capas raster.
264
                String[] sNames = new String[capasraster];
265
                capasraster=0;
266

    
267
                for (i = 0; i < layers.getLayersCount(); i++) {
268
                        if (layers.getLayer(i)instanceof FLyrRasterSE){
269
                                sNames[capasraster] =layers.getLayer(i).getName();
270
                                capasraster++;
271
                        }
272
                }
273
                return sNames;
274
        }
275

    
276

    
277
        public JPanel getSelectionImagePanel(){
278
                if(panelSeleccion==null){
279
                        panelSeleccion= new JPanel();
280
                        TitledBorder topBorder = BorderFactory.createTitledBorder(PluginServices.getText(this,"imagen"));
281
                        topBorder.setTitlePosition(TitledBorder.TOP);
282
                        panelSeleccion.setBorder(topBorder);
283
                        JPanel aux= new JPanel();
284
                        aux.setPreferredSize(new Dimension(300,110));
285
                        BorderLayout bd=new BorderLayout();
286
                        aux.setLayout(bd);
287
                        aux.add(getComboCapas(),BorderLayout.NORTH);
288
                        aux.add(getScrollBands(),BorderLayout.SOUTH);
289
                        panelSeleccion.add(aux);
290
                }
291
                return panelSeleccion;
292
        }
293

    
294
        /**
295
          *Actualizaci?n de las bandas cuando cambia la imagen seleccionada
296
          */
297
        public void actionPerformed(ActionEvent arg0) {
298
                if(arg0.getSource()==getComboCapas()){
299
                        getBandas();
300
                }
301
                if(arg0.getSource()==getRTasseledCapOption()){
302
                        getTypeTasseledCap().setEnabled(getRTasseledCapOption().isSelected());
303
                }
304
                if(arg0.getSource()==getRPrincipalComponentOption()){
305
                        getTypeTasseledCap().setEnabled(getRTasseledCapOption().isSelected());
306
                }
307
        }
308

    
309

    
310
        public void windowActivated() {
311
                // TODO Auto-generated method stub
312

    
313
        }
314

    
315
        public void windowClosed() {
316
                // TODO Auto-generated method stub
317

    
318
        }
319

    
320
        public void actionButtonPressed(ButtonsPanelEvent e) {
321
                // Bot?n de Aceptar
322
                if (e.getButton() == ButtonsPanel.BUTTON_ACCEPT) {
323
                        aplicar();
324
                        close();
325
                }
326

    
327
                // Bot?n de Aplicar
328
                if (e.getButton() == ButtonsPanel.BUTTON_APPLY) {
329
                        aplicar();
330
                }
331

    
332
                // Bot?n de Cerrar
333
                if (e.getButton() == ButtonsPanel.BUTTON_CANCEL) {
334
                        close();
335
                }
336

    
337
        }
338

    
339
        public void focusGained(FocusEvent e) {
340
                // TODO Auto-generated method stub
341

    
342
        }
343

    
344
        public void focusLost(FocusEvent e) {
345
                // TODO Auto-generated method stub
346

    
347
        }
348

    
349

    
350
        /**
351
         * @return panel con las opciones de salida.
352
         */
353
        public JPanel getOutputOptionsPanel() {
354
                if (nombreCapa==null){
355
                        nombreCapa=new JPanel();
356
                        nombreCapa.setPreferredSize(new Dimension(400,130));
357
                        TitledBorder topBorder = BorderFactory.createTitledBorder(PluginServices.getText(this, "salida"));
358
                        topBorder.setTitlePosition(TitledBorder.TOP);
359
                        nombreCapa.setBorder(topBorder);
360
                        GridBagConstraints gridBagConstraints;
361
                        JPanel radioPanel = new JPanel();
362
                        radioPanel.setLayout(new GridBagLayout());
363
                        radioPanel.setBorder(BorderFactory.createTitledBorder(""));
364
                        ButtonGroup buttonGroup = new ButtonGroup();
365
                        buttonGroup.add(getRadioMemory());
366
                        gridBagConstraints = new java.awt.GridBagConstraints();
367
                        gridBagConstraints.gridx = 0;
368
                        gridBagConstraints.gridy = 1;
369
                        gridBagConstraints.anchor = GridBagConstraints.WEST;
370
                        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
371
                        radioPanel.add(getRadioMemory(),gridBagConstraints);
372
                        buttonGroup.add(getRadioFile());
373
                        gridBagConstraints = new java.awt.GridBagConstraints();
374
                        gridBagConstraints.gridx = 0;
375
                        gridBagConstraints.gridy = 2;
376
                        gridBagConstraints.anchor = GridBagConstraints.WEST;
377
                        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
378
                        radioPanel.add(getRadioFile(),gridBagConstraints);
379
                        //Establece la separacion entre los elementos
380
                        nombreCapa.setLayout(new GridBagLayout());
381
                        gridBagConstraints = new java.awt.GridBagConstraints();
382
                        gridBagConstraints.gridx = 0;
383
                        gridBagConstraints.gridy = 0;
384
                        gridBagConstraints.anchor = GridBagConstraints.WEST;
385
                        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
386
                        nombreCapa.add(new JLabel(("Nombre:"),SwingConstants.RIGHT ),gridBagConstraints);
387

    
388
                        gridBagConstraints = new java.awt.GridBagConstraints();
389
                        gridBagConstraints.gridx = 1;
390
                        gridBagConstraints.gridy = 0;
391
                        gridBagConstraints.anchor = GridBagConstraints.WEST;
392
                        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
393
                        nombreCapa.add(getJTextNombreCapa(),gridBagConstraints);
394

    
395
                        gridBagConstraints = new java.awt.GridBagConstraints();
396
                        gridBagConstraints.gridx = 2;
397
                        gridBagConstraints.gridy = 0;
398
                        gridBagConstraints.anchor = GridBagConstraints.WEST;
399
                        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
400
                        nombreCapa.add(radioPanel,gridBagConstraints);
401
                }
402
                return nombreCapa;
403
        }
404

    
405

    
406
        /**
407
         * @return JRadioButton de generar fichero
408
         */
409
        public JRadioButton getRadioFile(){
410
                if (rButtonFile == null){
411
                        rButtonFile = new JRadioButton(PluginServices.getText(this,"a_fichero"));
412
                        rButtonFile.addActionListener(this);
413
                }
414
                return rButtonFile;
415
        }
416

    
417
        /**
418
         * @return JRadioButton de generar en memoria
419
         */
420
        public JRadioButton getRadioMemory(){
421
                if (rButtonMemory == null){
422
                        rButtonMemory = new JRadioButton(PluginServices.getText(this,"a_memoria"),true);
423
                        rButtonMemory.addActionListener(this);
424
                }
425
                return rButtonMemory;
426
        }
427
         /**
428
          * @return javax.swing.JTextField
429
          */
430
         public JTextField getJTextNombreCapa() {
431
                if (jTextNombreCapa==null) {
432
                        jTextNombreCapa=new JTextField(10);
433
                        jTextNombreCapa.setText(RasterLibrary.getOnlyLayerName());
434
                        jTextNombreCapa.addFocusListener(this);
435
                        RasterLibrary.addOnlyLayerNameListener(this);
436
                }
437
                return jTextNombreCapa;
438
        }
439

    
440
         public JPanel getPanelCentral(){
441
                 if(panelCentral==null){
442
                        panelCentral= new JPanel();
443
                        panelCentral.setLayout(new BorderLayout());
444
                        //panelCentral.setBorder(new EmptyBorder(10,10,10,10));
445
                        TitledBorder topBorder = BorderFactory.createTitledBorder(PluginServices.getText(this,"transformacion"));
446
                        topBorder.setTitlePosition(TitledBorder.TOP);
447
                        panelCentral.setBorder(topBorder);
448
                        panelCentral.setEnabled(false);
449
                        // A?adir aqui si el panel tiene que contener alg?n par?metro
450
                        JPanel panel = new JPanel();
451
                        ButtonGroup btgr= new ButtonGroup();
452
                        btgr.add(getRPrincipalComponentOption());
453
                        btgr.add(getRTasseledCapOption());
454
                        panel.setPreferredSize(new Dimension(200,10));
455
                        panel.setBorder(new EmptyBorder(5,10,10,10));
456
                        BorderLayout bd= new BorderLayout();
457
                        panel.setLayout(bd);
458
                        panel.add(getRPrincipalComponentOption(),BorderLayout.NORTH);
459
                        panel.add(getRTasseledCapOption(),BorderLayout.CENTER);
460
                        panel.add(getTypeTasseledCap(),BorderLayout.SOUTH);
461
                        panelCentral.add(panel,BorderLayout.CENTER);
462
                 }
463
                return panelCentral;
464
         }
465

    
466
        public JRadioButton getRPrincipalComponentOption() {
467
                if(rPrincipalComponentOption==null){
468
                        rPrincipalComponentOption= new JRadioButton(PluginServices.getText(this,"principal_component"));
469
                        rPrincipalComponentOption.setSelected(true);
470
                        rPrincipalComponentOption.addActionListener(this);
471
                }
472
                return rPrincipalComponentOption;
473
        }
474

    
475
        public JRadioButton getRTasseledCapOption() {
476
                if(rTasseledCapOption==null){
477
                   rTasseledCapOption= new JRadioButton(PluginServices.getText(this,"tasseledcap"));
478
                   rTasseledCapOption.addActionListener(this);
479
                }
480
                return rTasseledCapOption;
481
        }
482

    
483
        public JComboBox getTypeTasseledCap() {
484
                if(typeTasseledCap==null){
485
                           typeTasseledCap= new JComboBox();
486
                           typeTasseledCap.setEnabled(false);
487
                           typeTasseledCap.addItem(new String(PluginServices.getText(this,"landsatMS")));
488
                           typeTasseledCap.addItem(new String(PluginServices.getText(this,"landsatTM")));
489
                           typeTasseledCap.addItem(new String(PluginServices.getText(this,"landsatETM")));
490

    
491
                }
492
                return typeTasseledCap;
493
        }
494

    
495

    
496
        /**
497
         * Devuelve la ruta del fichero donde se va a guardar, en caso de guardarse
498
         * en memoria, calcula el nombre sin preguntar y devuelve la ruta.
499
         * @return string con la ruta de salida
500
         */
501
        public String getFileSelected() {
502
                String path = "";
503
                if (getRadioFile().isSelected()) {
504
                        JFileChooser chooser = new JFileChooser("TRANSFORMATION_PANEL",JFileChooser.getLastPath("TRANSFORMATION_PANEL", null));
505
                        chooser.setDialogTitle(PluginServices.getText(this, "seleccionar_fichero"));
506
                        //A?adimos las extensiones que hayan sido registradas en el driver
507
                        String[] extList = GeoRasterWriter.getDriversExtensions();
508
                        for(int i=0;i<extList.length;i++)
509
                                chooser.addChoosableFileFilter(new ExtendedFileFilter(extList[i]));
510

    
511
                        if (chooser.showOpenDialog(this) != JFileChooser.APPROVE_OPTION)
512
                                return null;
513
                        JFileChooser.setLastPath("TRANSFORMATION_PANEL", chooser.getSelectedFile());
514
                        ExtendedFileFilter fileFilter = (ExtendedFileFilter) chooser.getFileFilter();
515
                        path = fileFilter.getNormalizedFilename(chooser.getSelectedFile());
516
                } else {
517
                        String file = getJTextNombreCapa().getText();
518
                        path = Utilities.createTempDirectory() + File.separator + getJTextNombreCapa().getText() + ".tif";
519
                        if(file.compareTo(RasterLibrary.getOnlyLayerName()) == 0)
520
                                RasterLibrary.usesOnlyLayerName();
521
                        updateNewLayerText();
522
                }
523
                return path;
524
        }
525

    
526
         public void updateNewLayerText() {
527
                 getJTextNombreCapa().setText(RasterLibrary.getOnlyLayerName());
528
         }
529

    
530

    
531
        /** Se construye el proceso y se lanza a ejecuci?n*/
532
        public void aplicar(){
533
                FLyrRasterSE rasterLayer= (FLyrRasterSE)layers.getLayer((String)getComboCapas().getSelectedItem());
534
                String filename= getFileSelected();
535

    
536
                boolean bandsSelected[] = getModeloTabla().getSeleccionadas();
537
                int bandCount = 0;
538
                for (int i= 0; i<bandsSelected.length;i++)
539
                        if(bandsSelected[i]==true)
540
                                bandCount++;
541
                int bandList[] = new int[bandCount];
542
                int index = 0;
543
                for (int i = 0; i < bandsSelected.length; i++){
544
                        if (bandsSelected[i])
545
                                {        bandList[index]=i;
546
                                        index++;
547
                                }
548
                }
549

    
550
                if(filename!=null){
551

    
552
                        if(getRTasseledCapOption().isSelected()){
553
                                // Comprobaciones
554
                                if(bandList.length!=4&& getTypeTasseledCap().getSelectedIndex()==0)
555
                                {
556
                                        RasterToolsUtil.messageBoxInfo(PluginServices.getText(this,"transformMSS_error"),"aviso" );
557
                                        return;
558
                                }
559
                                else if(bandList.length!=6 && getTypeTasseledCap().getSelectedIndex()==1)
560
                                {
561
                                        RasterToolsUtil.messageBoxInfo(PluginServices.getText(this,"transformTM_error"),"aviso" );
562
                                        return;
563
                                }
564
                                else if(bandList.length!=6 && getTypeTasseledCap().getSelectedIndex()==2){
565
                                        RasterToolsUtil.messageBoxInfo(PluginServices.getText(this,"transformETM_error"),"aviso" );
566
                                        return;
567
                                }
568

    
569
                                else{
570
                                        TasseledCapProcess process = new TasseledCapProcess();
571
                                        process.addParam("filename",filename);
572
                                        process.addParam("bands",bandList);
573
                                        process.addParam("datawriter",new WriterBufferServer());
574
                                        process.addParam("viewName", view.getName());
575
                                        process.addParam("type",new Integer(getTypeTasseledCap().getSelectedIndex()));
576
                                        process.addParam("layer",rasterLayer);
577
                                        process.start();
578
                                }
579
                        }
580

    
581
                        if(getRPrincipalComponentOption().isSelected()){
582

    
583
                                statisticsProcess = new PCStatisticsProcess();
584
                                selectedBands= getModeloTabla().getSeleccionadas();
585
                                statisticsProcess.addParam("selectedBands",selectedBands);
586
                                statisticsProcess.addParam("inputRasterLayer",rasterLayer);
587
                                statisticsProcess.setActions(this);
588
                                statisticsProcess.start();
589
                        }
590
                }
591
        }
592

    
593
        /**Cierra ventana actual*/
594
        public void close(){
595
                try {
596
                        RasterLibrary.removeOnlyLayerNameListener(this);
597
                        PluginServices.getMDIManager().closeWindow(this);
598
                } catch (ArrayIndexOutOfBoundsException ex) {
599
                        // Si la ventana no se puede eliminar no hacemos nada
600
                }
601
        }
602

    
603
        public void interrupted() {
604
                // TODO Auto-generated method stub
605

    
606
        }
607

    
608
        public void end(Object param) {
609
                String fileName = Utilities.createTempDirectory() + File.separator;
610
                fileName = fileName + RasterLibrary.getOnlyLayerName() + ".tif";
611
                RasterLibrary.usesOnlyLayerName();
612

    
613
                PrincipalComponentCalculusPanel altPrincipalComponentCalculusPanel = new PrincipalComponentCalculusPanel(view,(PCStatistics)param,statisticsProcess,selectedBands);
614
                altPrincipalComponentCalculusPanel.setFilename(fileName);
615
                PluginServices.getMDIManager().addWindow(altPrincipalComponentCalculusPanel);
616
        }
617

    
618
        public Object getWindowProfile() {
619
                return WindowInfo.PROPERTIES_PROFILE;
620
        }
621

    
622
}