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