Revision 24265 branches/v2_0_0_prep/extensions/extCAD/src/com/iver/cit/gvsig/gui/cad/tools/ComplexSelectionCADTool.java

View differences:

ComplexSelectionCADTool.java
54 54
import org.gvsig.fmap.data.exceptions.DataException;
55 55
import org.gvsig.fmap.data.exceptions.InitializeException;
56 56
import org.gvsig.fmap.data.exceptions.ReadException;
57
import org.gvsig.fmap.data.feature.EditableFeature;
57 58
import org.gvsig.fmap.data.feature.Feature;
59
import org.gvsig.fmap.data.feature.FeatureSelection;
58 60
import org.gvsig.fmap.data.feature.FeatureStore;
59 61
import org.gvsig.fmap.data.feature.FeatureType;
60
import org.gvsig.fmap.data.feature.exceptions.IsNotFeatureSettingException;
61 62
import org.gvsig.fmap.geom.Geometry;
62
import org.gvsig.fmap.geom.GeometryFactory;
63
import org.gvsig.fmap.geom.GeometryManager;
64 63
import org.gvsig.fmap.geom.handler.Handler;
65 64
import org.gvsig.fmap.geom.operation.Draw;
66 65
import org.gvsig.fmap.geom.operation.DrawOperationContext;
......
87 86
 * @author Vicente Caballero Navarro
88 87
 */
89 88
public class ComplexSelectionCADTool extends SelectionCADTool {
90
	//public final static int tolerance = 4;
91

  
92 89
	private ComplexSelectionCADToolContext _fsm;
93 90
	private List pointsPolygon=new ArrayList();
94 91

  
95
	//private Point2D firstPoint;
96

  
97
	//private Point2D lastPoint;
98

  
99

  
100

  
101
	//private String nextState;
102
// Registros de los que se ha sleccionado alg?n handler.
103
	//private ArrayList rowselectedHandlers=new ArrayList();
104
	//private String type=PluginServices.getText(this,"inside_circle");
105
	//private ArrayList pointsPolygon=new ArrayList();
106 92
	/**
107 93
	 * Crea un nuevo ComplexSelectionCADTool.
108 94
	 */
......
154 140
			// TODO Auto-generated catch block
155 141
			e.printStackTrace();
156 142
		}
157
//		VectorialEditableAdapter vea=vle.getVEA();
158 143
		ArrayList selectedHandler = vle.getSelectedHandler();
159
//		ArrayList selectedRow = vle.getSelectedRow();
160 144
		System.out.println("STATUS ACTUAL = " + _fsm.getTransition());
