Statistics
| Revision:

root / branches / F2 / extensions / extJCRS / src / org / gvsig / crs / gui / panels / wizard / DefCrsUsr.java @ 12509

History | View | Annotate | Download (7.52 KB)

1
package org.gvsig.crs.gui.panels.wizard;
2

    
3

    
4
import java.awt.BorderLayout;
5
import java.awt.Dimension;
6
import java.awt.GridBagConstraints;
7
import java.awt.GridBagLayout;
8
import java.awt.Insets;
9
import java.awt.event.ActionEvent;
10
import java.awt.event.ActionListener;
11

    
12
import javax.swing.ButtonGroup;
13
import javax.swing.JButton;
14
import javax.swing.JLabel;
15
import javax.swing.JPanel;
16
import javax.swing.JRadioButton;
17
import javax.swing.JScrollPane;
18
import javax.swing.JTextArea;
19

    
20
import org.gvsig.crs.CrsException;
21
import org.gvsig.crs.CrsFactory;
22
import org.gvsig.crs.ICrs;
23
import org.gvsig.crs.gui.dialog.ImportNewCrsDialog;
24

    
25
import com.iver.andami.PluginServices;
26

    
27

    
28
/**
29
 * Panel de definicin del Crs por el usuario
30
 * 
31
 *  @author Luisa Marina Fernandez Ruiz (luisam.fernandez@uclm.es)
32
 *  @author Jose Luis Gomez Martinez (joseluis.gomez@uclm.es)
33
 *
34
 */
