Revision 3064 trunk/extensions/extGeoreferencing/src/com/iver/cit/gvsig/fmap/layers/FLyrPoints.java
FLyrPoints.java | ||
---|---|---|
48 | 48 |
import java.util.ArrayList; |
49 | 49 |
import java.util.Iterator; |
50 | 50 |
|
51 |
import javax.swing.table.DefaultTableModel; |
|
52 |
|
|
51 | 53 |
import com.iver.andami.PluginServices; |
52 | 54 |
import com.iver.cit.gvsig.fmap.DriverException; |
53 | 55 |
import com.iver.cit.gvsig.fmap.ViewPort; |
54 | 56 |
import com.iver.cit.gvsig.fmap.operations.Cancellable; |
55 | 57 |
import com.iver.cit.gvsig.gui.View; |
56 |
import com.iver.cit.gvsig.gui.Panels.SelectFilePanel; |
|
58 |
import com.iver.cit.gvsig.gui.Dialogs.GeoreferencingDialog; |
|
59 |
import com.iver.cit.gvsig.gui.Panels.AdjustGeorefPanel; |
|
60 |
import com.iver.cit.gvsig.gui.Panels.DataPointPanel; |
|
61 |
import com.iver.cit.gvsig.gui.Panels.SelectPointsPanel; |
|
62 |
import com.iver.cit.gvsig.gui.Panels.TablePointsPanel; |
|
63 |
import com.iver.cit.gvsig.gui.Panels.TablePointsPanel.PointTable; |
|
57 | 64 |
|
58 | 65 |
|
59 | 66 |
/** |
... | ... | |
126 | 133 |
pto = ((GeoPoint)pointList.get(i)).pixelPoint; |
127 | 134 |
|
128 | 135 |
if(pto != null){ |
129 |
g.setColor(Color.red); |
|
130 |
//g.setXORMode(Color.white); |
|
131 | 136 |
Point2D p = lyrGeoRaster.img2World(pto); |
132 | 137 |
p = vp.fromMapPoint(p); |
133 |
g.drawOval( (int)p.getX() - dpto, |
|
134 |
(int)p.getY() - dpto, |
|
135 |
DIAM_CIRCLE, |
|
136 |
DIAM_CIRCLE); |
|
137 |
g.drawLine((int)p.getX(), (int)p.getY() - dpto - incr, (int)p.getX(), (int)p.getY() + dpto + incr); |
|
138 |
g.drawLine((int)p.getX() - dpto - incr, (int)p.getY(), (int)p.getX() + dpto + incr, (int)p.getY()); |
|
138 |
drawPixelCrux(g, p); |
|
139 |
|
|
139 | 140 |
} |
140 | 141 |
|
141 | 142 |
//Punto de la vista |
142 | 143 |
pto = ((GeoPoint)pointList.get(i)).mapPoint; |
143 | 144 |
if(pto != null){ |
144 | 145 |
Point2D p = vp.fromMapPoint(pto); |
145 |
g.setColor(Color.green); |
|
146 |
//g.setXORMode(Color.white); |
|
147 |
g.drawOval( (int)p.getX() - dpto, |
|
148 |
(int)p.getY() - dpto, |
|
149 |
DIAM_CIRCLE, |
|
150 |
DIAM_CIRCLE); |
|
151 |
g.drawLine((int)p.getX(), (int)p.getY() - dpto - incr, (int)p.getX(), (int)p.getY() + dpto + incr); |
|
152 |
g.drawLine((int)p.getX() - dpto - incr, (int)p.getY(), (int)p.getX() + dpto + incr, (int)p.getY()); |
|
146 |
drawMapCrux(g, p); |
|
153 | 147 |
} |
154 | 148 |
} |
155 | 149 |
} |
156 | 150 |
} |
157 | 151 |
|
152 |
/** |
|
153 |
* Dibuja sobre el graphics pasado la cruz del punto que marca |
|
154 |
* el pixel de la imagen. |
|
155 |
* @param g Graphics |
|
156 |
*/ |
|
157 |
private void drawPixelCrux(Graphics2D g, Point2D p){ |
|
158 |
int dpto = (DIAM_CIRCLE >> 1); |
|
159 |
int incr = 5; |
|
160 |
g.setColor(Color.red); |
|
161 |
g.drawOval( (int)p.getX() - dpto, |
|
162 |
(int)p.getY() - dpto, |
|
163 |
DIAM_CIRCLE, |
|
164 |
DIAM_CIRCLE); |
|
165 |
g.drawLine((int)p.getX() - dpto, (int)p.getY() - dpto , (int)p.getX() - dpto + DIAM_CIRCLE, (int)p.getY() - dpto + DIAM_CIRCLE); |
|
166 |
g.drawLine((int)p.getX() - dpto, (int)p.getY() - dpto + DIAM_CIRCLE, (int)p.getX() - dpto + DIAM_CIRCLE, (int)p.getY() - dpto); |
|
167 |
g.setColor(Color.WHITE); |
|
168 |
g.drawOval( (int)p.getX() - dpto + 1, |
|
169 |
(int)p.getY() - dpto + 1, |
|
170 |
DIAM_CIRCLE - 2, |
|
171 |
DIAM_CIRCLE - 2); |
|
172 |
//g.drawLine((int)p.getX() - dpto, (int)p.getY() - dpto + 3, (int)p.getX() - dpto + DIAM_CIRCLE, (int)p.getY() - dpto + DIAM_CIRCLE - 3); |
|
173 |
//g.drawLine((int)p.getX() - dpto + 3, (int)p.getY() - dpto + DIAM_CIRCLE, (int)p.getX() - dpto + DIAM_CIRCLE - 3, (int)p.getY() - dpto); |
|
174 |
} |
|
175 |
|
|
176 |
/** |
|
177 |
* Dibuja sobre el graphics pasado la cruz del punto que marca |
|
178 |
* la coordenada de la vista. |
|
179 |
* @param g Graphics |
|
180 |
*/ |
|
181 |
private void drawMapCrux(Graphics2D g, Point2D p){ |
|
182 |
int dpto = (DIAM_CIRCLE >> 1); |
|
183 |
int incr = 5; |
|
184 |
g.setColor(new Color(45, 8 , 165)); |
|
185 |
g.drawRect( (int)p.getX() - dpto, |
|
186 |
(int)p.getY() - dpto, |
|
187 |
DIAM_CIRCLE, |
|
188 |
DIAM_CIRCLE); |
|
189 |
g.drawLine((int)p.getX(), (int)p.getY() - dpto - incr, (int)p.getX(), (int)p.getY() + dpto + incr); |
|
190 |
g.drawLine((int)p.getX() - dpto - incr, (int)p.getY(), (int)p.getX() + dpto + incr, (int)p.getY()); |
|
191 |
g.setColor(Color.WHITE); |
|
192 |
g.drawRect( (int)p.getX() - dpto + 1, |
|
193 |
(int)p.getY() - dpto + 1, |
|
194 |
DIAM_CIRCLE - 2, |
|
195 |
DIAM_CIRCLE - 2); |
|
196 |
} |
|
197 |
|
|
158 | 198 |
/* (non-Javadoc) |
159 | 199 |
* @see com.iver.cit.gvsig.fmap.layers.FLayer#print(java.awt.Graphics2D, com.iver.cit.gvsig.fmap.ViewPort, com.iver.cit.gvsig.fmap.operations.Cancellable, double) |
160 | 200 |
*/ |
... | ... | |
279 | 319 |
*un punto |
280 | 320 |
*/ |
281 | 321 |
public void setMiniExtent(int nPoint, Point2D centerPoint, ViewPort vp, boolean isRight){ |
282 |
System.out.println("1---->>>"+vp.getExtent()); |
|
283 | 322 |
if(isRight){ |
284 | 323 |
((GeoPoint)pointList.get(nPoint)).rightCenterPoint = centerPoint; |
285 | 324 |
((GeoPoint)pointList.get(nPoint)).rightViewPort = vp; |
... | ... | |
295 | 334 |
* @return |
296 | 335 |
*/ |
297 | 336 |
public ViewPort getMiniExtent(int nPoint, boolean isRight){ |
298 |
if(isRight){ |
|
299 |
System.out.println("2---->>>"+((GeoPoint)pointList.get(nPoint)).rightViewPort.getExtent()); |
|
337 |
if(isRight) |
|
300 | 338 |
return ((GeoPoint)pointList.get(nPoint)).rightViewPort; |
301 |
}else{ |
|
302 |
System.out.println("2---->>>"+((GeoPoint)pointList.get(nPoint)).leftViewPort.getExtent()); |
|
339 |
else |
|
303 | 340 |
return ((GeoPoint)pointList.get(nPoint)).leftViewPort; |
304 |
} |
|
341 |
|
|
305 | 342 |
} |
306 | 343 |
|
307 | 344 |
/** |
... | ... | |
317 | 354 |
} |
318 | 355 |
|
319 | 356 |
/** |
357 |
* Recorta los decimales para el visualizado en la selecci?n de puntos |
|
358 |
* @param s Cadena de entrada |
|
359 |
* @return Cadena de salida con decimales recortados |
|
360 |
*/ |
|
361 |
public static String tailDecimal(String s){ |
|
362 |
int len = 5; |
|
363 |
int index = s.indexOf("."); |
|
364 |
if( index == -1) |
|
365 |
return s; |
|
366 |
else{ |
|
367 |
if((index + len) >= s.length()) |
|
368 |
return s; |
|
369 |
return s.substring(0, index + len + 1); |
|
370 |
} |
|
371 |
} |
|
372 |
|
|
373 |
/** |
|
374 |
* Busca el punto en la capa FLyrPoint que corresponde con la posicion pos |
|
375 |
* y carga la informaci?n de este en el panel de informaci?n pasado por par?metro. |
|
376 |
* @param pos Posici?n del punto |
|
377 |
* @param panel donde se carga la informaci?n |
|
378 |
*/ |
|
379 |
public void loadVisualPoint(int pos, GeoreferencingDialog dialog){ |
|
380 |
GeoPoint pto = this.getPoint(pos); |
|
381 |
DataPointPanel dpp = dialog.getConectorPanel().getDataPointsTabPanel().getSelectPointsPanel().getDataPointPanel(); |
|
382 |
if(pto.pixelPoint != null){ |
|
383 |
dpp.getTX().setText(""+pto.pixelPoint.getX()); |
|
384 |
dpp.getTY().setText(""+pto.pixelPoint.getY()); |
|
385 |
} |
|
386 |
if(pto.mapPoint != null){ |
|
387 |
dpp.getLatitud().setText(tailDecimal(""+pto.mapPoint.getY())); |
|
388 |
dpp.getLongitud().setText(tailDecimal(""+pto.mapPoint.getX())); |
|
389 |
} |
|
390 |
|
|
391 |
//Seleccionamos la fila de la tabla |
|
392 |
PointTable table = dialog.getConectorPanel().getDataPointsTabPanel().getTablePointsPanel().getJTable(); |
|
393 |
table.getTable().setRowSelectionInterval(pos, pos); |
|
394 |
|
|
395 |
//Cargamos las mini imagenes |
|
396 |
dialog.getConectorPanel().getAdjustGeorefPanel().getZoomLeft().setCenterPoint(getCenterPoint(pos, false)); |
|
397 |
dialog.getConectorPanel().getAdjustGeorefPanel().getZoomLeft().setNewViewPort(getMiniExtent(pos, false)); |
|
398 |
dialog.getConectorPanel().getAdjustGeorefPanel().getZoomLeft().draw(); |
|
399 |
|
|
400 |
dialog.getConectorPanel().getAdjustGeorefPanel().getZoomRight().setCenterPoint(getCenterPoint(pos, true)); |
|
401 |
dialog.getConectorPanel().getAdjustGeorefPanel().getZoomRight().setNewViewPort(getMiniExtent(pos, true)); |
|
402 |
dialog.getConectorPanel().getAdjustGeorefPanel().getZoomRight().draw(); |
|
403 |
} |
|
404 |
|
|
405 |
/** |
|
406 |
* Limpia la lista de puntos . |
|
407 |
*/ |
|
408 |
public void clearVisualList(SelectPointsPanel spp, TablePointsPanel tpp, AdjustGeorefPanel agp){ |
|
409 |
//Limpiamos la lista de puntos |
|
410 |
clear(); |
|
411 |
//Limpiamos los controles del Selector de puntos |
|
412 |
spp.resetControls(false); |
|
413 |
spp.getTableControlerPanel().resetControls(); |
|
414 |
|
|
415 |
//Limpiamos la tabla y sus controles |
|
416 |
tpp.clearTable(); |
|
417 |
tpp.getTableControlerPanel().resetControls(); |
|
418 |
|
|
419 |
//Limpiamos las miniimagenes |
|
420 |
agp.getZoomLeft().clear(); |
|
421 |
agp.getZoomRight().clear(); |
|
422 |
|
|
423 |
//Actualizamos la vista |
|
424 |
View theView = (View) PluginServices.getMDIManager().getActiveView(); |
|
425 |
theView.getMapControl().getMapContext().invalidate(); |
|
426 |
} |
|
427 |
|
|
428 |
/** |
|
429 |
* Elimina un punto de la lista y lo elimina del panel |
|
430 |
* @param pos Posici?n del punto |
|
431 |
* @param grd Panel a limpiar |
|
432 |
*/ |
|
433 |
public void deleteVisualPoint(int pos, GeoreferencingDialog grd){ |
|
434 |
remove(pos); |
|
435 |
|
|
436 |
//Actualiza los controles de tabla y selector |
|
437 |
grd.getConectorPanel().getDataPointsTabPanel(). |
|
438 |
getSelectPointsPanel().getTableControlerPanel().setNItems(this.length()); |
|
439 |
grd.getConectorPanel().getDataPointsTabPanel(). |
|
440 |
getTablePointsPanel().getTableControlerPanel().setNItems(this.length()); |
|
441 |
|
|
442 |
//Elimina la fila de la tabla y renumera los puntos |
|
443 |
((DefaultTableModel)grd.getConectorPanel().getDataPointsTabPanel(). |
|
444 |
getTablePointsPanel().getJTable().getTable().getModel()).removeRow(pos); |
|
445 |
for(int i=0;i<length();i++) |
|
446 |
((DefaultTableModel)grd.getConectorPanel().getDataPointsTabPanel(). |
|
447 |
getTablePointsPanel().getJTable().getTable().getModel()).setValueAt(String.valueOf(i), i, 0); |
|
448 |
|
|
449 |
|
|
450 |
//Carga los puntos |
|
451 |
if(pos == 0){ |
|
452 |
grd.getConectorPanel().getDataPointsTabPanel().getSelectPointsPanel().getTableControlerPanel().setSelectedIndex(pos); |
|
453 |
loadVisualPoint(pos, grd); |
|
454 |
}else{ |
|
455 |
grd.getConectorPanel().getDataPointsTabPanel().getTablePointsPanel().getTableControlerPanel().setSelectedIndex(pos - 1); |
|
456 |
loadVisualPoint(pos - 1, grd); |
|
457 |
} |
|
458 |
|
|
459 |
//Redibujamos la vista |
|
460 |
View theView = (View) PluginServices.getMDIManager().getActiveView(); |
|
461 |
theView.getMapControl().getMapContext().invalidate(); |
|
462 |
} |
|
463 |
|
|
464 |
/** |
|
320 | 465 |
* Muestra en consola los puntos de la capa |
321 | 466 |
*/ |
322 | 467 |
public void showPoints(){ |
Also available in: Unified diff