161 145
		if (status.equals("Selection.FirstPoint")) {
162 146
			firstPoint=new Point2D.Double(x,y);
......
164 148
		} else if (status.equals("Selection.SecondPoint")) {
165 149
		} else if (status.equals("Selection.WithFeatures")) {
166 150
		} else if (status.equals("Selection.WithHandlers")) {
167
			featureStore.getCommandsRecord().startComplex();
151
			String description=PluginServices.getText(this,"move_handlers");
152
			featureStore.beginEditingGroup(description);
168 153
			ArrayList selectedRowsAux=new ArrayList();
169
			Iterator iterator=featureStore.getSelection().iterator();
170
			while (iterator.hasNext()) {
171
				Feature feature = (Feature) iterator.next();
154
			Iterator iterator;
155
			try {
156
				iterator = ((FeatureSelection)featureStore.getSelection()).iterator();
172 157

  
173
//			}
174
//			for (int i = 0; i < selectedRow.size(); i++) {
175
//				IRowEdited row = (IRowEdited) selectedRow.get(i);
176
//				IFeature feat = (IFeature) row.getLinkedRow().cloneRow();
177
				Geometry ig = ((Geometry)feature.getDefaultGeometry()).cloneGeometry();
178
				// Movemos los handlers que hemos seleccionado
179
				// previamente dentro del m?todo select()
180
				Handler[] handlers=ig.getHandlers(Geometry.SELECTHANDLER);
181
				for (int k = 0; k < selectedHandler.size(); k++) {
182
					Handler h = (Handler)selectedHandler.get(k);
183
					for (int j=0;j<handlers.length;j++) {
184
						if (h.getPoint().equals(handlers[j].getPoint()))
185
							handlers[j].set(x,y);
158
				while (iterator.hasNext()) {
159
					Feature feature = (Feature) iterator.next();
160

  
161
//					}
162
					Geometry ig = ((Geometry)feature.getDefaultGeometry()).cloneGeometry();
163
					// Movemos los handlers que hemos seleccionado
164
					// previamente dentro del m?todo select()
165
					Handler[] handlers=ig.getHandlers(Geometry.SELECTHANDLER);
166
					for (int k = 0; k < selectedHandler.size(); k++) {
167
						Handler h = (Handler)selectedHandler.get(k);
168
						for (int j=0;j<handlers.length;j++) {
169
							if (h.getPoint().equals(handlers[j].getPoint()))
170
								handlers[j].set(x,y);
171
						}
186 172
					}
173
					EditableFeature eFeature=feature.getEditable();
174
					eFeature.setGeometry(featureStore.getDefaultFeatureType().getDefaultGeometryAttributeName(), ig);
175
					featureStore.update(eFeature);
176
					selectedRowsAux.add(eFeature);
187 177
				}
188
				try {
189
					feature.editing();
190
					feature.setGeometry(featureStore.getDefaultFeatureType().getDefaultGeometryAttributeName(), ig);
191
					featureStore.update(feature);
192
				} catch (IsNotFeatureSettingException e) {
193
					// TODO Auto-generated catch block
194
					e.printStackTrace();
195
				} catch (DataException e) {
196
					// TODO Auto-generated catch block
197
					e.printStackTrace();
198
				}
199
//				modifyFeature(row.getIndex(), feat);
200
				selectedRowsAux.add(feature);
178
			} catch (DataException e1) {
179
				// TODO Auto-generated catch block
180
				e1.printStackTrace();
201 181
			}
202 182
			firstPoint=new Point2D.Double(x,y);
203 183
//			vle.setSelectionCache(VectorialLayerEdited.SAVEPREVIOUS, selectedRowsAux);
204
				String description=PluginServices.getText(this,"move_handlers");
205
				featureStore.getCommandsRecord().endComplex(description);
184

  
185
				featureStore.endEditingGroup();
206 186
		}else if (status.equals("Selection.NextPointPolygon")) {
207 187
			pointsPolygon.add(new Point2D.Double(x,y));
208 188
		}
......
214 194
	 * @param y
215 195
	 * @return numFeatures selected
216 196
	 */
217
	public int selectWithSecondPointOutRectangle(double x, double y, InputEvent event) {
197
	public long selectWithSecondPointOutRectangle(double x, double y, InputEvent event) {
218 198
		Point2D lastPoint=new Point2D.Double(x,y);
219 199
		GeneralPathX gpx=new GeneralPathX();
220 200
		gpx.moveTo(firstPoint.getX(),firstPoint.getY());
......
231 211
	 * @param y
232 212
	 * @return numFeatures selected
233 213
	 */
234
	public int selectWithCircle(double x, double y, InputEvent event) {
214
	public long selectWithCircle(double x, double y, InputEvent event) {
235 215
		Geometry circle=geomFactory.createCircle(firstPoint,new Point2D.Double(x,y));
236 216
		return selectWithPolygon(circle);
237 217
	}
238
	public int selectWithPolygon(Geometry polygon) {
218
	public long selectWithPolygon(Geometry polygon) {
239 219
		VectorialLayerEdited vle = getVLE();
240 220
		PluginServices.getMDIManager().setWaitCursor();
241 221

  
......
246 226
		} else if (getType().equals(PluginServices.getText(this,"out_circle")) || getType().equals(PluginServices.getText(this,"out_polygon")) || getType().equals(PluginServices.getText(this,"out_rectangle"))) {
247 227
			vle.selectOutPolygon(polygon);
248 228
		}
249
		int countSelection=0;
229
		long countSelection=0;
250 230
		try {
251
			countSelection = vle.getFeatureStore().getSelection().size();
231
			countSelection = ((FeatureSelection)vle.getFeatureStore().getSelection()).getSize();
252 232
		} catch (ReadException e) {
253 233
			// TODO Auto-generated catch block
254 234
			e.printStackTrace();
235
		} catch (DataException e) {
236
			// TODO Auto-generated catch block
237
			e.printStackTrace();
255 238
		}
256
//		ArrayList selectedRow = vle.getSelectedRow();
257 239
		PluginServices.getMDIManager().restoreCursor();
258 240
		if (countSelection>0){
259
//		if (selectedRow.size() > 0) {
260 241
			nextState = "Selection.WithSelectedFeatures";
261 242
			end();
262 243
		} else
......
304 285
			} catch (GeometryOperationException e) {
305 286
				e.printStackTrace();
306 287
			}
307
//			geomFactory.createPolyline2D(elShape).draw((Graphics2D) g,
308
//					vp,
309
//					DefaultCADTool.geometrySelectSymbol);
310 288
			Image img = vle.getSelectionImage();
311 289
	        g.drawImage(img, 0, 0, null);
312 290
	        return;
......
327 305
			} catch (GeometryOperationException e) {
328 306
				e.printStackTrace();
329 307
			}
330
//			circleSel.draw((Graphics2D) g,
331
//					vp,
332
//					DefaultCADTool.geometrySelectSymbol);
333 308
			Image img = vle.getSelectionImage();
334 309
	        g.drawImage(img, 0, 0, null);
335 310
	        return;
......
347 322
			} catch (GeometryOperationException e) {
348 323
				e.printStackTrace();
349 324
			}
350
//			polygon.draw((Graphics2D) g,
351
//					vp,
352
//					DefaultCADTool.geometrySelectSymbol);
353 325
			Image img = vle.getSelectionImage();
354 326
	        g.drawImage(img, 0, 0, null);
355 327
	        return;
......
381 353
				} catch (GeometryOperationException e) {
382 354
					e.printStackTrace();
383 355
				}
384
//				geom.draw((Graphics2D) g, vp, DefaultCADTool.axisReferencesSymbol);
385 356
			}
386 357
			for (int k = 0; k < selectedHandler.size(); k++) {
387 358
				Handler h = (Handler)selectedHandler.get(k);
......
446 417
		}
447 418
		init();
448 419
	}
449
	private int selectAll() {
420
	private long selectAll() {
450 421
		VectorialLayerEdited vle = getVLE();
451 422
		PluginServices.getMDIManager().setWaitCursor();
452 423
		vle.selectAll();
453
		int countSelection=0;
424
		long countSelection=0;
454 425
		try {
455
			countSelection = vle.getFeatureStore().getSelection().size();
426
			countSelection = ((FeatureSelection)vle.getFeatureStore().getSelection()).getSize();
456 427
		} catch (ReadException e) {
457 428
			// TODO Auto-generated catch block
458 429
			e.printStackTrace();
430
		} catch (DataException e) {
431
			// TODO Auto-generated catch block
432
			e.printStackTrace();
459 433
		}
460
//		ArrayList selectedRow = vle.getSelectedRow();
461 434
		PluginServices.getMDIManager().restoreCursor();
462 435
		if (countSelection > 0) {
463 436
			nextState = "Selection.WithSelectedFeatures";
......
520 493
			vle.selectWithPoint(x,y,multipleSelection);
521 494
			PluginServices.getMDIManager().restoreCursor();
522 495
		}
523
		int countSelection=0;
496
		long countSelection=0;
524 497
		try {
525
			countSelection = vle.getFeatureStore().getSelection().size();
498
			countSelection = ((FeatureSelection)vle.getFeatureStore().getSelection()).getSize();
526 499
		} catch (ReadException e) {
527 500
			// TODO Auto-generated catch block
528 501
			e.printStackTrace();
502
		} catch (DataException e) {
503
			// TODO Auto-generated catch block
504
			e.printStackTrace();
529 505
		}
530 506
		if (countSelection > 0) {
531 507
			nextState = "Selection.WithSelectedFeatures";
......
543 519

  
544 520
		VectorialLayerEdited vle = getVLE();
545 521
		ArrayList selectedHandler = vle.getSelectedHandler();
546
//		ArrayList selectedRow = vle.getSelectedRow();
547
//		System.out.println("DENTRO DE selectHandlers. selectedRow.size= "
548
//				+ selectedRow.size());
549 522
		selectedHandler.clear();
550 523

  
551 524
		// Se comprueba si se pincha en una gemometr?a
......
563 536
			// TODO Auto-generated catch block
564 537
			e.printStackTrace();
565 538
		}
566
		Iterator iterator=featureStore.getSelection().iterator();
539
		Iterator iterator=null;
540
		try {
541
			iterator = ((FeatureSelection)featureStore.getSelection()).iterator();
542
		} catch (DataException e1) {
543
			// TODO Auto-generated catch block
544
			e1.printStackTrace();
545
		}
567 546
		while (iterator.hasNext()) {
568 547
			Feature feature = (Feature) iterator.next();
569 548

  
570
//		}
571
//		for (int i = 0; i < selectedRow.size(); i++) {
572
//			IRowEdited rowEd = (IRowEdited) selectedRow.get(i);
573
//
574
//			IFeature fea = (IFeature) rowEd.getLinkedRow();
575 549
			Geometry geom=((Geometry)feature.getDefaultGeometry()).cloneGeometry();
576 550
			handlers = geom.getHandlers(Geometry.SELECTHANDLER);
577 551
			// y miramos los handlers de cada entidad seleccionada
578 552
			double min = tam;
579
			// int hSel = -1;
580 553

  
581 554
			for (int j = 0; j < handlers.length; j++) {
582 555
				Point2D handlerPoint = handlers[j].getPoint();
583 556
				double distance = auxPoint.distance(handlerPoint);
584 557
				if (distance <= min) {
585 558
					min = distance;
586
					// hSel = j;
587 559
					selectedHandler.add(handlers[j]);
588
					Feature f;
560
					EditableFeature eFeature;
589 561
					try {
590
						f = featureStore.createNewFeature(false);
591

  
592
					f.editing();
593
					FeatureType featureType=featureStore.getDefaultFeatureType();
594
					for (int i = 0; i < featureType.size(); i++) {
595
						f.setAttribute(i,feature.get(i));
596
					}
597
					f.setGeometry(featureType.getDefaultGeometryAttributeName(), geom);
562
						eFeature = featureStore.createNewFeature(false);
563
						FeatureType featureType=featureStore.getDefaultFeatureType();
564
						for (int i = 0; i < featureType.size(); i++) {
565
							eFeature.set(i,feature.get(i));
566
						}
567
						eFeature.setGeometry(featureType.getDefaultGeometryAttributeName(), geom);
598 568
					} catch (InitializeException e) {
599 569
						// TODO Auto-generated catch block
600 570
						e.printStackTrace();

Also available in: Unified diff