Revision 3049
trunk/extensions/extGeoreferencing/src/com/iver/cit/gvsig/fmap/layers/FLyrGeoRaster.java | ||
---|---|---|
40 | 40 |
*/ |
41 | 41 |
package com.iver.cit.gvsig.fmap.layers; |
42 | 42 |
|
43 |
import java.awt.Component; |
|
44 | 43 |
import java.awt.Graphics2D; |
45 | 44 |
import java.awt.geom.Point2D; |
46 | 45 |
import java.awt.geom.Rectangle2D; |
47 | 46 |
import java.awt.image.BufferedImage; |
48 | 47 |
|
49 |
import javax.swing.JOptionPane; |
|
50 |
|
|
51 | 48 |
import org.cresques.px.Extent; |
52 | 49 |
|
53 |
import com.iver.andami.PluginServices; |
|
54 | 50 |
import com.iver.cit.gvsig.StackZoom; |
55 | 51 |
import com.iver.cit.gvsig.fmap.DriverException; |
56 | 52 |
import com.iver.cit.gvsig.fmap.ViewPort; |
57 | 53 |
import com.iver.cit.gvsig.fmap.operations.Cancellable; |
54 |
import com.iver.cit.gvsig.gui.View; |
|
58 | 55 |
import com.iver.cit.gvsig.gui.Dialogs.GeoreferencingDialog; |
56 |
import com.iver.cit.gvsig.gui.Panels.ZoomControlPanel; |
|
57 |
import com.iver.cit.gvsig.gui.Panels.TablePointsPanel.PointTable; |
|
59 | 58 |
|
60 | 59 |
|
61 | 60 |
/** |
... | ... | |
405 | 404 |
public void setGeoDialog(GeoreferencingDialog geoDialog) { |
406 | 405 |
this.geoDialog = geoDialog; |
407 | 406 |
} |
407 |
|
|
408 |
/** |
|
409 |
* A partir de nuevas coordenadas actualiza la vista, minimagen, capa de puntos el |
|
410 |
* dialogo y la tabla. |
|
411 |
* |
|
412 |
*/ |
|
413 |
public void updateData(int nPunto, Point2D pixel, Point2D map, GeoreferencingDialog dialog, View vista, FLyrPoints plyr){ |
|
414 |
if(dialog == null || vista == null || plyr == null) |
|
415 |
return; |
|
416 |
if(pixel == null && map == null) |
|
417 |
return; |
|
418 |
|
|
419 |
//Actualizamos los textBox |
|
420 |
if(pixel != null){ |
|
421 |
dialog.setPixelText(pixel.getX(), pixel.getY()); |
|
422 |
dialog.getConectorPanel().getDataPointsTabPanel().getSelectPointsPanel().lastTx = String.valueOf(pixel.getX()); |
|
423 |
dialog.getConectorPanel().getDataPointsTabPanel().getSelectPointsPanel().lastTy = String.valueOf(pixel.getY()); |
|
424 |
} |
|
425 |
if(map != null){ |
|
426 |
dialog.setMapCoordText(map.getX(), map.getY()); |
|
427 |
dialog.getConectorPanel().getDataPointsTabPanel().getSelectPointsPanel().lastLong = String.valueOf(map.getX()); |
|
428 |
dialog.getConectorPanel().getDataPointsTabPanel().getSelectPointsPanel().lastLat = String.valueOf(map.getX()); |
|
429 |
} |
|
430 |
|
|
431 |
//Actualizamos la tabla |
|
432 |
PointTable pointsTable = dialog.getConectorPanel().getDataPointsTabPanel().getTablePointsPanel().getJTable(); |
|
433 |
if(pointsTable.getTable().getRowCount() < nPunto){ |
|
434 |
pointsTable.getTableModel().addNew(); |
|
435 |
pointsTable.getTableModel().setValueAt(String.valueOf(nPunto - 1),nPunto - 1,0); |
|
436 |
} |
|
437 |
if(pixel != null){ |
|
438 |
pointsTable.getTableModel().setValueAt(String.valueOf(pixel.getX()),nPunto - 1,1); |
|
439 |
pointsTable.getTableModel().setValueAt(String.valueOf(pixel.getY()),nPunto - 1,2); |
|
440 |
} |
|
441 |
if(map != null){ |
|
442 |
pointsTable.getTableModel().setValueAt(String.valueOf(map.getX()),nPunto - 1,3); |
|
443 |
pointsTable.getTableModel().setValueAt(String.valueOf(map.getY()),nPunto - 1,4); |
|
444 |
} |
|
445 |
|
|
446 |
//Actualizamos la miniimagen |
|
447 |
ViewPort viewPort = vista.getMapControl().getMapContext().getViewPort(); |
|
448 |
if(pixel != null){ |
|
449 |
dialog.getConectorPanel().getAdjustGeorefPanel().getZoomLeft().setCenterPoint(this.img2World(pixel)); |
|
450 |
dialog.getConectorPanel().getAdjustGeorefPanel().setNumberPoint(nPunto); |
|
451 |
dialog.getConectorPanel().getAdjustGeorefPanel().setViewPort(viewPort); |
|
452 |
dialog.getConectorPanel().getAdjustGeorefPanel().getZoomLeft().draw(); |
|
453 |
} |
|
454 |
|
|
455 |
if(map != null){ |
|
456 |
dialog.getConectorPanel().getAdjustGeorefPanel().getZoomRight().setCenterPoint(map); |
|
457 |
dialog.getConectorPanel().getAdjustGeorefPanel().setNumberPoint(nPunto); |
|
458 |
dialog.getConectorPanel().getAdjustGeorefPanel().setViewPort(viewPort); |
|
459 |
dialog.getConectorPanel().getAdjustGeorefPanel().getZoomRight().draw(); |
|
460 |
} |
|
461 |
|
|
462 |
//Actualizamos la capa de puntos |
|
463 |
plyr.updatePoint(pixel, map, nPunto - 1); |
|
464 |
|
|
465 |
//Actualizamos la vista |
|
466 |
vista.getMapControl().getMapContext().invalidate(); |
|
467 |
} |
|
468 |
|
|
469 |
/** |
|
470 |
* Carga los datos de un n?mero de punto determinado. Actualizar? las mini imagenes y los textField. |
|
471 |
* @param nPunto N?mero de punto a cargar |
|
472 |
*/ |
|
473 |
public void loadPointData(int nPunto, GeoreferencingDialog dialog, View vista, FLyrPoints plyr){ |
|
474 |
|
|
475 |
} |
|
476 |
|
|
408 | 477 |
} |
trunk/extensions/extGeoreferencing/src/com/iver/cit/gvsig/gui/Panels/SelectPointsPanel.java | ||
---|---|---|
6 | 6 |
import java.awt.GridBagLayout; |
7 | 7 |
import java.awt.event.ActionEvent; |
8 | 8 |
import java.awt.event.ActionListener; |
9 |
import java.awt.event.FocusEvent; |
|
10 |
import java.awt.event.FocusListener; |
|
9 | 11 |
import java.awt.event.KeyEvent; |
10 | 12 |
import java.awt.event.KeyListener; |
11 | 13 |
import java.awt.geom.Point2D; |
... | ... | |
19 | 21 |
|
20 | 22 |
import com.iver.andami.PluginServices; |
21 | 23 |
import com.iver.cit.gvsig.fmap.layers.FLayer; |
24 |
import com.iver.cit.gvsig.fmap.layers.FLyrGeoRaster; |
|
22 | 25 |
import com.iver.cit.gvsig.fmap.layers.FLyrPoints; |
23 | 26 |
import com.iver.cit.gvsig.fmap.layers.FLyrPoints.GeoPoint; |
24 | 27 |
import com.iver.cit.gvsig.gui.View; |
25 | 28 |
import com.iver.cit.gvsig.gui.Dialogs.GeoreferencingDialog; |
26 | 29 |
import com.iver.cit.gvsig.gui.toolListeners.GeorefPointerListener; |
27 | 30 |
|
28 |
public class SelectPointsPanel extends JPanel implements ActionListener, KeyListener{ |
|
31 |
public class SelectPointsPanel extends JPanel implements ActionListener, KeyListener, FocusListener{
|
|
29 | 32 |
|
30 | 33 |
private JPanel pGeneral = null; |
31 | 34 |
private JPanel pPointSelection = null; |
... | ... | |
64 | 67 |
private GeoreferencingDialog grd = null; |
65 | 68 |
|
66 | 69 |
private JLabel jLabel = null; |
70 |
/** |
|
71 |
* Valores ?ltimos que se han introducido en los JTextField para poder reponerlos. |
|
72 |
*/ |
|
73 |
public String lastTx = "", lastTy = "", lastLong = "", lastLat = ""; |
|
74 |
|
|
67 | 75 |
public SelectPointsPanel() { |
68 | 76 |
super(); |
69 | 77 |
initialize(); |
... | ... | |
183 | 191 |
dataPointPanel.getTY().addKeyListener(this); |
184 | 192 |
dataPointPanel.getLatitud().addKeyListener(this); |
185 | 193 |
dataPointPanel.getLongitud().addKeyListener(this); |
194 |
dataPointPanel.getTX().addFocusListener(this); |
|
195 |
dataPointPanel.getTY().addFocusListener(this); |
|
196 |
dataPointPanel.getLatitud().addFocusListener(this); |
|
197 |
dataPointPanel.getLongitud().addFocusListener(this); |
|
186 | 198 |
} |
187 | 199 |
pControlPoint.add(dataPointPanel, gridBagConstraints2); |
188 | 200 |
|
... | ... | |
477 | 489 |
} |
478 | 490 |
|
479 | 491 |
/** |
480 |
* Checkea un textField para que contenga caracteres numericos y actualiza
|
|
481 |
* un punto con el valor actual de l JTextField. Si no hay puntos en la
|
|
482 |
* lista no salvar? ning?n valor.
|
|
492 |
* Checkea un textField para que contenga caracteres validos. Consideramos validos
|
|
493 |
* los caracteres del 0 al 9, el punto, DEL, Supr, flechas y Enter teniendo en cuenta que el
|
|
494 |
* c?digo ascii del teclado numerico es distinto.
|
|
483 | 495 |
*/ |
484 |
public void checkTextField(JTextField tf, boolean xValue, boolean pixelValue, int code){ |
|
485 |
|
|
486 |
//Ignoramos las teclas Del, Spr, Mayusculas, Alt, Ctrl, Enter |
|
487 |
if(code == 8 || code == 127 || code == 16 || code == 20 || |
|
488 |
code == 18 || code == 17 || code == 10 ) |
|
489 |
return; |
|
490 |
|
|
491 |
//Si el caracter introducido es erroneo avisamos y volvemos |
|
492 |
if((code < 48 || code > 57) && code != 46){ |
|
493 |
tf.setText(""); |
|
494 |
JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), |
|
495 |
PluginServices.getText(this, "caracteres_erroneos")); |
|
496 |
return; |
|
496 |
public boolean checkTextField(JTextField tf, int code, String lastText){ |
|
497 |
System.out.println(code); |
|
498 |
//Si el caracter es erroneo pasamos de el y reponemos el texto que habia |
|
499 |
if( (code >= 0 && code <= 7) || |
|
500 |
code == 9 || |
|
501 |
(code >= 11 && code <= 36) || |
|
502 |
(code >= 41 && code <= 45) || |
|
503 |
code == 47 || |
|
504 |
(code >= 58 && code <= 95) || |
|
505 |
(code >= 106 && code <= 109) || |
|
506 |
(code >= 111 && code <= 126) || |
|
507 |
code >= 128){ |
|
508 |
tf.setText(lastText); |
|
509 |
return false; |
|
497 | 510 |
} |
498 | 511 |
|
499 |
//Si no hay puntos en la lista no se hace nada |
|
500 |
if(lyrPoints == null || lyrPoints.getCountPoints() == 0) |
|
501 |
return; |
|
502 |
|
|
503 |
//Si el caracter era valido salvamos el valor en la capa |
|
504 |
if(!tf.getText().equals("")){ |
|
505 |
loadLyrPoint(); |
|
506 |
Point2D p = null; |
|
507 |
if(pixelValue) |
|
508 |
p = ((GeoPoint)lyrPoints.getPoint(tableControlerPanel.getCPoint().getSelectedIndex())).pixelPoint; |
|
509 |
else |
|
510 |
p = ((GeoPoint)lyrPoints.getPoint(tableControlerPanel.getCPoint().getSelectedIndex())).mapPoint; |
|
511 |
if(xValue){ |
|
512 |
if(p != null) |
|
513 |
p.setLocation(Double.valueOf(tf.getText()).doubleValue(), p.getY()); |
|
514 |
else{ |
|
515 |
p = new Point2D.Double(); |
|
516 |
p.setLocation(Double.valueOf(tf.getText()).doubleValue(), 0.0); |
|
517 |
} |
|
518 |
}else{ |
|
519 |
if(p != null) |
|
520 |
p.setLocation(p.getX(), Double.valueOf(tY.getText()).doubleValue()); |
|
521 |
else{ |
|
522 |
p = new Point2D.Double(); |
|
523 |
p.setLocation(0.0, Double.valueOf(tY.getText()).doubleValue()); |
|
524 |
} |
|
525 |
} |
|
526 |
} |
|
512 |
return true; |
|
527 | 513 |
} |
528 | 514 |
|
529 | 515 |
/** |
... | ... | |
711 | 697 |
* @see java.awt.event.KeyListener#keyPressed(java.awt.event.KeyEvent) |
712 | 698 |
*/ |
713 | 699 |
public void keyPressed(KeyEvent e) { |
714 |
// TODO Auto-generated method stub |
|
715 |
|
|
700 |
// TODO Auto-generated method stu |
|
716 | 701 |
} |
717 | 702 |
|
718 | 703 |
/** |
704 |
* Actualiza los valores del punto nuevo introducido desde el teclado llamando a la funci?n |
|
705 |
* de la capa updataData que actualizar? los controles necesarios para que se refresquen la vista |
|
706 |
* mini imagenes, textfields, tabla y capa de puntos. |
|
707 |
* @param pixel Pixel de la imagen |
|
708 |
* @param map Coordenadas de la vista. |
|
709 |
*/ |
|
710 |
private void updatePointsValue(Point2D pixel, Point2D map){ |
|
711 |
//Actualizamos los controles con los nuevos valores |
|
712 |
View theView = (View) PluginServices.getMDIManager().getActiveView(); |
|
713 |
for(int i=0;i<theView.getMapControl().getMapContext().getLayers().getLayersCount();i++){ |
|
714 |
FLayer lyr = theView.getMapControl().getMapContext().getLayers().getLayer(i); |
|
715 |
if( lyr instanceof FLyrGeoRaster && |
|
716 |
lyr.getName().startsWith("*") && |
|
717 |
lyr.isActive()){ |
|
718 |
((FLyrGeoRaster)lyr).updateData(Integer.valueOf(this.grd.getSelectPointsPanel().getTableControlerPanel().getCPoint().getSelectedItem().toString()).intValue(), |
|
719 |
pixel, |
|
720 |
map, |
|
721 |
this.grd, |
|
722 |
theView, |
|
723 |
lyrPoints); |
|
724 |
} |
|
725 |
} |
|
726 |
} |
|
727 |
|
|
728 |
/** |
|
719 | 729 |
* Control de eventos de las entradas de texto de los puntos |
720 | 730 |
*/ |
721 | 731 |
public void keyReleased(KeyEvent e) { |
722 | 732 |
//Campo de texto de la coordenada X en pixeles |
723 |
if(e.getSource() == dataPointPanel.getTX()){
|
|
724 |
checkTextField(dataPointPanel.getTX(), true, true, e.getKeyCode());
|
|
725 |
}
|
|
733 |
Point2D pixel = null;
|
|
734 |
Point2D map = null;
|
|
735 |
boolean update = false;
|
|
726 | 736 |
|
727 |
//Campo de texto de la coordenada Y en pixeles |
|
728 |
if(e.getSource() == dataPointPanel.getTY()){ |
|
729 |
checkTextField(dataPointPanel.getTY(), false, true, e.getKeyCode()); |
|
737 |
try{ |
|
738 |
if(e.getSource() == dataPointPanel.getTX()){ |
|
739 |
if(checkTextField(dataPointPanel.getTX(), e.getKeyCode(), lastTx)){ |
|
740 |
pixel = new Point2D.Double(); |
|
741 |
pixel.setLocation( Double.valueOf(dataPointPanel.getTX().getText()).doubleValue(), |
|
742 |
Double.valueOf(dataPointPanel.getTY().getText()).doubleValue()); |
|
743 |
if(e.getKeyCode() == 10) |
|
744 |
update = true; |
|
745 |
lastTx = dataPointPanel.getTX().getText(); |
|
746 |
} |
|
747 |
} |
|
748 |
|
|
749 |
//Campo de texto de la coordenada Y en pixeles |
|
750 |
if(e.getSource() == dataPointPanel.getTY()){ |
|
751 |
if(checkTextField(dataPointPanel.getTY(), e.getKeyCode(), lastTy)){ |
|
752 |
pixel = new Point2D.Double(); |
|
753 |
pixel.setLocation( Double.valueOf(dataPointPanel.getTX().getText()).doubleValue(), |
|
754 |
Double.valueOf(dataPointPanel.getTY().getText()).doubleValue()); |
|
755 |
if(e.getKeyCode() == 10) |
|
756 |
update = true; |
|
757 |
lastTy = dataPointPanel.getTY().getText(); |
|
758 |
} |
|
759 |
} |
|
760 |
|
|
761 |
//Campo de texto de la coordenada X en coordenadas del mundo |
|
762 |
if(e.getSource() == dataPointPanel.getLatitud()){ |
|
763 |
if(checkTextField(dataPointPanel.getLatitud(), e.getKeyCode(), lastLat)){ |
|
764 |
map = new Point2D.Double(); |
|
765 |
map.setLocation( Double.valueOf(dataPointPanel.getLongitud().getText()).doubleValue(), |
|
766 |
Double.valueOf(dataPointPanel.getLatitud().getText()).doubleValue()); |
|
767 |
if(e.getKeyCode() == 10) |
|
768 |
update = true; |
|
769 |
lastLat = dataPointPanel.getLatitud().getText(); |
|
770 |
} |
|
771 |
} |
|
772 |
|
|
773 |
//Campo de texto de la coordenada Y en coordenadas del mundo |
|
774 |
if(e.getSource() == dataPointPanel.getLongitud()){ |
|
775 |
if(checkTextField(dataPointPanel.getLongitud(), e.getKeyCode(), lastLong)){ |
|
776 |
map = new Point2D.Double(); |
|
777 |
map.setLocation( Double.valueOf(dataPointPanel.getLongitud().getText()).doubleValue(), |
|
778 |
Double.valueOf(dataPointPanel.getLatitud().getText()).doubleValue()); |
|
779 |
if(e.getKeyCode() == 10) |
|
780 |
update = true; |
|
781 |
lastLong = dataPointPanel.getLongitud().getText(); |
|
782 |
} |
|
783 |
} |
|
784 |
|
|
785 |
if(update) |
|
786 |
this.updatePointsValue(pixel, map); |
|
787 |
|
|
788 |
}catch(NumberFormatException exc){ |
|
789 |
System.out.println("Formato numerico erroneo"); |
|
730 | 790 |
} |
731 |
|
|
732 |
//Campo de texto de la coordenada X en coordenadas del mundo |
|
733 |
if(e.getSource() == dataPointPanel.getLatitud()){ |
|
734 |
checkTextField(dataPointPanel.getLatitud(), true, false, e.getKeyCode()); |
|
735 |
} |
|
736 |
|
|
737 |
//Campo de texto de la coordenada Y en coordenadas del mundo |
|
738 |
if(e.getSource() == dataPointPanel.getLongitud()){ |
|
739 |
checkTextField(dataPointPanel.getLongitud(), false, false, e.getKeyCode()); |
|
740 |
} |
|
741 | 791 |
|
742 | 792 |
} |
743 | 793 |
|
... | ... | |
748 | 798 |
// TODO Auto-generated method stub |
749 | 799 |
|
750 | 800 |
} |
801 |
|
|
802 |
/* (non-Javadoc) |
|
803 |
* @see java.awt.event.FocusListener#focusGained(java.awt.event.FocusEvent) |
|
804 |
*/ |
|
805 |
public void focusGained(FocusEvent arg0) { |
|
806 |
// TODO Auto-generated method stub |
|
751 | 807 |
|
808 |
} |
|
809 |
|
|
810 |
/** |
|
811 |
* Los campos de texto de las coordenadas cuando pierden el foco actualizan el valor del pixel |
|
812 |
* en la cap, vista, mini imagen y tabla |
|
813 |
*/ |
|
814 |
public void focusLost(FocusEvent arg0) { |
|
815 |
Point2D pixel = new Point2D.Double(); |
|
816 |
Point2D map = new Point2D.Double(); |
|
817 |
pixel.setLocation(Double.valueOf(dataPointPanel.getTX().getText()).doubleValue(), |
|
818 |
Double.valueOf(dataPointPanel.getTY().getText()).doubleValue()); |
|
819 |
map.setLocation(Double.valueOf(dataPointPanel.getLongitud().getText()).doubleValue(), |
|
820 |
Double.valueOf(dataPointPanel.getLatitud().getText()).doubleValue()); |
|
821 |
this.updatePointsValue(pixel, map); |
|
752 | 822 |
|
823 |
} |
|
824 |
|
|
753 | 825 |
} |
trunk/extensions/extGeoreferencing/src/com/iver/cit/gvsig/gui/Panels/DataPointsTabPanel.java | ||
---|---|---|
89 | 89 |
} |
90 | 90 |
|
91 | 91 |
if (((JTabbedPane)ev.getSource()).getSelectedIndex() == 1){ |
92 |
parent.getFrame().setResizable(true); |
|
93 |
|
|
94 |
FLyrPoints lyrPoints = null; |
|
95 |
View theView = (View) PluginServices.getMDIManager().getActiveView(); |
|
96 |
for(int i=0;i<theView.getMapControl().getMapContext().getLayers().getLayersCount();i++){ |
|
97 |
FLayer lyr = theView.getMapControl().getMapContext().getLayers().getLayer(i); |
|
98 |
if( lyr instanceof FLyrPoints) |
|
99 |
lyrPoints = (FLyrPoints)lyr; |
|
100 |
} |
|
101 |
if(lyrPoints != null){ |
|
102 |
//A?adimos las filas que falten |
|
103 |
for(int i=tablePointsPanel.getJTable().getTableModel().getRowCount(); |
|
104 |
i<lyrPoints.length();i++) |
|
105 |
this.tablePointsPanel.getJTable().getTableModel().addNew(); |
|
106 |
|
|
107 |
//Llenamos la tabla |
|
108 |
for(int i=0;i<lyrPoints.length();i++){ |
|
109 |
GeoPoint p = lyrPoints.getPoint(i); |
|
110 |
this.tablePointsPanel.getJTable().getTableModel().setValueAt(String.valueOf(i),i,0); |
|
111 |
this.tablePointsPanel.getJTable().getTableModel().setValueAt(String.valueOf(p.pixelPoint.getX()),i,1); |
|
112 |
this.tablePointsPanel.getJTable().getTableModel().setValueAt(String.valueOf(p.pixelPoint.getY()),i,2); |
|
113 |
this.tablePointsPanel.getJTable().getTableModel().setValueAt(String.valueOf(p.mapPoint.getX()),i,3); |
|
114 |
this.tablePointsPanel.getJTable().getTableModel().setValueAt(String.valueOf(p.mapPoint.getY()),i,4); |
|
115 |
this.tablePointsPanel.getJTable().getTableModel().setValueAt("",i,5); |
|
116 |
this.tablePointsPanel.getJTable().getTableModel().setValueAt("",i,6); |
|
117 |
this.tablePointsPanel.getJTable().getTableModel().setValueAt("",i,7); |
|
118 |
} |
|
119 |
|
|
120 |
} |
|
121 |
|
|
122 |
|
|
123 |
|
|
124 |
|
|
92 |
parent.getFrame().setResizable(true); |
|
125 | 93 |
} |
126 | 94 |
|
127 | 95 |
} |
trunk/extensions/extGeoreferencing/src/com/iver/cit/gvsig/gui/Panels/TablePointsPanel.java | ||
---|---|---|
222 | 222 |
* @author Nacho Brodin (brodin_ign@gva.es) |
223 | 223 |
* |
224 | 224 |
*/ |
225 |
class TableModelPoint extends DefaultTableModel { |
|
225 |
public class TableModelPoint extends DefaultTableModel {
|
|
226 | 226 |
|
227 | 227 |
public TableModelPoint(){ |
228 | 228 |
super(new Object[0][8], columnNames); |
... | ... | |
260 | 260 |
|
261 | 261 |
|
262 | 262 |
} |
263 |
/** |
|
264 |
* @return Returns the table. |
|
265 |
*/ |
|
266 |
public JTable getTable() { |
|
267 |
return table; |
|
268 |
} |
|
263 | 269 |
} |
264 | 270 |
} |
trunk/extensions/extGeoreferencing/src/com/iver/cit/gvsig/gui/Panels/ZoomControlPanel.java | ||
---|---|---|
56 | 56 |
public FLyrPoints lyrPoints = null; |
57 | 57 |
public FLyrGeoRaster lyrGeoRaster = null; |
58 | 58 |
public GeoreferencingDialog dialog = null; |
59 |
private boolean rightControl = false; |
|
59 | 60 |
|
60 | 61 |
|
61 | 62 |
|
... | ... | |
64 | 65 |
*/ |
65 | 66 |
public ZoomControlPanel(boolean rightControl) { |
66 | 67 |
super(); |
68 |
this.rightControl = rightControl; |
|
67 | 69 |
initialize(rightControl); |
68 | 70 |
} |
69 | 71 |
|
... | ... | |
203 | 205 |
public void draw(){ |
204 | 206 |
if(canvas != null){ |
205 | 207 |
canvas.setViewPort(this.viewPort); |
206 |
canvas.repaint();//.update();
|
|
208 |
canvas.repaint(); |
|
207 | 209 |
} |
208 | 210 |
} |
209 | 211 |
|
... | ... | |
263 | 265 |
|
264 | 266 |
|
265 | 267 |
/** |
268 |
* @return Returns the rightControl. |
|
269 |
*/ |
|
270 |
public boolean isRightControl() { |
|
271 |
return rightControl; |
|
272 |
} |
|
273 |
|
|
274 |
/** |
|
266 | 275 |
* @return Returns the lyrGeoRaster. |
267 | 276 |
*/ |
268 | 277 |
public FLyrGeoRaster getLyrGeoRaster() { |
... | ... | |
378 | 387 |
if(!dragged){ |
379 | 388 |
dbGraphics.setColor( Color.WHITE ); |
380 | 389 |
dbGraphics.fillRect( 0,0,ancho,alto ); |
390 |
gTmp.setColor( Color.WHITE ); |
|
391 |
gTmp.fillRect( 0,0,ancho,alto ); |
|
381 | 392 |
|
382 | 393 |
try{ |
383 | 394 |
if(newViewPort != null){ |
... | ... | |
462 | 473 |
|
463 | 474 |
} |
464 | 475 |
|
465 |
/* (non-Javadoc) |
|
466 |
* @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent) |
|
476 |
/** |
|
477 |
* Al pulsar el rat?n sobre la minimagen permitimos que se pueda desplazar la cruz |
|
478 |
* |
|
467 | 479 |
*/ |
468 | 480 |
public void mousePressed(MouseEvent ev) { |
469 |
ptoIni = ev.getPoint(); |
|
481 |
this.movDragged = ptoIni = ev.getPoint();
|
|
470 | 482 |
zoomControl.loadLayer(); |
471 | 483 |
initCrux = new Point2D.Double(); |
472 |
initCrux.setLocation(this.getWidth() / 2, this.getHeight() / 2);//zoomControl.lyrPoints.getPoint(zoomControl.getNumberPoint() - 1).mapPoint; |
|
473 |
|
|
484 |
initCrux.setLocation(this.getWidth() / 2, this.getHeight() / 2); |
|
474 | 485 |
this.dragged = true; |
475 | 486 |
repaint(); |
476 | 487 |
} |
... | ... | |
483 | 494 |
ViewPort viewPort = theView.getMapControl().getMapContext().getViewPort(); |
484 | 495 |
ptoFin = ev.getPoint(); |
485 | 496 |
this.dragged = false; |
486 |
|
|
487 |
double destX = (ptoFin.getX() * centerPoint.getX()) / ptoIni.getX(); |
|
488 |
double destY = (ptoFin.getY() * centerPoint.getY()) / ptoIni.getY(); |
|
497 |
|
|
498 |
double destX = newViewPort.getExtent().getMinX() + ((ptoFin.getX() * (centerPoint.getX() - newViewPort.getExtent().getMinX())) / ptoIni.getX()); |
|
499 |
double destY = newViewPort.getExtent().getMinY() + (((this.getHeight() - ptoFin.getY()) * (centerPoint.getY() - newViewPort.getExtent().getMinY())) / (this.getHeight() - ptoIni.getY())); |
|
500 |
|
|
489 | 501 |
if(flayers == null) |
490 | 502 |
flayers = theView.getMapControl().getMapContext().getLayers(); |
491 | 503 |
for(int i=0;i<flayers.getLayersCount();i++){ |
492 | 504 |
FLayer lyr = flayers.getLayer(i); |
493 | 505 |
if(lyr instanceof FLyrPoints){ |
494 | 506 |
FLyrPoints lp = (FLyrPoints)lyr; |
495 |
Point2D pixelImg = zoomControl.getLyrGeoRaster().world2Img(destX, destY); |
|
496 |
if(pixelImg == null){ |
|
497 |
JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), |
|
498 |
PluginServices.getText(this, "fuera_de_extent")); |
|
499 |
return; |
|
500 |
} |
|
501 | 507 |
|
502 |
Point2D map = new Point2D.Double(); |
|
503 |
map.setLocation(destX, destY); |
|
504 |
lp.updatePoint(pixelImg, map, zoomControl.getNumberPoint() - 1); |
|
505 |
System.out.println("===>"+pixelImg.getX()+" "+pixelImg.getY()+" "+map.getX()+" "+map.getY()); |
|
506 |
//Actualizamos la ventana |
|
507 |
zoomControl.getDialog().setPixelText(pixelImg.getX(), pixelImg.getY()); |
|
508 |
zoomControl.getDialog().setMapCoordText(map.getX(), map.getY()); |
|
508 |
if(zoomControl.isRightControl()){ //Control de actualizaci?n de pixel de imagen |
|
509 |
Point2D pixelImg = zoomControl.getLyrGeoRaster().world2Img(destX, destY); |
|
510 |
|
|
511 |
if(pixelImg == null){ |
|
512 |
JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), |
|
513 |
PluginServices.getText(this, "fuera_de_extent")); |
|
514 |
return; |
|
515 |
} |
|
516 |
zoomControl.getLyrGeoRaster().updateData( Integer.valueOf(zoomControl.getDialog().getSelectPointsPanel().getTableControlerPanel().getCPoint().getSelectedItem().toString()).intValue(), |
|
517 |
pixelImg, |
|
518 |
null, |
|
519 |
zoomControl.getDialog(), |
|
520 |
theView, |
|
521 |
lp); |
|
522 |
}else{ //Control de actualizaci?n de coordenadas del mundo |
|
523 |
Point2D mapPoint = new Point2D.Double(); |
|
524 |
mapPoint.setLocation(destX, destY); |
|
525 |
zoomControl.getLyrGeoRaster().updateData( Integer.valueOf(zoomControl.getDialog().getSelectPointsPanel().getTableControlerPanel().getCPoint().getSelectedItem().toString()).intValue(), |
|
526 |
null, |
|
527 |
mapPoint, |
|
528 |
zoomControl.getDialog(), |
|
529 |
theView, |
|
530 |
lp); |
|
531 |
} |
|
509 | 532 |
} |
510 | 533 |
} |
511 | 534 |
|
trunk/extensions/extGeoreferencing/src/com/iver/cit/gvsig/gui/toolListeners/GeorefPointerListener.java | ||
---|---|---|
131 | 131 |
return; |
132 | 132 |
} |
133 | 133 |
|
134 |
//Salvamos el primer punto pinchado en la capa. (Pixeles de la imagen) |
|
135 |
lyrPoints.getPoint(GeorefPointerListener.posPoint).pixelPoint = new Point2D.Double(); |
|
136 |
lyrPoints.getPoint(GeorefPointerListener.posPoint).pixelPoint.setLocation(((int)pixelImg.getX()), ((int)pixelImg.getY())); |
|
137 |
//Cargamos en la ventana el nuevo punto |
|
138 |
dialog.setPixelText(pixelImg.getX(), pixelImg.getY()); |
|
139 |
|
|
140 |
//Asignamos el viewPort sobre el control de detalle de zoom |
|
141 |
lyrGeoRaster.getGeoDialog().getConectorPanel().getAdjustGeorefPanel().getZoomLeft().setCenterPoint(wcPoint); |
|
142 | 134 |
int n = Integer.valueOf(dialog.getSelectPointsPanel().getTableControlerPanel().getCPoint().getSelectedItem().toString()).intValue(); |
143 |
lyrGeoRaster.getGeoDialog().getConectorPanel().getAdjustGeorefPanel().setNumberPoint(n); |
|
144 |
lyrGeoRaster.getGeoDialog().getConectorPanel().getAdjustGeorefPanel().setViewPort(viewPort); |
|
145 |
lyrGeoRaster.getGeoDialog().getConectorPanel().getAdjustGeorefPanel().getZoomLeft().draw(); |
|
135 |
lyrGeoRaster.updateData(n, |
|
136 |
pixelImg, |
|
137 |
null, |
|
138 |
dialog, |
|
139 |
theView, |
|
140 |
lyrPoints); |
|
146 | 141 |
|
147 | 142 |
firstPoint = false; |
148 | 143 |
} |
149 | 144 |
}else{ |
150 |
//Salvamos el segundo punto pinchado en la capa (Coordenadas de georreferenciaci?n) |
|
151 |
lyrPoints.getPoint(GeorefPointerListener.posPoint).mapPoint = new Point2D.Double(); |
|
152 |
lyrPoints.getPoint(GeorefPointerListener.posPoint).mapPoint.setLocation(wcPoint); |
|
153 |
//Cargamos en la ventana el nuevo punto |
|
154 |
dialog.setMapCoordText(wcPoint.getX(), wcPoint.getY()); |
|
155 |
|
|
145 |
|
|
156 | 146 |
//Deseleccionamos la herramienta de marcado de puntos |
157 | 147 |
theView.getMapControl().setTool(lyrPoints.getLastTool()); |
158 | 148 |
|
159 |
//Asignamos el viewPort sobre el control de detalle de zoom |
|
160 |
lyrGeoRaster.getGeoDialog().getConectorPanel().getAdjustGeorefPanel().getZoomRight().setCenterPoint(wcPoint); |
|
161 |
lyrGeoRaster.getGeoDialog().getConectorPanel().getAdjustGeorefPanel().setViewPort(viewPort); |
|
162 |
lyrGeoRaster.getGeoDialog().getConectorPanel().getAdjustGeorefPanel().getZoomRight().draw(); |
|
163 |
|
|
149 |
int n = Integer.valueOf(dialog.getSelectPointsPanel().getTableControlerPanel().getCPoint().getSelectedItem().toString()).intValue(); |
|
150 |
lyrGeoRaster.updateData(n, |
|
151 |
null, |
|
152 |
wcPoint, |
|
153 |
dialog, |
|
154 |
theView, |
|
155 |
lyrPoints); |
|
164 | 156 |
firstPoint = true; |
165 | 157 |
} |
166 |
theView.getMapControl().getMapContext().invalidate(); |
|
158 |
|
|
167 | 159 |
} |
168 | 160 |
} |
Also available in: Unified diff