svn-gvsig-desktop / trunk / extensions / extGeoreferencing / src / org / gvsig / georeferencing / gui / selectPoints / SelectPointsPanel.java @ 5702
History | View | Annotate | Download (26.9 KB)
1 | 5217 | nacho | package org.gvsig.georeferencing.gui.selectPoints; |
---|---|---|---|
2 | |||
3 | import java.awt.Component; |
||
4 | import java.awt.FlowLayout; |
||
5 | import java.awt.GridBagConstraints; |
||
6 | import java.awt.GridBagLayout; |
||
7 | import java.awt.event.ActionEvent; |
||
8 | import java.awt.event.ActionListener; |
||
9 | import java.awt.event.FocusEvent; |
||
10 | import java.awt.event.FocusListener; |
||
11 | import java.awt.event.KeyEvent; |
||
12 | import java.awt.event.KeyListener; |
||
13 | import java.awt.geom.Point2D; |
||
14 | |||
15 | import javax.swing.ImageIcon; |
||
16 | import javax.swing.JButton; |
||
17 | import javax.swing.JOptionPane; |
||
18 | import javax.swing.JPanel; |
||
19 | import javax.swing.JTextField; |
||
20 | 5598 | nacho | import javax.xml.transform.TransformerException; |
21 | 5217 | nacho | |
22 | import org.gvsig.georeferencing.GeoreferencingToolsModule; |
||
23 | import org.gvsig.georeferencing.gui.dialogs.GeoreferencingDialog; |
||
24 | import org.gvsig.georeferencing.gui.listeners.GeorefPointSelectorListener; |
||
25 | import org.gvsig.georeferencing.gui.pointsTable.TableControlerPanel; |
||
26 | |||
27 | import com.iver.andami.PluginServices; |
||
28 | 5241 | nacho | import com.iver.cit.gvsig.fmap.layers.FLyrPoints; |
29 | 5217 | nacho | import com.iver.cit.gvsig.gui.View; |
30 | |||
31 | public class SelectPointsPanel extends JPanel implements ActionListener, KeyListener, FocusListener{ |
||
32 | |||
33 | //**********************Vars**********************************
|
||
34 | private String pathToImages = "images/"; //"/com/iver/cit/gvsig/gui/panels/images/"; |
||
35 | private JPanel pGeneral = null; |
||
36 | private JPanel pPointSelection = null; |
||
37 | private JPanel pControlPoint = null; |
||
38 | private JButton bSelectFromView = null; |
||
39 | private FLyrPoints lyrPoints = null; |
||
40 | //private boolean disableEvent = false;
|
||
41 | private int lastIndexSelection = -1; |
||
42 | private JButton bExtended = null; |
||
43 | private JPanel pExtend = null; |
||
44 | private TableControlerPanel tableControlerPanel = null; |
||
45 | private DataPointPanel dataPointPanel = null; |
||
46 | private ErrorPointPanel errorPointPanel = null; |
||
47 | private GeoreferencingDialog grd = null; |
||
48 | private boolean update = false; |
||
49 | /**
|
||
50 | * Valores ?ltimos que se han introducido en los JTextField para poder reponerlos.
|
||
51 | */
|
||
52 | public String lastTx = "", lastTy = "", lastLong = "", lastLat = ""; |
||
53 | 5598 | nacho | /**
|
54 | * Valores ?ltimos que se han introducido parcialmente en los JTextField para poder reponerlos si
|
||
55 | * al pulsar una tecla se introduce un valor erroneo.
|
||
56 | */
|
||
57 | public String lastBlockTx = "", lastBlockTy = "", lastBlockLong = "", lastBlockLat = ""; |
||
58 | 5217 | nacho | //**********************End Vars********************************
|
59 | |||
60 | //**********************Methods*********************************
|
||
61 | /**
|
||
62 | * Contructor. Inicializa el panel.
|
||
63 | */
|
||
64 | public SelectPointsPanel() {
|
||
65 | super();
|
||
66 | initialize(); |
||
67 | } |
||
68 | |||
69 | /**
|
||
70 | * This is the default constructor
|
||
71 | */
|
||
72 | public SelectPointsPanel(GeoreferencingDialog grd) {
|
||
73 | super();
|
||
74 | initialize(); |
||
75 | this.grd = grd;
|
||
76 | } |
||
77 | |||
78 | /**
|
||
79 | * This method initializes this
|
||
80 | *
|
||
81 | * @return void
|
||
82 | */
|
||
83 | private void initialize() { |
||
84 | this.setPreferredSize(new java.awt.Dimension(390,175)); |
||
85 | this.setSize(new java.awt.Dimension(390,175)); |
||
86 | this.setLocation(new java.awt.Point(0,0)); |
||
87 | this.add(getPGeneral(), null); |
||
88 | } |
||
89 | |||
90 | /**
|
||
91 | * Actualiza el n?mero de puntos del combo a partir de los contenidos en
|
||
92 | * la capa de puntos. Esta funci?n es usada desde otros paneles que cambien
|
||
93 | * el punto seleccionado para comunicar al control la nueva selecci?n.
|
||
94 | */
|
||
95 | public void updateComboPoint(int pointSelected){ |
||
96 | //disableEvent = true;
|
||
97 | try{
|
||
98 | loadLyrPoint(); |
||
99 | }catch(InstantiationException exc){ |
||
100 | JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), |
||
101 | PluginServices.getText(this, "error_capa_puntos")); |
||
102 | return;
|
||
103 | } |
||
104 | |||
105 | tableControlerPanel.setNItems(lyrPoints.getCountPoints()); |
||
106 | 5370 | nacho | try{
|
107 | tableControlerPanel.getCPoint().setSelectedIndex(pointSelected); |
||
108 | }catch(IllegalArgumentException ex){ |
||
109 | |||
110 | } |
||
111 | 5217 | nacho | tableControlerPanel.checkArrows(); |
112 | lyrPoints.getPointManager().selectPoint(pointSelected, this.grd);
|
||
113 | //disableEvent = false;
|
||
114 | } |
||
115 | |||
116 | /**
|
||
117 | * Comprueba si los valores de un punto en los campos de texto est?n
|
||
118 | * vacios y lanza una excepci?n si hay alguno sin informaci?n.
|
||
119 | * @throws NoSuchFieldException
|
||
120 | */
|
||
121 | public void checkInfoPointText()throws NoSuchFieldException{ |
||
122 | if( dataPointPanel.getTX().getText().equals("") || |
||
123 | dataPointPanel.getTY().getText().equals("") ||
|
||
124 | dataPointPanel.getLatitud().getText().equals("") ||
|
||
125 | dataPointPanel.getLongitud().getText().equals("")){
|
||
126 | //disableEvent = true;
|
||
127 | try{
|
||
128 | tableControlerPanel.getCPoint().setSelectedIndex(lastIndexSelection); |
||
129 | //disableEvent = false;
|
||
130 | }catch(IllegalArgumentException ex){ |
||
131 | //Si el lastIndex tiene un valor erroneo no hacemos ninguna selecci?n
|
||
132 | } |
||
133 | throw new NoSuchFieldException(); |
||
134 | } |
||
135 | } |
||
136 | |||
137 | /**
|
||
138 | * Esta funci?n resetea los controles del panel de info de un punto.
|
||
139 | */
|
||
140 | public void resetControls(boolean active){ |
||
141 | dataPointPanel.resetControls(null);
|
||
142 | 5370 | nacho | errorPointPanel.resetControls(null);
|
143 | 5217 | nacho | getBSelectFromView().setEnabled(active); |
144 | getTableControlerPanel().getBClear().setEnabled(active); |
||
145 | getTableControlerPanel().getBDelPoint().setEnabled(active); |
||
146 | if(!active)
|
||
147 | getTableControlerPanel().resetControls(); |
||
148 | } |
||
149 | |||
150 | /**
|
||
151 | * Cuando pasamos de un punto a otro o se va a crear uno nuevo
|
||
152 | * <UL>
|
||
153 | * <LI>Cargamos la capa FLyrPoint si no est? ya cargada.</LI>
|
||
154 | * <LI>Comprobamos que los campos no esten vacios y lanzamos una excepci?n si hay alg?n campo vacio si lo est?n.</LI>
|
||
155 | * <LI>Insertamos el nuevo punto seleccionado en los campos de informaci?n.</LI>
|
||
156 | * <LI>Checkeamos las flechas para ver si tenemos que activarlas o desactivarlas.</LI>
|
||
157 | * </UL>
|
||
158 | * @param changeSelection Cambia la posici?n seleccionada del combo si es true
|
||
159 | * @param pos Posici?n a la que cambia el combo si el parametro chageSelection es true
|
||
160 | */
|
||
161 | public void changePoint(boolean changeSelection, int pos){ |
||
162 | try{
|
||
163 | loadLyrPoint(); |
||
164 | checkInfoPointText(); |
||
165 | if(changeSelection){
|
||
166 | lastIndexSelection = pos; |
||
167 | tableControlerPanel.setSelectedIndex(pos); |
||
168 | } |
||
169 | lyrPoints.getPointManager().selectPoint(tableControlerPanel.getSelectedIndex(), this.grd);
|
||
170 | tableControlerPanel.checkArrows(); |
||
171 | }catch(NoSuchFieldException exc){ |
||
172 | JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), |
||
173 | PluginServices.getText(this, "coordenadas_vacias")); |
||
174 | }catch(InstantiationException e){ |
||
175 | JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), |
||
176 | PluginServices.getText(this, "error_capa_puntos")); |
||
177 | } |
||
178 | } |
||
179 | |||
180 | /**
|
||
181 | * Obtiene una capa de puntos. Si no existe crea una.
|
||
182 | * @return
|
||
183 | */
|
||
184 | private void loadLyrPoint() throws InstantiationException{ |
||
185 | if(lyrPoints == null){ |
||
186 | lyrPoints = this.grd.getLyrPoints();
|
||
187 | if(lyrPoints == null) |
||
188 | throw new InstantiationException(); |
||
189 | } |
||
190 | } |
||
191 | |||
192 | /**
|
||
193 | * Este m?todo inicializa el bot?n seleccionar desde la vista. Cuando lo
|
||
194 | * activamos se carga la herramienta de selecci?n de puntos desde la vista.
|
||
195 | *
|
||
196 | * @return javax.swing.JButton
|
||
197 | */
|
||
198 | public JButton getBSelectFromView() { |
||
199 | if (bSelectFromView == null) { |
||
200 | bSelectFromView = new JButton(); |
||
201 | bSelectFromView.setText("");
|
||
202 | bSelectFromView.setPreferredSize(new java.awt.Dimension(22,22)); |
||
203 | bSelectFromView.setIcon(new ImageIcon(getClass().getClassLoader().getResource(pathToImages + "selectfromview.png"))); |
||
204 | bSelectFromView.setEnabled(false);
|
||
205 | bSelectFromView.setToolTipText(PluginServices.getText(this, "selectfromview")); |
||
206 | bSelectFromView.addActionListener(new java.awt.event.ActionListener() {
|
||
207 | public void actionPerformed(java.awt.event.ActionEvent e) { |
||
208 | View theView = (View) PluginServices.getMDIManager().getActiveView(); |
||
209 | try{
|
||
210 | loadLyrPoint(); |
||
211 | lyrPoints.setLastTool(theView.getMapControl().getTool()); |
||
212 | GeorefPointSelectorListener.posPoint = tableControlerPanel.getSelectedIndex(); |
||
213 | GeorefPointSelectorListener.firstPoint = true;
|
||
214 | theView.getMapControl().setTool("pointLyrSelection");
|
||
215 | }catch(InstantiationException exc){ |
||
216 | JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), |
||
217 | PluginServices.getText(this, "error_capa_puntos")); |
||
218 | } |
||
219 | } |
||
220 | }); |
||
221 | } |
||
222 | return bSelectFromView;
|
||
223 | } |
||
224 | 5598 | nacho | |
225 | 5217 | nacho | /**
|
226 | * Control de eventos de TableControlerPanel
|
||
227 | */
|
||
228 | public void actionPerformed(ActionEvent e) { |
||
229 | |||
230 | //Bot?n de ir al punto inicial
|
||
231 | if(e.getSource() == tableControlerPanel.getBFirst()){
|
||
232 | if(tableControlerPanel.getItemCount() >= 1) |
||
233 | changePoint(true, 0); |
||
234 | } |
||
235 | |||
236 | //Bot?n de ir al punto anterior
|
||
237 | if(e.getSource() == tableControlerPanel.getBPrev()){
|
||
238 | if(tableControlerPanel.getSelectedIndex() != 0) |
||
239 | changePoint(true, tableControlerPanel.getSelectedIndex() - 1); |
||
240 | } |
||
241 | |||
242 | //Bot?n de ir al punto siguiente
|
||
243 | if(e.getSource() == tableControlerPanel.getBNext()){
|
||
244 | if(tableControlerPanel.getSelectedIndex() != (tableControlerPanel.getItemCount() - 1)) |
||
245 | changePoint(true, tableControlerPanel.getSelectedIndex() + 1); |
||
246 | |||
247 | } |
||
248 | |||
249 | //Bot?n de ir al punto final
|
||
250 | if(e.getSource() == tableControlerPanel.getBLast()){
|
||
251 | if(tableControlerPanel.getItemCount() >= 1) |
||
252 | changePoint(true, tableControlerPanel.getItemCount() - 1); |
||
253 | } |
||
254 | |||
255 | //Combo de selecci?n de punto
|
||
256 | if(e.getSource() == tableControlerPanel.getCPoint()){
|
||
257 | if(tableControlerPanel.getSelectedIndex() != -1){ |
||
258 | try{
|
||
259 | loadLyrPoint(); |
||
260 | }catch(InstantiationException exc){ |
||
261 | return;
|
||
262 | } |
||
263 | lyrPoints.getPointManager().selectPoint(tableControlerPanel.getSelectedIndex(), grd); |
||
264 | tableControlerPanel.checkArrows(); |
||
265 | } |
||
266 | } |
||
267 | |||
268 | //Bot?n de nuevo punto
|
||
269 | 5304 | nacho | if(e.getSource() == tableControlerPanel.getBNew()){
|
270 | 5217 | nacho | grd.getPointManager().newEmptyPoint(); |
271 | 5304 | nacho | //Desactivamos todos los controles para centrar la visi?n del usuario
|
272 | //sobre la introducci?n de puntos
|
||
273 | grd.getPointManager().disableAllControls(); |
||
274 | } |
||
275 | 5217 | nacho | |
276 | TableControlerPanel ctrlPanel = grd.getConectorPanel().getDataPointsTabPanel().getTablePointsPanel().getTableControlerPanel(); |
||
277 | |||
278 | //Bot?n de eliminado de todos los puntos
|
||
279 | if( e.getSource() == getTableControlerPanel().getBClear() ||
|
||
280 | e.getSource() == ctrlPanel.getBClear()){ |
||
281 | grd.getPointManager().deleteAllPoints(); |
||
282 | } |
||
283 | |||
284 | //Bot?n de eliminado de un punto
|
||
285 | if(e.getSource() == getTableControlerPanel().getBDelPoint() ||
|
||
286 | e.getSource() == ctrlPanel.getBDelPoint()){ |
||
287 | grd.getPointManager().deletePoint(); |
||
288 | } |
||
289 | |||
290 | //Bot?n de extensi?n del cuadro de dialogo
|
||
291 | if(e.getSource() == this.getBExtended()) |
||
292 | this.setEnlarge(grd.isEnlarge());
|
||
293 | |||
294 | } |
||
295 | |||
296 | /* (non-Javadoc)
|
||
297 | * @see java.awt.event.KeyListener#keyPressed(java.awt.event.KeyEvent)
|
||
298 | */
|
||
299 | public void keyPressed(KeyEvent e) { |
||
300 | // TODO Auto-generated method stu
|
||
301 | } |
||
302 | 5598 | nacho | |
303 | /**
|
||
304 | * Checkea un textField para que contenga caracteres validos. Consideramos validos
|
||
305 | * los caracteres del 0 al 9, el punto, DEL, Supr, flechas y Enter teniendo en cuenta que el
|
||
306 | * c?digo ascii del teclado numerico es distinto.
|
||
307 | */
|
||
308 | public boolean checkTextField(int code){ |
||
309 | |||
310 | //Si el caracter es erroneo pasamos de el y reponemos el texto que habia
|
||
311 | if( (code >= 0 && code <= 7) || |
||
312 | code == 9 ||
|
||
313 | (code >= 11 && code <= 36) || |
||
314 | (code >= 41 && code <= 45) || |
||
315 | code == 47 ||
|
||
316 | (code >= 58 && code <= 95) || |
||
317 | (code >= 106 && code <= 109) || |
||
318 | (code >= 111 && code <= 126) || |
||
319 | code >= 128){
|
||
320 | return false; |
||
321 | } |
||
322 | |||
323 | return true; |
||
324 | 5217 | nacho | } |
325 | |||
326 | /**
|
||
327 | * Control de eventos de las entradas de texto de los puntos
|
||
328 | */
|
||
329 | public void keyReleased(KeyEvent e) { |
||
330 | 5598 | nacho | String tx = dataPointPanel.getTX().getText();
|
331 | String ty = dataPointPanel.getTY().getText();
|
||
332 | String lon = dataPointPanel.getLongitud().getText();
|
||
333 | String lat = dataPointPanel.getLatitud().getText();
|
||
334 | |||
335 | 5217 | nacho | //Campo de texto de la coordenada X en pixeles
|
336 | Point2D pixel = null; |
||
337 | Point2D map = null; |
||
338 | |||
339 | 5598 | nacho | //Si el evento es sobre TX
|
340 | if(e.getSource() == dataPointPanel.getTX()){
|
||
341 | if(e.getKeyCode() == 10){ |
||
342 | txEvent(); |
||
343 | return;
|
||
344 | 5217 | nacho | } |
345 | |||
346 | 5598 | nacho | if(checkTextField(e.getKeyCode()))
|
347 | lastBlockTx = tx; |
||
348 | else
|
||
349 | dataPointPanel.getTX().setText(lastBlockTx); |
||
350 | } |
||
351 | 5217 | nacho | |
352 | 5598 | nacho | //Si el evento es sobre TY
|
353 | if(e.getSource() == dataPointPanel.getTY()){
|
||
354 | if(e.getKeyCode() == 10){ |
||
355 | tyEvent(); |
||
356 | return;
|
||
357 | 5217 | nacho | } |
358 | 5598 | nacho | |
359 | if(checkTextField(e.getKeyCode()))
|
||
360 | lastBlockTy = ty; |
||
361 | else
|
||
362 | dataPointPanel.getTY().setText(lastBlockTy); |
||
363 | } |
||
364 | |||
365 | //Si el evento es sobre Longitud
|
||
366 | if(e.getSource() == dataPointPanel.getLongitud()){
|
||
367 | if(e.getKeyCode() == 10){ |
||
368 | lonEvent(); |
||
369 | return;
|
||
370 | 5217 | nacho | } |
371 | |||
372 | 5598 | nacho | if(checkTextField(e.getKeyCode()))
|
373 | lastBlockLong = lon; |
||
374 | else
|
||
375 | dataPointPanel.getLongitud().setText(lastBlockLong); |
||
376 | } |
||
377 | |||
378 | //Si el evento es sobre Latitud
|
||
379 | if(e.getSource() == dataPointPanel.getLatitud()){
|
||
380 | if(e.getKeyCode() == 10){ |
||
381 | latEvent(); |
||
382 | return;
|
||
383 | 5304 | nacho | } |
384 | 5217 | nacho | |
385 | 5598 | nacho | if(checkTextField(e.getKeyCode()))
|
386 | lastBlockLat = lat; |
||
387 | else
|
||
388 | dataPointPanel.getLatitud().setText(lastBlockLat); |
||
389 | 5217 | nacho | } |
390 | 5598 | nacho | |
391 | 5217 | nacho | } |
392 | |||
393 | /* (non-Javadoc)
|
||
394 | * @see java.awt.event.KeyListener#keyTyped(java.awt.event.KeyEvent)
|
||
395 | */
|
||
396 | public void keyTyped(KeyEvent e) { |
||
397 | // TODO Auto-generated method stub
|
||
398 | |||
399 | } |
||
400 | |||
401 | /* (non-Javadoc)
|
||
402 | * @see java.awt.event.FocusListener#focusGained(java.awt.event.FocusEvent)
|
||
403 | */
|
||
404 | public void focusGained(FocusEvent arg0) { |
||
405 | // TODO Auto-generated method stub
|
||
406 | |||
407 | } |
||
408 | |||
409 | /**
|
||
410 | * Cancela la selecci?n de puntos sobre la vista de forma gr?fica. Esta acci?n
|
||
411 | * conllevar? seleccionar la ?ltima herramienta del mapCtrl
|
||
412 | */
|
||
413 | private void abortSelectPoints(){ |
||
414 | 5598 | nacho | //Si todos los puntos est?n rellenos deseleccionamos la herramienta de selecci?n de puntos
|
415 | GeorefPointSelectorListener.firstPoint = true;
|
||
416 | |||
417 | //Activamos los controles de esta ya que habr? sido desactivados al llamar a newEmptyPoint
|
||
418 | GeoreferencingToolsModule.setEnabled(true);
|
||
419 | |||
420 | com.iver.cit.gvsig.gui.View theView = null;
|
||
421 | try{
|
||
422 | theView = (com.iver.cit.gvsig.gui.View)PluginServices.getMDIManager().getActiveView(); |
||
423 | theView.getMapControl().setTool(grd.getLyrPoints().getLastTool()); |
||
424 | }catch(ClassCastException exc){ |
||
425 | //No se selecciona la herramienta
|
||
426 | } |
||
427 | } |
||
428 | |||
429 | /**
|
||
430 | * Validaci?n de que el par?metro tenga formato numerico y de si
|
||
431 | * este valor est? dentro de los l?mites de la imagen
|
||
432 | * @param tx Campo TX
|
||
433 | * @return true si es valido y false si no lo es
|
||
434 | */
|
||
435 | private boolean validateTX(String tx){ |
||
436 | double x = 0D; |
||
437 | try{
|
||
438 | x = Double.valueOf(tx).doubleValue();
|
||
439 | if(x > grd.getLyrGeoRaster().getImageWidth() || x < 0) |
||
440 | throw new NumberFormatException(); |
||
441 | }catch(NumberFormatException exc){ |
||
442 | //Si no es valido reponemos lastValue
|
||
443 | dataPointPanel.getTX().setText(lastTx); |
||
444 | return false; |
||
445 | } |
||
446 | |||
447 | lastTx = tx; |
||
448 | return true; |
||
449 | } |
||
450 | |||
451 | |||
452 | /**
|
||
453 | * Validaci?n de que el par?metro tenga formato numerico y de si
|
||
454 | * este valor est? dentro de los l?mites de la imagen
|
||
455 | * @param ty Campo TY
|
||
456 | * @return true si es valido y false si no lo es
|
||
457 | */
|
||
458 | private boolean validateTY(String ty){ |
||
459 | double y = 0D; |
||
460 | try{
|
||
461 | y = Double.valueOf(ty).doubleValue();
|
||
462 | if(y > grd.getLyrGeoRaster().getImageHeight() || y < 0) |
||
463 | throw new NumberFormatException(); |
||
464 | }catch(NumberFormatException exc){ |
||
465 | //Si no es valido reponemos lastValue
|
||
466 | dataPointPanel.getTY().setText(lastTy); |
||
467 | return false; |
||
468 | } |
||
469 | |||
470 | lastTy = ty; |
||
471 | return true; |
||
472 | } |
||
473 | |||
474 | /**
|
||
475 | * Validaci?n de que el par?metro tenga formato numerico
|
||
476 | * @param t Valor del campo
|
||
477 | * @return true si es valido y false si no lo es
|
||
478 | */
|
||
479 | private boolean validateNumericFormat(String field){ |
||
480 | double d = 0D; |
||
481 | try{
|
||
482 | d = Double.valueOf(field).doubleValue();
|
||
483 | }catch(NumberFormatException exc){ |
||
484 | return false; |
||
485 | } |
||
486 | return true; |
||
487 | } |
||
488 | |||
489 | /**
|
||
490 | * Funci?n que se ejecuta cuando TX pierde el foco o se pulsa enter sobre
|
||
491 | * el JTextField
|
||
492 | */
|
||
493 | private void txEvent(){ |
||
494 | 5217 | nacho | String tx = dataPointPanel.getTX().getText();
|
495 | String ty = dataPointPanel.getTY().getText();
|
||
496 | 5598 | nacho | |
497 | if(!validateTX(tx)) return; |
||
498 | |||
499 | if(!ty.equals("")){ |
||
500 | if(!validateTY(ty)) return; |
||
501 | else{
|
||
502 | lastBlockTx = "";
|
||
503 | //Llamamos a la funci?n que gestiona la entrada del primer punto
|
||
504 | grd.getPointManager().selectFirstPoint(tx, ty); |
||
505 | } |
||
506 | } |
||
507 | } |
||
508 | |||
509 | /**
|
||
510 | * Funci?n que se ejecuta cuando TY pierde el foco o se pulsa enter sobre
|
||
511 | * el JTextField
|
||
512 | */
|
||
513 | private void tyEvent(){ |
||
514 | String tx = dataPointPanel.getTX().getText();
|
||
515 | String ty = dataPointPanel.getTY().getText();
|
||
516 | |||
517 | if(!validateTY(ty)) return; |
||
518 | |||
519 | if(!tx.equals("")){ |
||
520 | if(!validateTX(tx)) return; |
||
521 | else{
|
||
522 | lastBlockTy = "";
|
||
523 | //Llamamos a la funci?n que gestiona la entrada del primer punto
|
||
524 | grd.getPointManager().selectFirstPoint(tx, ty); |
||
525 | } |
||
526 | } |
||
527 | } |
||
528 | |||
529 | /**
|
||
530 | * Funci?n que se ejecuta cuando el campo de texto Longitud pierde el foco o se
|
||
531 | * pulsa enter sobre el JTextField
|
||
532 | */
|
||
533 | private void lonEvent(){ |
||
534 | 5217 | nacho | String lon = dataPointPanel.getLongitud().getText();
|
535 | String lat = dataPointPanel.getLatitud().getText();
|
||
536 | |||
537 | 5598 | nacho | if(!validateNumericFormat(lon))
|
538 | return;
|
||
539 | |||
540 | lastLong = lon; |
||
541 | if(!lat.equals("")){ |
||
542 | lastLat = lat; |
||
543 | lastBlockLat = "";
|
||
544 | //Llamamos a la funci?n que gestiona la entrada del segundo punto
|
||
545 | grd.getPointManager().selectSecondPoint(lon, lat); |
||
546 | 5217 | nacho | } |
547 | } |
||
548 | |||
549 | /**
|
||
550 | 5598 | nacho | * Funci?n que se ejecuta cuando el campo de texto Latitud pierde el foco o se
|
551 | * pulsa enter sobre el JTextField
|
||
552 | */
|
||
553 | private void latEvent(){ |
||
554 | String lon = dataPointPanel.getLongitud().getText();
|
||
555 | String lat = dataPointPanel.getLatitud().getText();
|
||
556 | |||
557 | if(!validateNumericFormat(lon))
|
||
558 | return;
|
||
559 | |||
560 | lastLat = lat; |
||
561 | if(!lon.equals("")){ |
||
562 | lastLong = lon; |
||
563 | lastBlockLong = "";
|
||
564 | //Llamamos a la funci?n que gestiona la entrada del segundo punto
|
||
565 | grd.getPointManager().selectSecondPoint(lon, lat); |
||
566 | } |
||
567 | } |
||
568 | |||
569 | /**
|
||
570 | 5217 | nacho | * Los campos de texto de las coordenadas cuando pierden el foco actualizan el valor del pixel
|
571 | * en la cap, vista, mini imagen y tabla
|
||
572 | */
|
||
573 | 5598 | nacho | public void focusLost(FocusEvent e) { |
574 | 5217 | nacho | String tx = dataPointPanel.getTX().getText();
|
575 | String ty = dataPointPanel.getTY().getText();
|
||
576 | String lon = dataPointPanel.getLongitud().getText();
|
||
577 | String lat = dataPointPanel.getLatitud().getText();
|
||
578 | |||
579 | 5598 | nacho | //Si el elemento que pierde el foco es TX
|
580 | if(e.getSource() == dataPointPanel.getTX())
|
||
581 | txEvent(); |
||
582 | |||
583 | //Si el elemento que pierde el foco es TY
|
||
584 | if(e.getSource() == dataPointPanel.getTY())
|
||
585 | tyEvent(); |
||
586 | |||
587 | //Si el elemento que pierde el foco es Longitud
|
||
588 | if(e.getSource() == dataPointPanel.getLongitud())
|
||
589 | lonEvent(); |
||
590 | |||
591 | //Si el elemento que pierde el foco es Latitud
|
||
592 | if(e.getSource() == dataPointPanel.getLatitud())
|
||
593 | latEvent(); |
||
594 | |||
595 | //Si est?n rellenos todos los campos restauramos los controles
|
||
596 | if( !dataPointPanel.getTX().getText().equals("") && |
||
597 | !dataPointPanel.getTY().getText().equals("") &&
|
||
598 | !dataPointPanel.getLongitud().getText().equals("") &&
|
||
599 | !dataPointPanel.getLatitud().getText().equals("")){
|
||
600 | grd.getPointManager().restoreControlsValue(); |
||
601 | this.abortSelectPoints();
|
||
602 | 5217 | nacho | } |
603 | 5598 | nacho | |
604 | 5217 | nacho | } |
605 | |||
606 | //**********************End Methods*******************************
|
||
607 | |||
608 | //**********************Setters & Getters*************************
|
||
609 | /**
|
||
610 | * Extiende o pliega el panel inferior controlando el icono del bot?n. Si se
|
||
611 | * asigna true quiere decir que el panel est? desplegado, en este caso lo plegar?.
|
||
612 | * Si se asigna false quiere decir que el panel est? plegado, en este caso lo
|
||
613 | * desplegar?.
|
||
614 | * @param enlarge True para recogerlo y false para desplegarlo
|
||
615 | */
|
||
616 | public void setEnlarge(boolean enlarge){ |
||
617 | if(enlarge){
|
||
618 | grd.setEnlarge(!enlarge); |
||
619 | bExtended.setIcon(new ImageIcon(getClass().getClassLoader().getResource(pathToImages + "down.png"))); |
||
620 | }else{
|
||
621 | grd.setEnlarge(!enlarge); |
||
622 | bExtended.setIcon(new ImageIcon(getClass().getClassLoader().getResource(pathToImages + "up.png"))); |
||
623 | if(lyrPoints != null){ |
||
624 | //lyrPoints.getPointManager().selectPoint(tableControlerPanel.getSelectedIndex(), this.grd);
|
||
625 | if(lyrPoints.isNewPoint(grd.getSelectedPoint())){
|
||
626 | grd.getConectorPanel().getAdjustGeorefPanel().getZoomLeft().setEnabled(false);
|
||
627 | grd.getConectorPanel().getAdjustGeorefPanel().getZoomRight().setEnabled(false);
|
||
628 | } |
||
629 | grd.getZoomControlRight().draw(); |
||
630 | grd.getZoomControlLeft().draw(); |
||
631 | } |
||
632 | } |
||
633 | } |
||
634 | |||
635 | /**
|
||
636 | * @return Returns the errorPointPanel.
|
||
637 | */
|
||
638 | public ErrorPointPanel getErrorPointPanel() {
|
||
639 | if(this.errorPointPanel == null) |
||
640 | errorPointPanel = new ErrorPointPanel();
|
||
641 | errorPointPanel.setPreferredSize(new java.awt.Dimension(175,130)); |
||
642 | return errorPointPanel;
|
||
643 | } |
||
644 | /**
|
||
645 | * @return Returns the lyrPoints.
|
||
646 | */
|
||
647 | public FLyrPoints getLyrPoints() {
|
||
648 | if(lyrPoints == null){ |
||
649 | try{
|
||
650 | loadLyrPoint(); |
||
651 | }catch(InstantiationException exc){ |
||
652 | JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), |
||
653 | PluginServices.getText(this, "error_capa_puntos")); |
||
654 | } |
||
655 | } |
||
656 | return lyrPoints;
|
||
657 | } |
||
658 | |||
659 | /**
|
||
660 | * This method initializes jButton
|
||
661 | *
|
||
662 | * @return javax.swing.JButton
|
||
663 | */
|
||
664 | 5304 | nacho | public JButton getBExtended() { |
665 | 5217 | nacho | if (bExtended == null) { |
666 | bExtended = new JButton(); |
||
667 | bExtended.setPreferredSize(new java.awt.Dimension(42,22)); |
||
668 | bExtended.setIcon(new ImageIcon(getClass().getClassLoader().getResource(pathToImages + "down.png"))); |
||
669 | 5447 | nacho | bExtended.setToolTipText(PluginServices.getText(this, "plegar_despl")); |
670 | 5217 | nacho | bExtended.addActionListener(this);
|
671 | } |
||
672 | return bExtended;
|
||
673 | } |
||
674 | |||
675 | /**
|
||
676 | * This method initializes jPanel
|
||
677 | *
|
||
678 | * @return javax.swing.JPanel
|
||
679 | */
|
||
680 | private JPanel getPExtend() { |
||
681 | if (pExtend == null) { |
||
682 | FlowLayout flowLayout21 = new FlowLayout(); |
||
683 | pExtend = new JPanel(); |
||
684 | pExtend.setLayout(flowLayout21); |
||
685 | flowLayout21.setHgap(0);
|
||
686 | flowLayout21.setVgap(1);
|
||
687 | flowLayout21.setAlignment(java.awt.FlowLayout.LEFT); |
||
688 | pExtend.setPreferredSize(new java.awt.Dimension(70,22)); |
||
689 | pExtend.add(getBSelectFromView(), null);
|
||
690 | pExtend.add(getBExtended(), null);
|
||
691 | } |
||
692 | return pExtend;
|
||
693 | } |
||
694 | |||
695 | /**
|
||
696 | * @return Returns the dataPointPanel.
|
||
697 | */
|
||
698 | public DataPointPanel getDataPointPanel() {
|
||
699 | return dataPointPanel;
|
||
700 | } |
||
701 | |||
702 | /**
|
||
703 | * @param dataPointPanel The dataPointPanel to set.
|
||
704 | */
|
||
705 | public void setDataPointPanel(DataPointPanel dataPointPanel) { |
||
706 | this.dataPointPanel = dataPointPanel;
|
||
707 | } |
||
708 | |||
709 | /**
|
||
710 | * @return Returns the tableControlerPanel.
|
||
711 | */
|
||
712 | public TableControlerPanel getTableControlerPanel() {
|
||
713 | return tableControlerPanel;
|
||
714 | } |
||
715 | |||
716 | /**
|
||
717 | * @param tableControlerPanel The tableControlerPanel to set.
|
||
718 | */
|
||
719 | public void setTableControlerPanel(TableControlerPanel tableControlerPanel) { |
||
720 | this.tableControlerPanel = tableControlerPanel;
|
||
721 | } |
||
722 | |||
723 | /**
|
||
724 | * This method initializes pGeneral
|
||
725 | *
|
||
726 | * @return javax.swing.JPanel
|
||
727 | */
|
||
728 | private JPanel getPGeneral() { |
||
729 | if (pGeneral == null) { |
||
730 | GridBagConstraints gridBagConstraints1 = new GridBagConstraints(); |
||
731 | gridBagConstraints1.insets = new java.awt.Insets(0,0,0,0); |
||
732 | gridBagConstraints1.gridy = 0;
|
||
733 | gridBagConstraints1.gridx = 0;
|
||
734 | GridBagConstraints gridBagConstraints = new GridBagConstraints(); |
||
735 | gridBagConstraints.insets = new java.awt.Insets(5,0,5,0); |
||
736 | gridBagConstraints.gridy = 1;
|
||
737 | gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; |
||
738 | gridBagConstraints.gridheight = 1;
|
||
739 | gridBagConstraints.gridx = 0;
|
||
740 | pGeneral = new JPanel(); |
||
741 | pGeneral.setLayout(new GridBagLayout()); |
||
742 | pGeneral.setPreferredSize(new java.awt.Dimension(390,175)); |
||
743 | gridBagConstraints.gridwidth = 1;
|
||
744 | pGeneral.add(getPPointSelection(), gridBagConstraints); |
||
745 | pGeneral.add(getPControlPoint(), gridBagConstraints1); |
||
746 | } |
||
747 | return pGeneral;
|
||
748 | } |
||
749 | |||
750 | /**
|
||
751 | * This method initializes pFileSelection
|
||
752 | *
|
||
753 | * @return javax.swing.JPanel
|
||
754 | */
|
||
755 | private JPanel getPPointSelection() { |
||
756 | if (pPointSelection == null) { |
||
757 | //jLabel = new JLabel();
|
||
758 | FlowLayout flowLayout1 = new FlowLayout(); |
||
759 | FlowLayout flowLayout = new FlowLayout(); |
||
760 | flowLayout.setVgap(-3);
|
||
761 | flowLayout.setAlignment(java.awt.FlowLayout.LEFT); |
||
762 | pPointSelection = new JPanel(); |
||
763 | pPointSelection.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", java.awt.Font.BOLD, 12), java.awt.Color.black)); |
||
764 | pPointSelection.setName("");
|
||
765 | pPointSelection.setLayout(flowLayout); |
||
766 | pPointSelection.setPreferredSize(new java.awt.Dimension(375,27)); |
||
767 | flowLayout.setHgap(0);
|
||
768 | if(this.tableControlerPanel == null){ |
||
769 | tableControlerPanel = new TableControlerPanel();
|
||
770 | tableControlerPanel.setLayout(flowLayout1); |
||
771 | flowLayout1.setVgap(1);
|
||
772 | flowLayout1.setHgap(0);
|
||
773 | //jLabel.setVerticalAlignment(javax.swing.SwingConstants.CENTER);
|
||
774 | //tableControlerPanel.setLNumberOfPoints(jLabel);
|
||
775 | tableControlerPanel.getBFirst().addActionListener(this);
|
||
776 | tableControlerPanel.getBLast().addActionListener(this);
|
||
777 | tableControlerPanel.getBNext().addActionListener(this);
|
||
778 | tableControlerPanel.getBPrev().addActionListener(this);
|
||
779 | tableControlerPanel.getBNew().addActionListener(this);
|
||
780 | tableControlerPanel.getCPoint().addActionListener(this);
|
||
781 | tableControlerPanel.getBClear().addActionListener(this);
|
||
782 | tableControlerPanel.getBDelPoint().addActionListener(this);
|
||
783 | } |
||
784 | //pPointSelection.add(getPTableControl(), null);
|
||
785 | pPointSelection.add(tableControlerPanel, null);
|
||
786 | pPointSelection.add(getPExtend(), null);
|
||
787 | } |
||
788 | return pPointSelection;
|
||
789 | } |
||
790 | |||
791 | /**
|
||
792 | * This method initializes pControls
|
||
793 | *
|
||
794 | */
|
||
795 | private JPanel getPControlPoint() { |
||
796 | if (pControlPoint == null) { |
||
797 | GridBagConstraints gridBagConstraints11 = new GridBagConstraints(); |
||
798 | GridBagConstraints gridBagConstraints2 = new GridBagConstraints(); |
||
799 | gridBagConstraints2.gridx = 0;
|
||
800 | gridBagConstraints2.insets = new java.awt.Insets(0,0,0,0); |
||
801 | gridBagConstraints2.gridy = 0;
|
||
802 | pControlPoint = new JPanel(); |
||
803 | pControlPoint.setLayout(new GridBagLayout()); |
||
804 | pControlPoint.setPreferredSize(new java.awt.Dimension(380,130)); |
||
805 | pControlPoint.setBorder(javax.swing.BorderFactory.createEmptyBorder(0,0,0,0)); |
||
806 | gridBagConstraints11.gridy = 0;
|
||
807 | gridBagConstraints11.gridx = 1;
|
||
808 | if(this.dataPointPanel == null){ |
||
809 | dataPointPanel = new DataPointPanel();
|
||
810 | dataPointPanel.setPreferredSize(new java.awt.Dimension(200,130)); |
||
811 | dataPointPanel.getTX().addKeyListener(this);
|
||
812 | dataPointPanel.getTY().addKeyListener(this);
|
||
813 | dataPointPanel.getLatitud().addKeyListener(this);
|
||
814 | dataPointPanel.getLongitud().addKeyListener(this);
|
||
815 | dataPointPanel.getTX().addFocusListener(this);
|
||
816 | dataPointPanel.getTY().addFocusListener(this);
|
||
817 | dataPointPanel.getLatitud().addFocusListener(this);
|
||
818 | dataPointPanel.getLongitud().addFocusListener(this);
|
||
819 | } |
||
820 | pControlPoint.add(dataPointPanel, gridBagConstraints2); |
||
821 | |||
822 | getErrorPointPanel(); |
||
823 | pControlPoint.add(errorPointPanel, gridBagConstraints11); |
||
824 | } |
||
825 | return pControlPoint;
|
||
826 | } |
||
827 | |||
828 | /**
|
||
829 | * Asigna la ruta donde est?n las imagenes
|
||
830 | * @param pathToImages
|
||
831 | */
|
||
832 | public void setPathToImages(String pathToImages) { |
||
833 | this.pathToImages = pathToImages;
|
||
834 | } |
||
835 | |||
836 | /**
|
||
837 | * Obtiene el ?ltimo indice seleccionado de la lista de puntos
|
||
838 | * @return entero con el ?ltimo indice seleccionado de la lista de puntos
|
||
839 | */
|
||
840 | public int getLastIndexSelection() { |
||
841 | return lastIndexSelection;
|
||
842 | } |
||
843 | |||
844 | /**
|
||
845 | * Asigna el ?ltimo indice seleccionado de la lista de puntos
|
||
846 | * @param entero con el ?ltimo indice seleccionado de la lista de puntos
|
||
847 | */
|
||
848 | public void setLastIndexSelection(int lastIndexSelection) { |
||
849 | this.lastIndexSelection = lastIndexSelection;
|
||
850 | } |
||
851 | |||
852 | /**
|
||
853 | * Activa o desactiva este panel y todos los que lo componen
|
||
854 | * @param enabled variable booleana para la activaci?n y/o desactivaci?n
|
||
855 | */
|
||
856 | public void setEnabled(boolean enabled){ |
||
857 | this.dataPointPanel.setEnabled(enabled);
|
||
858 | this.errorPointPanel.setEnabled(enabled);
|
||
859 | this.tableControlerPanel.setEnabled(enabled);
|
||
860 | this.getBSelectFromView().setEnabled(enabled);
|
||
861 | } |
||
862 | //**********************End Setters & Getters*********************
|
||
863 | } |