35
public class DefCrsUsr extends JPanel implements ActionListener{
36
        private JPanel panel;
37
        //jbuton definido por gvsig
38
        private JButton btnCrsExistente;
39
        private JLabel lblCrs;
40
        private JRadioButton rbCrsExistente;
41
        private JRadioButton rbNuevoCrs;
42
        private JRadioButton rbCadenaWkt;
43
        private ButtonGroup crsGroup;
44
        private JTextArea txtAreaWkt;
45
        private JButton btnImportarWkt;
46
        private JScrollPane scrollWkt;
47
        private ICrs currentCrs;
48
        private int width=380;
49
        //290
50
        
51
        private static final long serialVersionUID = 1L;
52
        
53
        ICrs crs = null;
54
        boolean hasChanged = false;
55

    
56
        public DefCrsUsr(ICrs crs) {
57
                super();
58
                currentCrs = crs;
59
                initialize();
60
                
61
        }
62

    
63
        /*
64
         * Inicializa el panel de Definicin del Crs por el usuario
65
         */
66
        private void initialize() {
67
                this.setLayout(new BorderLayout());
68
                this.add(getPanel(),BorderLayout.CENTER);
69
                habilitarWkt(false);
70
                        
71
        }
72
        
73
        /*
74
         * Agrega todos los elementos
75
         */
76
        public JPanel getPanel() {
77
                if(panel==null){
78
                        panel=new JPanel();
79
                        panel.setLayout(new GridBagLayout());
80
                        GridBagConstraints c = new GridBagConstraints();
81
                        c.fill = GridBagConstraints.BOTH;
82
                        c.weighty=0.1;
83
                        //c.ipady=100;
84
                        //establece el espacio superior, inferior, izquierdo y derecho
85
                        //entre cada componente
86
                        c.insets=new Insets(8,8,8,8);
87
                        //c.ipady =60;      //make this component tall
88
                        c.weightx = 0.75;
89
                        c.gridx = 0;
90
                        c.gridy = 1;
91
                        panel.add(getRbCrsExistente(),c);
92
                        c.weightx = 0.25;
93
                        c.gridx = 1;
94
                        c.gridy = 1;
95
                        panel.add(getLblCrs(),c);
96
                        
97
                        c.fill = GridBagConstraints.EAST;
98
                        c.weightx=0.0;
99
                        c.gridx = 2;
100
                        c.gridy = 1;
101
                        panel.add(getBtnCrsExistente(),c);
102
                        
103
                        c.fill = GridBagConstraints.BOTH;
104
                        c.weightx = 0.75;
105
                        c.gridx = 0;
106
                        c.gridy = 0;
107
                        panel.add(getRbNuevoCrs(),c);
108
        
109
                        c.gridx = 0;
110
                        c.gridy = 2;
111
                        panel.add(getRbCadenaWkt(),c);
112
//                        Agrupa los botones de opcion
113
                        agruparRadioButtons();
114
                        //Seleccin por defecto
115
                        getRbNuevoCrs().setSelected(true);
116
                        
117
                        c.gridx=2;
118
                    c.gridy=2;
119
                    c.weightx=0.0;
120
                    c.weighty=0.0;
121
                    c.fill = GridBagConstraints.NONE;
122
                    //panel.add(getBtnImportarWkt(),c);
123
                                    
124
                        //vertical
125
                        c.fill=GridBagConstraints.VERTICAL;
126
                        c.anchor=GridBagConstraints.EAST;
127
                        c.gridx = 0;
128
                        c.gridy = 4;
129
                        c.gridwidth=3;
130
                        c.weighty=0.75;
131
                        panel.add(getScrollWkt(),c);
132
                        
133
                        
134
                }
135
                return panel;
136
        }
137
        
138
        /*
139
         * Agrupa los botones de opcin
140
         */
141
        private void agruparRadioButtons() {
142
                if (crsGroup==null){
143
                                crsGroup=new ButtonGroup();
144
                                //Agrupar los botones de opcion
145
                                crsGroup.add(getRbCrsExistente());
146
                                crsGroup.add(getRbNuevoCrs());
147
                                crsGroup.add(getRbCadenaWkt());
148
                        }
149
                        
150
        }
151

    
152
        public JRadioButton getRbCadenaWkt() {
153
                if (rbCadenaWkt==null){
154
                        rbCadenaWkt=new JRadioButton(PluginServices.getText(this,"DefCrsUsr_wkt"));
155
                        rbCadenaWkt.addActionListener(this);
156
                        //rbCadenaWkt.setEnabled(false);
157
                }
158
                return rbCadenaWkt;
159
        }
160

    
161
        public JRadioButton getRbCrsExistente() {
162
                if (rbCrsExistente==null){
163
                        rbCrsExistente=new JRadioButton(PluginServices.getText(this,"DefCrsUsr_existente"));
164
                        rbCrsExistente.addActionListener(this);
165
                }
166
                return rbCrsExistente;
167
        }
168
        
169
        public JRadioButton getRbNuevoCrs() {
170
                if (rbNuevoCrs==null){
171
                        rbNuevoCrs=new JRadioButton(PluginServices.getText(this,"DefCrsUsr_nuevo"));
172
                        rbNuevoCrs.addActionListener(this);
173
                }
174
                return rbNuevoCrs;
175
        }
176

    
177

    
178
        public JLabel getLblCrs() {
179
                if (lblCrs==null){
180
                        lblCrs=new JLabel(currentCrs.getAbrev());
181
                }
182
                return lblCrs;
183
        }
184

    
185
    /**
186
     * Activa o desactiva el botn y el cuadro de texto
187
     * @param b Si es False--> deshabilita
188
     */
189
        public void habilitarExistente(boolean b) {
190
                        getBtnCrsExistente().setEnabled(b);
191
                        getLblCrs().setEnabled(b);
192
        }
193
        public void habilitarWkt(boolean b){
194
                        //getBtnImportarWkt().setEnabled(b);
195
                        getTxtAreaWkt().setEnabled(b);
196
        }
197
        /**
198
         * Inicilizar el boton importar la cadena WKT
199
         * @return
200
         */
201
        public JButton getBtnImportarWkt() {
202
                if(btnImportarWkt==null){
203
                        btnImportarWkt=new JButton();
204
                        btnImportarWkt.setText("...");
205
                        btnImportarWkt.addActionListener(this);
206
                        btnImportarWkt.setToolTipText(PluginServices.getText(this,"DefCrsUsr_importar_wkt"));
207
                        btnImportarWkt.setEnabled(false);
208
                }
209
                return btnImportarWkt;
210
        }
211
        public JButton getBtnCrsExistente() {
212
                if (btnCrsExistente==null){
213
                        btnCrsExistente=new JButton("...");
214
                        Dimension d=new Dimension(btnCrsExistente.getPreferredSize());
215
                        d.width=100;
216
                        btnCrsExistente.setSize(d);
217
                        btnCrsExistente.addActionListener(this);
218
                        btnCrsExistente.setToolTipText(PluginServices.getText(this,"DefCrsUsr_Seleccionar_Crs"));
219
                }
220
                return btnCrsExistente;
221
        }
222
        /**
223
         * Inicializar el area de texto donde se introduce la cadena WKT
224
         * @return
225
         */
226
        public JTextArea getTxtAreaWkt() {
227
                if(txtAreaWkt==null){
228
                        txtAreaWkt=new JTextArea();
229
                        txtAreaWkt.setLineWrap(true);
230
                        txtAreaWkt.setWrapStyleWord(true);
231
                        Dimension d=new Dimension(txtAreaWkt.getPreferredSize());
232
                        d.width=width;
233
                        txtAreaWkt.setSize(d);
234
                }
235
                return txtAreaWkt;
236
        }
237
        /*
238
         *Crea un panel de desplazamineto en el que se 
239
         *agrega el area de texto para que ste tenga barras de desplazamiento 
240
         */
241
        public JScrollPane getScrollWkt() {
242
                if (scrollWkt==null){
243
                        scrollWkt=new JScrollPane();
244
                        scrollWkt.setViewportView(getTxtAreaWkt());
245
                        scrollWkt.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
246
                        Dimension d=new Dimension(txtAreaWkt.getPreferredSize());
247
                        d.width=width;
248
                        scrollWkt.setSize(d);
249
                }
250
                return scrollWkt;
251
        }
252

    
253
        public void actionPerformed(ActionEvent e) {
254
                 if(e.getSource().equals(getRbCrsExistente())){
255
                         setHasChange(true);
256
                        habilitarExistente(true);
257
                        habilitarWkt(false);
258
         }else  if(e.getSource().equals(getRbNuevoCrs())){
259
                 setHasChange(true);
260
                 habilitarExistente(false);
261
                 habilitarWkt(false);                 
262
         }else  if(e.getSource().equals(getRbCadenaWkt())){
263
                 setHasChange(true);
264
                 habilitarExistente(false);
265
                 habilitarWkt(true);
266
         }else if(e.getSource().equals(getBtnCrsExistente())){
267
                 ImportNewCrsDialog newCrs = new ImportNewCrsDialog("crs");
268
                 PluginServices.getMDIManager().addWindow(newCrs);
269
                 if (newCrs.getCode() != -1) {
270
                         getLblCrs().setText("EPSG:"+newCrs.getCode());
271
                         setCrs(newCrs.getCode());
272
                         setHasChange(true);
273
                 }
274
                 
275
         }else if(e.getSource().equals(getBtnImportarWkt())){
276
                 System.out.println("Boton Importar Wkt");
277
                 
278
         }
279
        }
280
        
281
        public void setCrs(int code) {
282
                try {
283
                        crs = new CrsFactory().getCRS("EPSG:"+code);
284
                } catch (CrsException e) {
285
                        // TODO Auto-generated catch block
286
                        e.printStackTrace();
287
                }
288
                
289
        }
290
        
291
        public ICrs getCrs() {
292
                return crs;
293
        }
294
        
295
        public void setHasChange(boolean change) {
296
                hasChanged = change;
297
        }
298
        
299
        public boolean getHasChanged() {
300
                return hasChanged;
301
        }
302

    
303
}