Statistics
| Revision:

svn-gvsig-desktop / branches / CqCMSDvp / libraries / libCq CMS for java.old / src / org / cresques / ui / raster / SaveSetupPanel.java @ 2100

History | View | Annotate | Download (9.08 KB)

1
/*
2
 * Created on 18-feb-2005
3
 */
4
package org.cresques.ui.raster;
5

    
6

    
7
import java.awt.Dimension;
8
import java.awt.event.ActionEvent;
9
import java.awt.event.ActionListener;
10
import java.awt.event.FocusEvent;
11
import java.awt.event.FocusListener;
12
import java.awt.event.KeyEvent;
13
import java.awt.event.KeyListener;
14
import java.awt.event.MouseEvent;
15
import java.awt.event.MouseListener;
16
import java.io.File;
17

    
18
import javax.swing.JDialog;
19
import javax.swing.JFileChooser;
20
import javax.swing.JPanel;
21
import javax.swing.filechooser.FileFilter;
22

    
23

    
24

    
25
/**
26
 * Panel encargado de manejar los eventos del los controles de Salvar a Raste
27
 * @author Nacho Brodin <brodin_ign@gva.es>
28
 */
29
public class SaveSetupPanel extends JPanel implements ActionListener, MouseListener, FocusListener, KeyListener{
30
        private DataInputSaveRaster saveRaster = null;
31
        private SaveRasterDialogPanel dialogPanel = null;
32
        private String fName = null; 
33

    
34
        /**
35
         * This method initializes 
36
         * 
37
         */
38
        public SaveSetupPanel() {
39
                super();
40
                initialize();
41
        }
42
        /**
43
         * This method initializes this
44
         * 
45
         * @return void
46
         */
47
        void initialize() {
48
        this.setPreferredSize(new Dimension(350,210)); //AnchoxAlto  panel interior
49
        this.setBounds(0, 0, 300, 250);
50
        this.setLayout(null);
51
        this.add(getSaveParameters(), null);
52
        
53
        //A?adimos gesti?n de eventos        
54
        
55
        saveRaster.getJComboBox().addActionListener(this);
56
        saveRaster.getTescala().addActionListener(this);
57
        saveRaster.getTescala().addMouseListener(this);
58
        saveRaster.getTescala().addFocusListener(this);
59
        saveRaster.getTinf_derX().addActionListener(this);
60
        saveRaster.getTinf_derY().addActionListener(this);
61
        saveRaster.getTsup_izqX().addActionListener(this);
62
        saveRaster.getTsup_izqY().addActionListener(this);
63
        saveRaster.getTinf_derX().addMouseListener(this);
64
        saveRaster.getTinf_derY().addMouseListener(this);
65
        saveRaster.getTsup_izqX().addMouseListener(this);
66
        saveRaster.getTsup_izqY().addMouseListener(this);
67
        saveRaster.getTinf_derX().addFocusListener(this);
68
        saveRaster.getTinf_derY().addFocusListener(this);
69
        saveRaster.getTsup_izqX().addFocusListener(this);
70
        saveRaster.getTsup_izqY().addFocusListener(this);
71
        saveRaster.getBseleccion().addActionListener(this);
72
        saveRaster.getBPropiedades().addActionListener(this);
73
        saveRaster.getTescala().addKeyListener(this);
74
        saveRaster.getJComboBox().addKeyListener(this);
75
        }
76

    
77
        /**
78
         * Asigna un valor al panel padre
79
         * @param dialogPanel
80
         */
81
        
82
        public void setDialogPanel(SaveRasterDialogPanel dialogPanel){
83
                this.dialogPanel = dialogPanel;
84
        }
85
        
86
        /**
87
         * Obtiene el Panel de Controles interior
88
         * @return
89
         */
90
        
91
        public DataInputSaveRaster getSaveParameters() {
92
                if (saveRaster == null) {
93
                        saveRaster = new DataInputSaveRaster();
94
                        //saveRaster.setBounds(9, 9, 328, 75);
95

    
96
                }
97
                return saveRaster;
98
        }
99
        
100
        /**
101
         * Calculo del tama?o en pixels de la imagen a partir de las coordenadas del 
102
         * mundo real, la escala y los puntos por pulgada
103
         */
104
        private void calcSizeImage(){
105
                double lrX = Double.parseDouble(saveRaster.getTinf_derX().getText());
106
                double lrY = Double.parseDouble(saveRaster.getTinf_derY().getText());
107
                double ulX = Double.parseDouble(saveRaster.getTsup_izqX().getText());
108
                double ulY = Double.parseDouble(saveRaster.getTsup_izqY().getText());
109
                double wc_anchomts = 0;
110
                if(ulX>lrX)wc_anchomts = ulX-lrX;
111
                        else wc_anchomts = lrX-ulX;
112
                double wc_altomts = 0;
113
                if(ulY>lrY)wc_altomts = ulY-lrY;
114
                        else wc_altomts = lrY-ulY;
115
                //double wc_anchomts = Double.parseDouble(saveRaster.getTinf_derX().getText())  - Double.parseDouble(saveRaster.getTsup_izqX().getText());
116
                //double wc_altomts = Double.parseDouble(saveRaster.getTinf_derY().getText()) -  Double.parseDouble(saveRaster.getTsup_izqY().getText());
117
                
118
                if(wc_anchomts<=0 || wc_altomts<=0 ||  Integer.parseInt(saveRaster.getTescala().getText())==0 ){
119
                        saveRaster.getTancho().setText("0");
120
                        saveRaster.getTalto().setText("0");
121
                        return;
122
                }
123
                
124
                //Calculo del tama?o de la imagen definitiva en pulgadas
125
                
126
                double anchopulgadas = (wc_anchomts / Double.parseDouble(saveRaster.getTescala().getText())) * 39.73007874;
127
                double altopulgadas = (wc_altomts / Double.parseDouble (saveRaster.getTescala().getText())) * 39.73007874;
128
                
129
                //Ancho en pixeles = ppp * sizepulgadas
130
                
131
                int anchopixels =(int) (Integer.parseInt(saveRaster.getJComboBox().getSelectedItem().toString() ) * anchopulgadas);
132
                int altopixels = (int) (Integer.parseInt(saveRaster.getJComboBox().getSelectedItem().toString() ) * altopulgadas);
133
                           
134
                saveRaster.getTancho().setText(String.valueOf(anchopixels));
135
                saveRaster.getTalto().setText(String.valueOf(altopixels));
136
        }
137
        
138
        /**
139
         * Controla cuando se cumplen todos los requisitos en el formulario para 
140
         * poder activar el bot?n de aceptar.
141
         */
142
        private void enableButtons(){
143
                
144
                if(        saveRaster.getTescala()== null || 
145
                        saveRaster.getTescala().getText().equals("") ||
146
                        saveRaster.getTescala().getText().equals("0") ||
147
                        this.fName == null ||
148
                    this.fName.equals("")){
149
                                if(dialogPanel!=null)
150
                                        dialogPanel.getAcceptButton().setEnabled(false);
151
                                return;
152
                }
153
        
154
                
155
                if( saveRaster.getTancho().getText().equals("0") ||
156
                        saveRaster.getTalto().getText().equals("0")){
157
                        if(dialogPanel!=null)
158
                                dialogPanel.getAcceptButton().setEnabled(false);
159
                        return;
160
                }
161
                
162
                if(dialogPanel!=null)
163
                        dialogPanel.getAcceptButton().setEnabled(true);
164
        }
165
        
166
                
167
        /**
168
         * 
169
         */
170
        public void actionPerformed(ActionEvent e){
171
                
172
                if(                e.getSource().equals(saveRaster.getJComboBox()) ||
173
                                e.getSource().equals(saveRaster.getTescala()) ||
174
                                e.getSource().equals(saveRaster.getTinf_derX()) || 
175
                                e.getSource().equals(saveRaster.getTinf_derY()) ||
176
                                e.getSource().equals(saveRaster.getTsup_izqX()) ||
177
                                e.getSource().equals(saveRaster.getTsup_izqY()) ){
178
                        this.calcSizeImage();
179
                        this.enableButtons();
180
                }
181
                        
182
                //Selector de Fichero sobre el cual se va a salvar a raster
183
                
184
                if(        e.getSource().equals(saveRaster.getBseleccion())){
185
                         JFileChooser chooser = new JFileChooser("./");
186
                         chooser.setDialogTitle("Seleccionar el fichero");        
187
                         chooser.addChoosableFileFilter(new EcwFilter(chooser));
188
                         chooser.addChoosableFileFilter(new TifFilter(chooser));
189
                         int returnVal = chooser.showOpenDialog(this);
190
                         if(returnVal == JFileChooser.APPROVE_OPTION){
191
                                 this.fName = chooser.getSelectedFile().toString();
192
        
193
                                 FileFilter filter = chooser.getFileFilter();
194
                                 if(fName!=null && !fName.equals("")){
195
                                         if(this.fName.endsWith(".ecw"))
196
                                                 saveRaster.getBPropiedades().setText("Propiedades Ecw");
197
                                         else if(this.fName.endsWith(".tif"))
198
                                                 saveRaster.getBPropiedades().setText("Propiedades GeoTiff");
199
                                         else if(filter.getDescription().equals(".ecw"))
200
                                                 saveRaster.getBPropiedades().setText("Propiedades Ecw");
201
                                         else if(filter.getDescription().equals(".tif"))
202
                                                 saveRaster.getBPropiedades().setText("Propiedades GeoTiff");
203
                                 }
204
                                 if(        !fName.endsWith(".ecw") &&
205
                                         !fName.endsWith(".tif"))
206
                                         fName = new String(chooser.getSelectedFile().toString()+filter.getDescription());
207
                
208
                                 enableButtons();
209
                         }
210
            }
211
        }
212
        
213
        
214
        /**
215
         * Devuelve el nombre del fichero seleccionado
216
         * @return Nombre del fichero seleccionado
217
         */
218
        public String getFileName(){
219
                return fName;
220
        }
221
        
222
        public void mouseExited(MouseEvent e){}
223
        public void mouseReleased(MouseEvent e){}        
224
        public void mouseEntered(MouseEvent e){}
225
        
226
        public void mouseClicked(MouseEvent e){
227
                this.calcSizeImage();
228
                enableButtons();
229
        }
230
        
231
        public void mousePressed(MouseEvent e){}
232
        public void focusGained(FocusEvent e){}
233
        public void focusLost(FocusEvent e){
234
                this.calcSizeImage();
235
                enableButtons();
236
        }
237
        public void keyTyped(KeyEvent e){enableButtons();}
238
        public void keyPressed(KeyEvent e){enableButtons();}
239
        public void keyReleased(KeyEvent e){enableButtons();}
240
 }  
