Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extRasterTools / src / com / iver / cit / gvsig / rasterTools / saveRaster / ui / toolListeners / DataInputListener.java @ 4499

History | View | Annotate | Download (24.4 KB)

1
/*
2
 * Cresques Mapping Suite. Graphic Library for constructing mapping applications.
3
 *
4
 * Copyright (C) 2004-5.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
19
 *
20
 * For more information, contact:
21
 *
22
 * cresques@gmail.com
23
 */
24
package com.iver.cit.gvsig.rasterTools.saveRaster.ui.toolListeners;
25

    
26
import java.awt.event.ActionEvent;
27
import java.awt.event.ActionListener;
28
import java.awt.event.FocusEvent;
29
import java.awt.event.FocusListener;
30
import java.awt.event.KeyEvent;
31
import java.awt.event.KeyListener;
32
import java.awt.event.MouseEvent;
33
import java.awt.event.MouseListener;
34
import java.io.File;
35

    
36
import javax.swing.JFileChooser;
37
import javax.swing.JTextField;
38
import javax.swing.filechooser.FileFilter;
39

    
40
import org.cresques.io.GeoRasterWriter;
41

    
42
import com.iver.andami.PluginServices;
43
import com.iver.cit.gvsig.rasterTools.saveRaster.ui.SaveRasterControlsPanel;
44
import com.iver.cit.gvsig.rasterTools.saveRaster.ui.SaveRasterDefaultPanel;
45
import com.iver.cit.gvsig.rasterTools.saveRaster.util.MathUtils;
46

    
47

    
48
/**
49
 * Panel encargado de manejar los eventos del los controles de Salvar a Raster
50
 * @author Nacho Brodin (brodin_ign@gva.es)
51
 */
52
public class DataInputListener implements ActionListener,
53
                                                      MouseListener,
54
                                                      FocusListener,
