Statistics
| Revision:

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

History | View | Annotate | Download (7.47 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
 * Selecciona las bandas visibles en un raster
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
        private void calcSizeImage(){
101
                double wc_anchomts = Double.parseDouble(saveRaster.getTinf_derX().getText())  - Double.parseDouble(saveRaster.getTsup_izqX().getText());
102
                double wc_altomts = Double.parseDouble(saveRaster.getTinf_derY().getText()) -  Double.parseDouble(saveRaster.getTsup_izqY().getText());
103
                
104
                if(wc_anchomts<=0 || wc_altomts<=0 ||  Integer.parseInt(saveRaster.getTescala().getText())==0 ){
105
                        saveRaster.getTancho().setText("0");
106
                        saveRaster.getTalto().setText("0");
107
                        return;
108
                }
109
                
110
                //Calculo del tama?o de la imagen definitiva en pulgadas
111
                //sizeWC/escala = sizemts
112
                //sizemts*100 = sizecms
113
                //sizecms/7.874 = sizepulgadas
114
                
115
                double anchopulgadas = ( (wc_anchomts / Double.parseDouble(saveRaster.getTescala().getText())) *100)/7.874;
116
                double altopulgadas = ( (wc_altomts / Double.parseDouble (saveRaster.getTescala().getText())) *100)/7.874;
117
                 
118
                //Ancho en pixeles = ppp * sizepulgadas
119
                
120
                int anchopixels =(int) (Integer.parseInt(saveRaster.getJComboBox().getSelectedItem().toString() ) * anchopulgadas);
121
                int altopixels = (int) (Integer.parseInt(saveRaster.getJComboBox().getSelectedItem().toString() ) * altopulgadas);
122
            //System.out.println(wc_anchomts+" "+wc_altomts+" "+anchopulgadas+" "+altopulgadas+" "+anchopixels+" "+altopixels);
123
                saveRaster.getTancho().setText(String.valueOf(anchopixels));
124
                saveRaster.getTalto().setText(String.valueOf(altopixels));
125
        }
126
        
127
        /**
128
         * Controla cuando se cumplen todos los requisitos en el formulario para 
129
         * poder activar el bot?n de aceptar.
130
         *
131
         */
132
        private void enableButtons(){
133
                
134
                if(        saveRaster.getTescala()== null || 
135
                        saveRaster.getTescala().getText().equals("") ||
136
                        saveRaster.getTescala().getText().equals("0") ||
137
                        this.fName == null ||
138
                    this.fName.equals("")){
139
                                if(dialogPanel!=null)
140
                                        dialogPanel.getAcceptButton().setEnabled(false);
141
                                return;
142
                }
143
        
144
                
145
                if( saveRaster.getTancho().getText().equals("0") ||
146
                        saveRaster.getTalto().getText().equals("0")){
147
                        if(dialogPanel!=null)
148
                                dialogPanel.getAcceptButton().setEnabled(false);
149
                        return;
150
                }
151
                
152
                if(dialogPanel!=null)
153
                        dialogPanel.getAcceptButton().setEnabled(true);
154
        }
155
        
156
                
157
        /**
158
         * 
159
         */
160
        public void actionPerformed(ActionEvent e){
161
                
162
                if(                e.getSource().equals(saveRaster.getJComboBox()) ||
163
                                e.getSource().equals(saveRaster.getTescala()) ||
164
                                e.getSource().equals(saveRaster.getTinf_derX()) || 
165
                                e.getSource().equals(saveRaster.getTinf_derY()) ||
166
                                e.getSource().equals(saveRaster.getTsup_izqX()) ||
167
                                e.getSource().equals(saveRaster.getTsup_izqY()) ){
168
                        this.calcSizeImage();
169
                        this.enableButtons();
170
                }
171
                        
172
                if(        e.getSource().equals(saveRaster.getBseleccion())){
173
                         JFileChooser chooser = new JFileChooser("./");
174
                         chooser.setDialogTitle("Seleccionar el fichero");        
175
                         chooser.addChoosableFileFilter(new EcwFilter());
176
                         chooser.addChoosableFileFilter(new TifFilter());
177
                         int returnVal = chooser.showOpenDialog(this);
178
                         if(returnVal == JFileChooser.APPROVE_OPTION){
179
                                 this.fName = chooser.getSelectedFile().toString();
180
                                 if(        !chooser.getSelectedFile().toString().endsWith(".ecw") &&
181
                                         !chooser.getSelectedFile().toString().endsWith(".tif")){
182
                                         System.err.println("Formato erroneo "+chooser.getSelectedFile().toString());
183
                                         return;
184
                                 }
185
                                 
186
                                 if(fName!=null && !fName.equals("")){
187
                                         if(this.fName.endsWith(".ecw"))
188
                                                 saveRaster.getBPropiedades().setText("Propiedades Ecw");
189
                                         if(this.fName.endsWith(".tif"))
190
                                                 saveRaster.getBPropiedades().setText("Propiedades GTiff");
191
                                 }
192
                                 enableButtons();
193
                         }
194
            }
195
                
196
                
197
        }
198
        
199
        
200
        /**
201
         * Devuelve el nombre del fichero seleccionado
202
         * @return Nombre del fichero seleccionado
203
         */
204
        public String getFileName(){
205
                return fName;
206
        }
207
        
208
        public void mouseExited(MouseEvent e){}
209
        public void mouseReleased(MouseEvent e){}        
210
        public void mouseEntered(MouseEvent e){}
211
        
212
        public void mouseClicked(MouseEvent e){
213
                this.calcSizeImage();
214
                enableButtons();
215
        }
216
        
217
        public void mousePressed(MouseEvent e){}
218
        public void focusGained(FocusEvent e){}
219
        public void focusLost(FocusEvent e){
220
                this.calcSizeImage();
221
                enableButtons();
222
        }
223
        public void keyTyped(KeyEvent e){enableButtons();}
224
        public void keyPressed(KeyEvent e){enableButtons();}
225
        public void keyReleased(KeyEvent e){enableButtons();}
226
 }  
227

    
228
class EcwFilter extends javax.swing.filechooser.FileFilter {
229
    public boolean accept(File f) {return f.isDirectory() || f.getName().toLowerCase().endsWith(".ecw");}
230
    public String getDescription() {return ".ecw";}
231
}
232

    
233
class TifFilter extends javax.swing.filechooser.FileFilter {
234
    public boolean accept(File f) {return f.isDirectory() || f.getName().toLowerCase().endsWith(".tif");}
235
    public String getDescription() {return ".tif";}
236
}