241

    
242
/**
243
 * @author Nacho Brodin <brodin_ign@gva.es>
244
 * Filtro Ecw para el selector de formatos de escritura
245
 */
246
class EcwFilter extends javax.swing.filechooser.FileFilter {
247
        
248
        private JFileChooser chooser = null;
249
        
250
        public EcwFilter(JFileChooser ch){
251
                this.chooser = ch;
252
        }
253
        
254
    public boolean accept(File f) {
255
            /*if(chooser.getSelectedFile()!=null){
256
                    String sfile = chooser.getSelectedFile().toString();
257
                    //chooser.setSelectedFile(new File(sfile));
258
                    System.out.println("ECW..."+sfile.toString());
259
            }*/
260
            return f.isDirectory() || f.getName().toLowerCase().endsWith(".ecw");
261
    }
262
    
263
    public String getDescription() {
264
            return ".ecw";
265
    }
266
    
267
}
268

    
269
/**
270
 * @author Nacho Brodin <brodin_ign@gva.es>
271
 * Filtro GTiff para el selector de formatos de escritura
272
 */
273
class TifFilter extends javax.swing.filechooser.FileFilter {
274
        
275
        private JFileChooser chooser = null;
276
        
277
        public TifFilter(JFileChooser ch){
278
                this.chooser = ch;
279
        }
280
        
281
    public boolean accept(File f) {
282
            /*if(chooser.getSelectedFile()!=null){
283
                    String sfile = chooser.getSelectedFile().toString();
284
                    //chooser.setSelectedFile(new File(sfile));
285
                    System.out.println("TIF..."+sfile.toString());
286
            }*/
287
            return f.isDirectory() || f.getName().toLowerCase().endsWith(".tif");
288
    }
289
    
290
    public String getDescription() {
291
            return ".tif";
292
    }
293
    
294
}