55
                                                      KeyListener {
56
    final private static long                 serialVersionUID = -3370601314380922368L;
57
    private SaveRasterControlsPanel        controlPanel = null;
58
    private SaveRasterDefaultPanel         dialog = null;
59
    private String                                         fName = null;
60
    private int                                                widthInPixels = 0;
61
    private int                                                heightInPixels = 0;
62
    private double                                        mtsPerPixel = 0D;
63
    private Object                                        obj = null;
64
    private double                                        widthMts = 0D, heightMts = 0D;
65

    
66
    /**
67
     * This method initializes
68
     *
69
     */
70
    public DataInputListener(SaveRasterControlsPanel controlPanel) {
71
        super();
72
        this.controlPanel = controlPanel;
73
        initialize();
74
    }
75

    
76
    /**
77
     * This method initializes this
78
     *
79
     * @return void
80
     */
81
    void initialize() {
82

    
83
        //A?adimos gesti?n de eventos
84
            controlPanel.getTScale().addActionListener(this);
85
            controlPanel.getTScale().addMouseListener(this);
86
            controlPanel.getTScale().addFocusListener(this);
87
            controlPanel.getTScale().addKeyListener(this);
88
            
89
            controlPanel.getTMtsPixel().addActionListener(this);
90
            controlPanel.getTMtsPixel().addMouseListener(this);
91
            controlPanel.getTMtsPixel().addFocusListener(this);
92
            controlPanel.getTMtsPixel().addKeyListener(this);
93

    
94
            controlPanel.getTWidth().addActionListener(this);
95
            controlPanel.getTWidth().addMouseListener(this);
96
            controlPanel.getTWidth().addFocusListener(this);
97
            controlPanel.getTWidth().addKeyListener(this);
98
            controlPanel.getTHeight().addActionListener(this);
99
            controlPanel.getTHeight().addMouseListener(this);
100
            controlPanel.getTHeight().addFocusListener(this);
101
            controlPanel.getTHeight().addKeyListener(this);
102
            
103
            controlPanel.getCbMeasureType().addActionListener(this);
104
            
105
            controlPanel.getTInfDerX().addActionListener(this);
106
            controlPanel.getTInfDerY().addActionListener(this);
107
            controlPanel.getTSupIzqX().addActionListener(this);
108
            controlPanel.getTSupIzqY().addActionListener(this);
109
            controlPanel.getTInfDerX().addMouseListener(this);
110
            controlPanel.getTInfDerY().addMouseListener(this);
111
            controlPanel.getTSupIzqX().addMouseListener(this);
112
            controlPanel.getTSupIzqY().addMouseListener(this);
113
        controlPanel.getTInfDerX().addFocusListener(this);
114
        controlPanel.getTInfDerY().addFocusListener(this);
115
        controlPanel.getTSupIzqX().addFocusListener(this);
116
        controlPanel.getTSupIzqY().addFocusListener(this);
117
        
118
        controlPanel.getBSelect().addActionListener(this);
119
        controlPanel.getBProperties().addActionListener(this);
120
                
121
            controlPanel.getCbResolution().addActionListener(this);
122
        controlPanel.getCbResolution().addKeyListener(this);
123
    }
124

    
125
    /**
126
     * Asigna un valor al panel padre
127
     * @param dialogPanel
128
     */
129
    public void setDialogPanel(SaveRasterDefaultPanel dialog) {
130
        this.dialog = dialog;
131
    }
132

    
133
    /**
134
     * Obtiene el Panel de Controles interior
135
     * @return
136
     */
137
    public SaveRasterControlsPanel getSaveParameters() {
138
        if (controlPanel == null) {
139
                controlPanel = new SaveRasterControlsPanel();
140
            //saveRaster.setBounds(9, 9, 328, 75);
141
        }
142
        return controlPanel;
143
    }
144
    
145
    /**
146
         * A partir del valor de tama?o de imagen de salida, comprueba el tipo de 
147
         * dato seleccionado por el usuario (Pixels, mms, cms, mts, pulgadas) y devuelve
148
         * el valor en pixeles.
149
         * @param value Cadena introducida por el usuario
150
         */
151
        private int getCorrectMeasure(String value){                        
152
                if(controlPanel.getCbMeasureType().getSelectedItem().equals("Pixels"))
153
                        return Integer.parseInt(value);
154
                
155
                int ppp = Integer.parseInt((String)controlPanel.getCbResolution().getSelectedItem());
156
                if(controlPanel.getCbMeasureType().getSelectedItem().equals("Mts"))
157
                        return MathUtils.convertMtsToPixels(Double.parseDouble(value), ppp); 
158
                if(controlPanel.getCbMeasureType().getSelectedItem().equals("Cms"))
159
                        return MathUtils.convertCmsToPixels(Double.parseDouble(value), ppp);
160
                if(controlPanel.getCbMeasureType().getSelectedItem().equals("Mms"))
161
                        return MathUtils.convertMmsToPixels(Double.parseDouble(value), ppp);
162
                if(controlPanel.getCbMeasureType().getSelectedItem().equals("Inches"))
163
                        return MathUtils.convertInchesToPixels(Double.parseDouble(value), ppp);
164
                
165
                return 0;
166
        }
167
        
168
        /**
169
         * Asigna al JTextField pasado como par?metro el valor en pixels, cms, mms ,mtrs, pulgadas dependiendo
170
         * de la selecci?n del combo
171
         * @param pixel        Valor en pixels        
172
         * @param field Campo donde se escribe el valor
173
         */
174
        private void setCorrectMeasure(int pixel, JTextField field){                        
175
                if(controlPanel.getCbMeasureType().getSelectedItem().equals("Pixels"))
176
                        field.setText(String.valueOf(pixel));
177
                
178
                int ppp = Integer.parseInt((String)controlPanel.getCbResolution().getSelectedItem());
179
                if(controlPanel.getCbMeasureType().getSelectedItem().equals("Mts"))
180
                        field.setText(String.valueOf(MathUtils.tailDecimals(MathUtils.convertPixelsToMts(pixel, ppp),5)));
181
                
182
                if(controlPanel.getCbMeasureType().getSelectedItem().equals("Cms"))
183
                        field.setText(String.valueOf(MathUtils.tailDecimals(MathUtils.convertPixelsToCms(pixel, ppp),5)));
184
                        
185
                if(controlPanel.getCbMeasureType().getSelectedItem().equals("Mms"))
186
                        field.setText(String.valueOf(MathUtils.tailDecimals(MathUtils.convertPixelsToMms(pixel, ppp),5)));
187
                        
188
                if(controlPanel.getCbMeasureType().getSelectedItem().equals("Inches"))
189
                        field.setText(String.valueOf(MathUtils.tailDecimals(MathUtils.convertPixelsToInches(pixel, ppp),5)));
190
                        
191
        }
192
                
193
    /**
194
     * Calculo del tama?o en pixels de la imagen a partir de las coordenadas del
195
     * mundo real, la escala y los puntos por pulgada
196
     */
197
    private void recalcParams() {
198
            validateFields();
199
            double[] size = null;
200
             try{
201
                     size = calcSizeInMts();
202
             } catch (NumberFormatException e) {
203
                        return;
204
             }
205
             widthMts = size[0];
206
        heightMts = size[1];
207
            
208
            int resolution = Integer.parseInt((String)controlPanel.getCbResolution().getSelectedItem());
209
             
210
            //M?todo por escala seleccionado
211
            if(        controlPanel.getRbScale().isSelected() && 
212
                    !controlPanel.getTScale().getText().equals("")){
213
                    int scale = Integer.parseInt(controlPanel.getTScale().getText());
214
                    if(controlPanel.getProjection().isProjected())
215
                            calcSizeMtsPixel(scale, resolution);
216
                    else
217
                            calcSizeMtsPixelGeodesicas(scale, resolution);
218
            }
219
            
220
            //M?todo por tama?o seleccionado
221
            if(controlPanel.getRbSize().isSelected()){
222
                double rel = (widthMts / heightMts);
223
                        
224
                    if(        obj != null && obj.equals(controlPanel.getTWidth()) &&
225
                            !controlPanel.getTWidth().getText().equals("")){
226
                            this.widthInPixels = this.getCorrectMeasure(controlPanel.getTWidth().getText());
227
                            this.heightInPixels = (int)Math.floor(this.widthInPixels / rel);
228
                            if(controlPanel.getProjection().isProjected())
229
                                    calcScaleMtsPixel(this.widthInPixels, this.heightInPixels, resolution);
230
                    }
231
                    if(        obj != null && obj.equals(controlPanel.getTHeight()) &&
232
                                !controlPanel.getTHeight().getText().equals("")){
233
                            this.heightInPixels = this.getCorrectMeasure(controlPanel.getTHeight().getText());
234
                            this.widthInPixels = (int)Math.ceil(this.heightInPixels * rel);
235
                            if(controlPanel.getProjection().isProjected())
236
                                    calcScaleMtsPixel(this.widthInPixels, this.heightInPixels, resolution);
237
                }
238
                    if(        obj != null && 
239
                            (obj.equals(controlPanel.getCbMeasureType()) || obj.equals(controlPanel.getCbResolution()) )){
240
                                    if(controlPanel.getProjection().isProjected())
241
                                            calcScaleMtsPixel(this.widthInPixels, this.heightInPixels, resolution);
242
                    }
243
            }
244
            
245
            //M?todo metros por pixel seleccionado
246
            if(        controlPanel.getRbMtsPixel().isSelected() && 
247
                    !controlPanel.getTMtsPixel().getText().equals("")){
248
                    double mtsPixel = Double.parseDouble(controlPanel.getTMtsPixel().getText());
249
                    calcSizeScale(mtsPixel, resolution);
250
            }
251
    }
252

    
253
    /**
254
     * Comprueba si un campo de texto tiene el tipo de dato entero o double y si no lo
255
     * tiene lo borra ya que su contenido es invalido para operar con el
256
     * @param field        Campo de texto a validar
257
     * @param isInt true si el valor a validar es entero y false si es double
258
     */
259
    private void validateTextField(JTextField field, boolean isInt){
260
            try {
261
                    if(isInt)
262
                   Integer.parseInt(field.getText());
263
                    else
264
                            Double.parseDouble(field.getText());
265
            } catch (NumberFormatException e) {
266
                       field.setText("");
267
            }
268
    }
269
    
270
    /**
271
     * Valida los campos de texto
272
     */
273
    private void validateFields(){
274
            
275
            if(controlPanel.getRbScale().isSelected()){
276
                    controlPanel.getTWidth().setText("");
277
                    controlPanel.getTHeight().setText("");
278
                    controlPanel.getTMtsPixel().setText("");
279
            }
280
            
281
            if(controlPanel.getRbSize().isSelected()){
282
                    controlPanel.getTScale().setText("");
283
                    controlPanel.getTMtsPixel().setText("");
284
            }
285
            
286
            if(controlPanel.getRbMtsPixel().isSelected()){
287
                    controlPanel.getTWidth().setText("");
288
                    controlPanel.getTHeight().setText("");
289
                    controlPanel.getTScale().setText("");
290
            }
291
            
292
            //Validamos la escala si se ha introducido algo
293
            if(!controlPanel.getTScale().getText().equals(""))
294
                    validateTextField(controlPanel.getTScale(), true);
295
                        
296
            //Validamos los mts por pixel si se ha introducido algo
297
            if(!controlPanel.getTMtsPixel().getText().equals(""))
298
                    validateTextField(controlPanel.getTMtsPixel(), false);
299
            
300
            //Validamos el ancho si se ha introducido algo
301
            if(!controlPanel.getTWidth().getText().equals("")){
302
                    if(((String)controlPanel.getCbMeasureType().getSelectedItem()).equals("Pixels"))
303
                            validateTextField(controlPanel.getTWidth(), true);
304
                    else
305
                            validateTextField(controlPanel.getTWidth(), false);
306
            }
307
            
308
            //Validamos el alto si se ha introducido algo
309
            if(!controlPanel.getTHeight().getText().equals("")){
310
                    if(((String)controlPanel.getCbMeasureType().getSelectedItem()).equals("Pixels"))
311
                            validateTextField(controlPanel.getTHeight(), true);
312
                    else
313
                            validateTextField(controlPanel.getTHeight(), false);
314
            }
315
    }
316
    
317
    /**
318
     * Calcula el tama?o en mtrs a partir de las coordenadas.
319
     * TODO: Esto solo es valido para UTM. El ancho y alto debe obtenerse desde la vista
320
     * @return
321
     * @throws NumberFormatException
322
     */
323
    private double[] calcSizeInMts()throws NumberFormatException{
324
            double[] size = new double[2];
325
      
326
            double lrX = Double.parseDouble(controlPanel.getTInfDerX().getText());
327
        double lrY = Double.parseDouble(controlPanel.getTInfDerY().getText());
328
        double ulX = Double.parseDouble(controlPanel.getTSupIzqX().getText());
329
        double ulY = Double.parseDouble(controlPanel.getTSupIzqY().getText());
330

    
331
        if (ulX > lrX) {
332
            size[0] = ulX - lrX;
333
        } else {
334
                size[0] = lrX - ulX;
335
        }
336
        
337
        if (ulY > lrY) {
338
                size[1] = ulY - lrY;
339
        } else {
340
                size[1] = lrY - ulY;
341
        }
342
        return size;
343
    }
344
    
345
    /**
346
     * A partir de la escala y la resoluci?n calcula el tama?o en pixels y los metros por pixel
347
     * si la imagen est? en coordenadas geograficas.
348
     * @param scale Escala
349
     * @param resolution Resoluci?n
350
     */
351
    private void calcSizeMtsPixelGeodesicas(int scaleIntro, int resolution){        
352
            /*double lrX = Double.parseDouble(controlPanel.getTInfDerX().getText());
353
            double ulX = Double.parseDouble(controlPanel.getTSupIzqX().getText());
354
            
355
            //Nos aseguramos de que la escala sea un entero. Si no lo es ponemos un 0
356
        try {
357
            Integer.parseInt(controlPanel.getTScale().getText());
358
        } catch (NumberFormatException e) {
359
                controlPanel.getTScale().setText("0");
360
        }
361
        
362
            double scale = controlPanel.getProjection().getScale(ulX, lrX, 
363
                            controlPanel.getWidthInPixelsGeodesicas(), 
364
                            Integer.parseInt((String)controlPanel.getCbResolution().getSelectedItem()));
365

366
            int widthPixels = (int)((scaleIntro * saveRaster.getWidth()) / scale);
367
            int heightPixels = (int)((scaleIntro * saveRaster.getHeight()) / scale);
368
            
369
            saveRaster.getTancho().setText(String.valueOf(widthPixels));
370
        saveRaster.getTalto().setText(String.valueOf(heightPixels));*/
371
    }
372
    
373
    /**
374
     * A partir de la escala y la resoluci?n calcula el tama?o en pixels y los metros por pixel
375
     * @param scale Escala
376
     * @param resolution Resoluci?n
377
     */
378
    private void calcSizeMtsPixel(int scale, int resolution){        
379
            if ((widthMts <= 0) || (heightMts <= 0) ||
380
                 (Integer.parseInt(controlPanel.getTScale().getText()) == 0)) {
381
                 controlPanel.getTWidth().setText("");
382
                 controlPanel.getTHeight().setText("");
383
             return;
384
        }
385

    
386
        //Calculo del tama?o de la imagen definitiva en pulgadas
387
        double widthInches = (widthMts / Double.parseDouble(controlPanel.getTScale().getText())) * MathUtils.INCHESMTR;
388
        double heightInches = (heightMts / Double.parseDouble(controlPanel.getTScale().getText())) * MathUtils.INCHESMTR;
389

    
390
        //Ancho en pixeles = ppp * sizepulgadas
391
        int widthPixels = (int) (Integer.parseInt(controlPanel.getCbResolution().getSelectedItem().toString()) * widthInches);
392
        int heightPixels = (int) (Integer.parseInt(controlPanel.getCbResolution().getSelectedItem().toString()) * heightInches);
393
                 
394
        mtsPerPixel = (double)(widthMts / widthPixels);        
395
        //double mtsPixelH = wc_altomts/altoPixels;
396
       
397
        //recortamos a 5 decimales
398
        mtsPerPixel = MathUtils.tailDecimals(mtsPerPixel, 5);
399
        
400
        controlPanel.getTMtsPixel().setText(String.valueOf(mtsPerPixel));
401
        this.setCorrectMeasure(widthPixels, controlPanel.getTWidth());
402
        this.setCorrectMeasure(heightPixels, controlPanel.getTHeight());
403
        this.widthInPixels = widthPixels;
404
        this.heightInPixels = heightPixels;
405
        
406
        //int anchopixels =(int) (Toolkit.getDefaultToolkit().getScreenResolution() * anchopulgadas);
407
        //int altopixels = (int) (Toolkit.getDefaultToolkit().getScreenResolution() * altopulgadas);
408
    }
409
    
410
    /**
411
     * A partir de los metros por pixel y la resoluci?n calcula el tama?o en pixels y la escala
412
     * @param mtsPixel Metros por pixel 
413
     * @param resolution Resoluci?n
414
     */
415
    private void calcSizeScale(double mtsPixel, int resolution){        
416
        //N?mero de p?xeles de ancho y alto 
417
        int widthPixels = (int)(widthMts / mtsPixel);
418
        int heightPixels = (int)(heightMts / mtsPixel);
419
        
420
        //Obtenemos los mts/pixel reales ya que el n?mero de pixeles es entero deben redondearse
421
        mtsPerPixel = (double)(widthMts / widthPixels);
422
        
423
        //recortamos a 5 decimales
424
        mtsPerPixel = MathUtils.tailDecimals(mtsPerPixel, 5);
425
        
426
        //Obtenemos el ancho y alto en pulgadas
427
        double widthInches = (double)(widthPixels / Integer.parseInt(controlPanel.getCbResolution().getSelectedItem().toString()));
428
        double heightInches = (double)(heightPixels / Integer.parseInt(controlPanel.getCbResolution().getSelectedItem().toString()));
429
        
430
        //Calculo de la escala
431
        int scale = (int)((widthMts * MathUtils.INCHESMTR) / widthInches);
432
        
433
        controlPanel.getTScale().setText(String.valueOf(scale));
434
        controlPanel.getTMtsPixel().setText(String.valueOf(mtsPerPixel));
435
        this.setCorrectMeasure(widthPixels, controlPanel.getTWidth());
436
        this.setCorrectMeasure(heightPixels, controlPanel.getTHeight());
437
        this.widthInPixels = widthPixels;
438
        this.heightInPixels = heightPixels;  
439
    }
440

    
441
    /**
442
     * A partir del tama?o en pixels de la imagen y la resoluci?n calcula los metros por pixel y la escala
443
     * @param widthPixels        Ancho de la imagen en pixels
444
     * @param heightPixels        Alto de la imagen en pixels
445
     * @param resolution Resoluci?n
446
     */
447
        private void calcScaleMtsPixel(int widthPixels, int heightPixels, int resolution){
448
        this.widthInPixels = widthPixels;
449
        this.heightInPixels = heightPixels;
450
        
451
        //Obtenemos los mts/pixel reales ya que el n?mero de pixeles es entero deben redondearse
452
        mtsPerPixel = (double)(widthMts / widthPixels);
453
        
454
        //recortamos a 5 decimales
455
        mtsPerPixel = MathUtils.tailDecimals(mtsPerPixel, 5);
456
        
457
        //Obtenemos el ancho y alto en pulgadas
458
        double widthInches = (double)(widthPixels / Integer.parseInt(controlPanel.getCbResolution().getSelectedItem().toString()));
459
        double heightInches = (double)(heightPixels / Integer.parseInt(controlPanel.getCbResolution().getSelectedItem().toString()));
460
        
461
        //Calculo de la escala
462
        int scale = (int)((widthMts * MathUtils.INCHESMTR) / widthInches);
463
        
464
        controlPanel.getTScale().setText(String.valueOf(scale));
465
        controlPanel.getTMtsPixel().setText(String.valueOf(mtsPerPixel));
466
        this.setCorrectMeasure(widthPixels, controlPanel.getTWidth());
467
        this.setCorrectMeasure(heightPixels, controlPanel.getTHeight());
468
        }
469
                    
470
    /**
471
     * Controla cuando se cumplen todos los requisitos en el formulario para
472
     * poder activar el bot?n de aceptar.
473
     */
474
    private void enableButtons() {
475
        if(        controlPanel.getTWidth().getText().equals("0") ||
476
                controlPanel.getTHeight().getText().equals("0") ||
477
                controlPanel.getTWidth().getText().equals("") ||
478
                controlPanel.getTHeight().getText().equals("") ||
479
                this.fName == null || this.fName.equals("")){
480
            if (dialog != null)
481
                dialog.getAcceptButton().setEnabled(false);
482
            return;
483
        }
484

    
485
        if (dialog != null) 
486
            dialog.getAcceptButton().setEnabled(true);
487
    }
488

    
489
    /**
490
     * Gestiona los eventos del cambio de escala de la imagen y lla apertura del
491
     * dialogo de selecci?n del nombre del fichero.
492
     */
493
    public void actionPerformed(ActionEvent e) {
494
            obj = e.getSource();
495
    
496
        //Selector de Fichero sobre el cual se va a salvar a raster
497
        if (obj.equals(controlPanel.getBSelect())) {
498
            JFileChooser chooser = new JFileChooser("./");
499
            chooser.setDialogTitle(PluginServices.getText(this, "seleccionar_fichero"));
500

    
501
            //A?adimos las extensiones que hayan sido registradas en el driver
502
            String[] extList = GeoRasterWriter.getDriversExtensions();
503
            for(int i=0;i<extList.length;i++)
504
                    chooser.addChoosableFileFilter(new WriterFilter(chooser, extList[i]));
505
                             
506
            int returnVal = chooser.showOpenDialog(controlPanel);
507

    
508
            if (returnVal == JFileChooser.APPROVE_OPTION) {
509
                this.fName = chooser.getSelectedFile().toString();
510
                String ext = ((WriterFilter)chooser.getFileFilter()).getDescription();
511
                
512
                FileFilter filter = chooser.getFileFilter();
513
                ext = ext.toLowerCase().substring(ext.lastIndexOf(".") + 1, ext.length());
514

    
515
                if ((fName != null) && !fName.equals("")) {
516
                        if(!fName.endsWith(ext))
517
                                fName = fName + "." + ext;
518
                        
519
                        controlPanel.getBProperties().setText(PluginServices.getText(this, "props")+" "+GeoRasterWriter.getDriverType(ext));
520
                }
521
                controlPanel.getBProperties().setEnabled(true);
522
                controlPanel.getLFileName().setText(fName.substring(fName.lastIndexOf(File.separator) + 1, fName.length()));
523
             
524
                enableButtons();
525
            }
526
        }
527
        
528
        //Al variar los puntos por pulgada o las unidades recalculamos el ancho y el alto
529
        if (e.getSource().equals(controlPanel.getCbMeasureType()) || 
530
                e.getSource().equals(controlPanel.getCbResolution())) {
531
                
532
                this.setCorrectMeasure(this.widthInPixels, controlPanel.getTWidth());
533
                this.setCorrectMeasure(this.heightInPixels, controlPanel.getTHeight());
534
        }
535
        
536
        if (!obj.equals(controlPanel.getBSelect()))
537
                this.recalcParams();
538
        
539
        this.enableButtons();
540
        
541
    }
542

    
543
    /**
544
     * Devuelve el nombre del fichero seleccionado
545
     * @return Nombre del fichero seleccionado
546
     */
547
    public String getFileName() {
548
        return fName;
549
    }
550

    
551
    /**
552
     * Unused
553
     */
554
    public void mouseExited(MouseEvent e) {
555
    }
556

    
557
    /**
558
     * Unused. Only for compilant purposes
559
     */
560
    public void mouseReleased(MouseEvent e) {
561
    }
562

    
563
    /**
564
     * Unused. Only for compilant purposes
565
     */
566
    public void mouseEntered(MouseEvent e) {
567
    }
568

    
569
    public void mouseClicked(MouseEvent e) {
570
            obj = e.getSource();
571
        this.recalcParams();
572
        enableButtons();
573
    }
574

    
575
    /**
576
     * Unused. Only for compilant purposes
577
     */
578
    public void mousePressed(MouseEvent e) {
579
    }
580

    
581
    /**
582
     * Unused. Only for compilant purposes
583
     */
584
    public void focusGained(FocusEvent e) {
585
    }
586

    
587
    /**
588
     * Recalcula el tama?o de la imagen con los datos existentes y
589
     * activa o desactiva los botones.
590
     */
591
    public void focusLost(FocusEvent e) {
592
            obj = e.getSource();
593
        this.recalcParams();
594
        enableButtons();
595
    }
596

    
597
    /**
598
     * Activa o Desactiva los botones a trav?s de la funci?n que valida los campos
599
     */
600
    public void keyTyped(KeyEvent e) {
601
        enableButtons();
602
    }
603

    
604
    /**
605
     * Activa o Desactiva los botones a trav?s de la funci?n que valida los campos
606
     */
607
    public void keyPressed(KeyEvent e) {
608
        enableButtons();
609
    }
610

    
611
    /**
612
     * Activa o Desactiva los botones a trav?s de la funci?n que valida los campos
613
     */
614
    public void keyReleased(KeyEvent e) {
615
        enableButtons();
616
    }
617

    
618
    /**
619
     * Obtiene la altura en pixels de la imagen de salida
620
     * @return entero con la altura en pixels
621
     */
622
        public int getHeightInPixels() {
623
                return heightInPixels;
624
        }
625
        
626
        /**
627
     * Obtiene la anchura en pixels de la imagen de salida
628
     * @return entero con la anchura en pixels
629
     */
630
        public int getWidthInPixels() {
631
                return widthInPixels;
632
        }
633
}
634

    
635
/**
636
 * @author Nacho Brodin <brodin_ign@gva.es>
637
 * Filtro para el selector de formatos de escritura
638
 */
639
class WriterFilter extends javax.swing.filechooser.FileFilter {
640
    private JFileChooser chooser = null;
641
    private String filter;
642

    
643
    public WriterFilter(JFileChooser ch, String fil) {
644
        this.chooser = ch;
645
        this.filter = fil;
646
    }
647

    
648
    public boolean accept(File f) {
649
        return f.isDirectory() || f.getName().toLowerCase().endsWith("."+filter);
650
    }
651

    
652
    public String getDescription() {
653
        return "."+filter;
654
    }
655
}
656