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 |
} |