Revision 3064 trunk/extensions/extGeoreferencing/src/com/iver/cit/gvsig/fmap/layers/FLyrPoints.java

View differences:

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