Statistics
| Revision:

svn-gvsig-desktop / branches / F2 / extensions / extJCRS / src / org / gvsig / crs / gui / panels / wizard / DefCrsUsr.java @ 11812

History | View | Annotate | Download (7.51 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
 *
33
 */
34
public class DefCrsUsr extends JPanel implements ActionListener{
35
        private JPanel panel;
36
        //jbuton definido por gvsig
37
        private JButton btnCrsExistente;
38
        private JLabel lblCrs;
39
        private JRadioButton rbCrsExistente;
40
        private JRadioButton rbNuevoCrs;
41
        private JRadioButton rbCadenaWkt;
42
        private ButtonGroup crsGroup;
43
        private JTextArea txtAreaWkt;
44
        private JButton btnImportarWkt;
45
        private JScrollPane scrollWkt;
46
        private ICrs currentCrs;
47
        private int width=380;
48
        //290
49
        
50
        private static final long serialVersionUID = 1L;
51
        
52
        ICrs crs = null;
53
        boolean hasChanged = false;
54

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

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

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

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

    
176

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

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

    
252
        public void actionPerformed(ActionEvent e) {
253
                 if(e.getSource().equals(getRbCrsExistente())){
254
                         setHasChange(true);
255
                 habilitarExistente(true);
256
                 habilitarWkt(false);
257
         }else  if(e.getSource().equals(getRbNuevoCrs())){
258
                 setHasChange(true);
259
                 habilitarExistente(false);
260
                 habilitarWkt(false);                 
261
         }else  if(e.getSource().equals(getRbCadenaWkt())){
262
                 System.out.println("Has seleccionado: Crear WKT");
263
                 habilitarExistente(false);
264
                 habilitarWkt(true);
265
         }else if(e.getSource().equals(getBtnCrsExistente())){
266
                 System.out.println("boton Crs Existente");
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
                 }
273
                 
274
         }else if(e.getSource().equals(getBtnImportarWkt())){
275
                 System.out.println("Boton Importar Wkt");
276
                 
277
         }
278
        }
279
        
280
        public void setCrs(int code) {
281
                try {
282
                        crs = new CrsFactory().getCRS("EPSG:"+code);
283
                } catch (CrsException e) {
284
                        // TODO Auto-generated catch block
285
                        e.printStackTrace();
286
                }
287
                
288
        }
289
        
290
        public ICrs getCrs() {
291
                return crs;
292
        }
293
        
294
        public void setHasChange(boolean change) {
295
                hasChanged = change;
296
        }
297
        
298
        public boolean getHasChanged() {
299
                return hasChanged;
300
        }
301

    
302
}