Revision 4448

View differences:

trunk/extensions/extCAD/src/com/iver/cit/gvsig/gui/cad/tools/smc/SelectionCADToolContext.java
282 282
            {
283 283
                SelectionCADTool ctxt = context.getOwner();
284 284

  
285
                if (ctxt.selectFeatures(pointX,pointY) && ctxt.getNextState().equals("Selection.FirstPoint"))
285
                if (ctxt.selectWithSecondPoint(pointX,pointY) > 0)
286 286
                {
287 287

  
288 288
                    (context.getState()).Exit(context);
289 289
                    context.clearState();
290 290
                    try
291 291
                    {
292
                        ctxt.setQuestion("Precise punto del rect?ngulo de selecci?n");
292
                        ctxt.setQuestion("select_handlers");
293 293
                        ctxt.setDescription(new String[]{"Cancelar"});
294
                        ctxt.addPoint(pointX, pointY, event);
294 295
                    }
295 296
                    finally
296 297
                    {
297
                        context.setState(Selection.FirstPoint);
298
                        context.setState(Selection.WithSelectedFeatures);
298 299
                        (context.getState()).Entry(context);
299 300
                    }
300 301
                }
301
                else if (ctxt.getNextState().equals("Selection.WithSelectedFeatures"))
302
                else
302 303
                {
303 304

  
304 305
                    (context.getState()).Exit(context);
305 306
                    context.clearState();
306 307
                    try
307 308
                    {
308
                        ctxt.setQuestion("select_handlers");
309
                        ctxt.setQuestion("Precise punto del rect?ngulo de selecci?n");
309 310
                        ctxt.setDescription(new String[]{"Cancelar"});
310
                        ctxt.addPoint(pointX, pointY, event);
311 311
                    }
312 312
                    finally
313 313
                    {
314
                        context.setState(Selection.WithSelectedFeatures);
314
                        context.setState(Selection.FirstPoint);
315 315
                        (context.getState()).Entry(context);
316 316
                    }
317
                }                else
318
                {
319
                    super.addPoint(context, pointX, pointY, event);
320 317
                }
321 318

  
322 319
                return;
......
343 340
            {
344 341
                SelectionCADTool ctxt = context.getOwner();
345 342

  
346
                if (ctxt.selectHandlers(pointX,pointY)==0)
343
                if (ctxt.selectHandlers(pointX, pointY)>0)
347 344
                {
348 345

  
349 346
                    (context.getState()).Exit(context);
350 347
                    context.clearState();
351 348
                    try
352 349
                    {
353
                        ctxt.setQuestion("Precise punto del rect?ngulo de selecci?n");
350
                        ctxt.setQuestion("Precise punto destino");
354 351
                        ctxt.setDescription(new String[]{"Cancelar"});
355 352
                        ctxt.addPoint(pointX, pointY, event);
356
                        ctxt.refresh();
357 353
                    }
358 354
                    finally
359 355
                    {
360
                        context.setState(Selection.FirstPoint);
356
                        context.setState(Selection.WithHandlers);
361 357
                        (context.getState()).Entry(context);
362 358
                    }
363 359
                }
364
                else if (ctxt.selectHandlers(pointX, pointY)>0)
360
                else if (ctxt.selectFeatures(pointX,pointY) && ctxt.getNextState().equals("Selection.WithSelectedFeatures"))
365 361
                {
362
                    SelectionCADToolState endState = context.getState();
366 363

  
364
                    context.clearState();
365
                    try
366
                    {
367
                        ctxt.setQuestion("select_handlers");
368
                        ctxt.setDescription(new String[]{"Cancelar"});
369
                        ctxt.addPoint(pointX, pointY, event);
370
                    }
371
                    finally
372
                    {
373
                        context.setState(endState);
374
                    }
375
                }
376
                else
377
                {
378

  
367 379
                    (context.getState()).Exit(context);
368 380
                    context.clearState();
369 381
                    try
370 382
                    {
371
                        ctxt.setQuestion("Precise punto destino");
383
                        ctxt.setQuestion("Precise punto del rect?ngulo de selecci?n");
372 384
                        ctxt.setDescription(new String[]{"Cancelar"});
373 385
                        ctxt.addPoint(pointX, pointY, event);
374
                        ctxt.refresh();
375 386
                    }
376 387
                    finally
377 388
                    {
378
                        context.setState(Selection.WithHandlers);
389
                        context.setState(Selection.FirstPoint);
379 390
                        (context.getState()).Entry(context);
380 391
                    }
381
                }                else
382
                {
383
                    super.addPoint(context, pointX, pointY, event);
384 392
                }
385 393

  
386 394
                return;
trunk/extensions/extCAD/src/com/iver/cit/gvsig/gui/cad/tools/SelectionCADTool.java
72 72

  
73 73
/**
74 74
 * DOCUMENT ME!
75
 *
75
 * 
76 76
 * @author Vicente Caballero Navarro
77 77
 */
78 78
public class SelectionCADTool extends DefaultCADTool {
......
105 105

  
106 106
	/*
107 107
	 * (non-Javadoc)
108
	 *
108
	 * 
109 109
	 * @see com.iver.cit.gvsig.gui.cad.CADTool#transition(com.iver.cit.gvsig.fmap.layers.FBitSet,
110 110
	 *      double, double)
111 111
	 */
112 112
	public void transition(double x, double y, InputEvent event) {
113
		System.out.println("TRANSICION DESDE ESTADO " + _fsm.getState() + " x= " + x
114
				+ " y=" + y);
113
		System.out.println("TRANSICION DESDE ESTADO " + _fsm.getState()
114
				+ " x= " + x + " y=" + y);
115 115
		_fsm.addPoint(x, y, event);
116 116
		System.out.println("ESTADO ACTUAL: " + getStatus());
117
		
117

  
118 118
	}
119 119

  
120 120
	/*
121 121
	 * (non-Javadoc)
122
	 *
122
	 * 
123 123
	 * @see com.iver.cit.gvsig.gui.cad.CADTool#transition(com.iver.cit.gvsig.fmap.layers.FBitSet,
124 124
	 *      double)
125 125
	 */
......
129 129

  
130 130
	/*
131 131
	 * (non-Javadoc)
132
	 *
132
	 * 
133 133
	 * @see com.iver.cit.gvsig.gui.cad.CADTool#transition(com.iver.cit.gvsig.fmap.layers.FBitSet,
134 134
	 *      java.lang.String)
135 135
	 */
......
141 141
		return nextState;
142 142
	}
143 143

  
144

  
145 144
	/**
146 145
	 * Equivale al transition del prototipo pero sin pasarle como par? metro el
147 146
	 * editableFeatureSource que ya estar? creado.
148
	 *
147
	 * 
149 148
	 * @param selection
150 149
	 *            Bitset con las geometr?as que est?n seleccionadas.
151 150
	 * @param x
......
157 156
		SelectionCADToolState actualState = (SelectionCADToolState) _fsm
158 157
				.getPreviousState();
159 158
		String status = actualState.getName();
160
		System.out.println("PREVIOUSSTATE =" + status);
161
		/* FBitSet selection = getCadToolAdapter().getVectorialAdapter()
162
				.getSelection(); */
159
		System.out.println("PREVIOUSSTATE =" + status); // + "ESTADO ACTUAL: " +
160
														// _fsm.getState());
161
		/*
162
		 * FBitSet selection = getCadToolAdapter().getVectorialAdapter()
163
		 * .getSelection();
164
		 */
163 165
		VectorialLayerEdited vle = (VectorialLayerEdited) CADExtension
164 166
				.getEditionManager().getActiveLayerEdited();
165 167
		ArrayList selectedHandler = vle.getSelectedHandler();
166 168
		ArrayList selectedRow = vle.getSelectedRow();
167 169
		// ArrayList selectedRowIndex = vle.getSelectedRowIndex();
168 170

  
169
			if (status.equals("Selection.FirstPoint")) {
170
			} else if (status.equals("Selection.SecondPoint")) {
171
				lastPoint = new Point2D.Double(x, y);
172
				// selection.clear();
173
				selectedRow.clear();
171
		if (status.equals("Selection.FirstPoint")) {
172
		} else if (status.equals("Selection.SecondPoint")) {
173
			// selectByRectangle(x, y, selectedRow);
174 174

  
175
				double x1;
176
				double y1;
177
				double w1;
178
				double h1;
175
		} else if (status.equals("Selection.WithHandlers")) {
176
			for (int i = 0; i < selectedRow.size(); i++) {
177
				IRowEdited row = (IRowEdited) selectedRow.get(i);
178
				// int index = ((Integer) selectedRowIndex.get(i)).intValue();
179 179

  
180
				if (firstPoint.getX() < lastPoint.getX()) {
181
					x1 = firstPoint.getX();
182
					w1 = lastPoint.getX() - firstPoint.getX();
183
				} else {
184
					x1 = lastPoint.getX();
185
					w1 = firstPoint.getX() - lastPoint.getX();
180
				// Movemos los handlers que hemos seleccionado
181
				// previamente dentro del m?todo select()
182
				for (int k = 0; k < selectedHandler.size(); k++) {
183
					Handler h = (Handler) selectedHandler.get(k);
184
					h.set(x, y);
186 185
				}
187 186

  
188
				if (firstPoint.getY() < lastPoint.getY()) {
189
					y1 = firstPoint.getY();
190
					h1 = lastPoint.getY() - firstPoint.getY();
191
				} else {
192
					y1 = lastPoint.getY();
193
					h1 = firstPoint.getY() - lastPoint.getY();
194
				}
187
				modifyFeature(row.getIndex(), (IFeature) row.getLinkedRow());
188
			}
189
		}
190
	}
195 191

  
196
				Rectangle2D rect = new Rectangle2D.Double(x1, y1, w1, h1);
192
	/**
193
	 * Receives second point
194
	 * @param x
195
	 * @param y
196
	 * @return numFeatures selected
197
	 */
198
	public int selectWithSecondPoint(double x, double y) {
199
		VectorialLayerEdited vle = (VectorialLayerEdited) CADExtension
200
			.getEditionManager().getActiveLayerEdited();
201
		ArrayList selectedRow = vle.getSelectedRow();
202
		
203
		lastPoint = new Point2D.Double(x, y);
204
		// selection.clear();
205
		selectedRow.clear();
197 206

  
198
				VectorialEditableAdapter vea = getCadToolAdapter()
199
						.getVectorialAdapter();
200
				String strEPSG = getCadToolAdapter().getMapControl()
201
						.getViewPort().getProjection().getAbrev().substring(5);
202
				IRowEdited[] feats;
203
				try {
204
					feats = vea.getFeatures(rect, strEPSG);
207
		double x1;
208
		double y1;
209
		double w1;
210
		double h1;
205 211

  
206
					for (int i = 0; i < feats.length; i++) {
207
						IGeometry geom = ((IFeature) feats[i].getLinkedRow())
208
								.getGeometry();
209
	
210
						if (firstPoint.getX() < lastPoint.getX()) {
211
							if (rect.contains(geom.getBounds2D())) {
212
								selectedRow.add(feats[i]);
213
							}
214
						} else {
215
							if (geom.intersects(rect)) { // , 0.1)){
216
								selectedRow.add(feats[i]);
217
							}
218
						}
219
					}
220
				} catch (DriverException e) {
221
					// TODO Auto-generated catch block
222
					e.printStackTrace();
223
				}
212
		if (firstPoint.getX() < lastPoint.getX()) {
213
			x1 = firstPoint.getX();
214
			w1 = lastPoint.getX() - firstPoint.getX();
215
		} else {
216
			x1 = lastPoint.getX();
217
			w1 = firstPoint.getX() - lastPoint.getX();
218
		}
224 219

  
225
				PluginServices.getMDIManager().restoreCursor();
226
				if (selectedRow.size() > 0)
227
				{
228
					nextState = "Selection.WithSelectedFeatures";
229
				}
230
				else 
231
					nextState = "Selection.FirstPoint";
220
		if (firstPoint.getY() < lastPoint.getY()) {
221
			y1 = firstPoint.getY();
222
			h1 = lastPoint.getY() - firstPoint.getY();
223
		} else {
224
			y1 = lastPoint.getY();
225
			h1 = firstPoint.getY() - lastPoint.getY();
226
		}
232 227

  
233
			} else if (status.equals("Selection.WithHandlers")) {
234
				for (int i = 0; i < selectedRow.size(); i++) {
235
					IRowEdited row = (IRowEdited) selectedRow.get(i);
236
					// int index = ((Integer) selectedRowIndex.get(i)).intValue();
228
		Rectangle2D rect = new Rectangle2D.Double(x1, y1, w1, h1);
237 229

  
238
					// Movemos los handlers que hemos seleccionado
239
					// previamente dentro del m?todo select()
240
					for (int k = 0; k < selectedHandler.size(); k++) {
241
						Handler h = (Handler) selectedHandler.get(k);
242
						h.set(x, y);
230
		VectorialEditableAdapter vea = getCadToolAdapter()
231
				.getVectorialAdapter();
232
		String strEPSG = getCadToolAdapter().getMapControl().getViewPort()
233
				.getProjection().getAbrev().substring(5);
234
		IRowEdited[] feats;
235
		try {
236
			feats = vea.getFeatures(rect, strEPSG);
237

  
238
			for (int i = 0; i < feats.length; i++) {
239
				IGeometry geom = ((IFeature) feats[i].getLinkedRow())
240
						.getGeometry();
241

  
242
				if (firstPoint.getX() < lastPoint.getX()) {
243
					if (rect.contains(geom.getBounds2D())) {
244
						selectedRow.add(feats[i]);
243 245
					}
244

  
245
					modifyFeature(row.getIndex(), (IFeature) row.getLinkedRow());
246
				} else {
247
					if (geom.intersects(rect)) { // , 0.1)){
248
						selectedRow.add(feats[i]);
249
					}
246 250
				}
247 251
			}
252
		} catch (DriverException e) {
253
			// TODO Auto-generated catch block
254
			e.printStackTrace();
255
		}
256

  
257
		PluginServices.getMDIManager().restoreCursor();
258
		if (selectedRow.size() > 0) {
259
			nextState = "Selection.WithSelectedFeatures";
260
		} else
261
			nextState = "Selection.FirstPoint";
262
		return selectedRow.size();
248 263
	}
249 264

  
250 265
	/**
251 266
	 * M?todo para dibujar la lo necesario para el estado en el que nos
252 267
	 * encontremos.
253
	 *
268
	 * 
254 269
	 * @param g
255 270
	 *            Graphics sobre el que dibujar.
256 271
	 * @param selectedGeometries
......
263 278
	public void drawOperation(Graphics g, double x, double y) {
264 279
		SelectionCADToolState actualState = _fsm.getState();
265 280
		String status = actualState.getName();
266
		/* FBitSet selection = getCadToolAdapter().getVectorialAdapter()
267
				.getSelection(); */
281
		/*
282
		 * FBitSet selection = getCadToolAdapter().getVectorialAdapter()
283
		 * .getSelection();
284
		 */
268 285
		VectorialLayerEdited vle = (VectorialLayerEdited) CADExtension
269 286
				.getEditionManager().getActiveLayerEdited();
270 287
		ArrayList selectedHandler = vle.getSelectedHandler();
271 288
		ArrayList selectedRow = vle.getSelectedRow();
272 289
		// ArrayList selectedRowIndex = vle.getSelectedRowIndex();
273 290

  
274
		/* if (selection.cardinality() == 0) {
275
			selectedRow.clear();
276
			selectedRowIndex.clear();
277
			selectedHandler.clear();
278
		} */
291
		/*
292
		 * if (selection.cardinality() == 0) { selectedRow.clear();
293
		 * selectedRowIndex.clear(); selectedHandler.clear(); }
294
		 */
279 295

  
280 296
		drawHandlers(g, selectedRow, getCadToolAdapter().getMapControl()
281 297
				.getViewPort().getAffineTransform());
......
304 320
			// redibujamos la nueva geometr?a.
305 321
			for (int i = 0; i < selectedRow.size(); i++) {
306 322
				IRowEdited rowEd = (IRowEdited) selectedRow.get(i);
307
				IGeometry geom = ((IFeature) rowEd.getLinkedRow()).getGeometry()
308
						.cloneGeometry();
323
				IGeometry geom = ((IFeature) rowEd.getLinkedRow())
324
						.getGeometry().cloneGeometry();
309 325
				g.setColor(Color.gray);
310 326
				geom.draw((Graphics2D) g, getCadToolAdapter().getMapControl()
311 327
						.getViewPort(), CADTool.modifySymbol);
......
315 331

  
316 332
	/**
317 333
	 * Add a diferent option.
318
	 *
334
	 * 
319 335
	 * @param sel
320 336
	 *            DOCUMENT ME!
321 337
	 * @param s
......
327 343

  
328 344
	/*
329 345
	 * (non-Javadoc)
330
	 *
346
	 * 
331 347
	 * @see com.iver.cit.gvsig.gui.cad.CADTool#addvalue(double)
332 348
	 */
333 349
	public void addValue(double d) {
......
363 379

  
364 380
	public boolean selectFeatures(double x, double y) {
365 381
		SelectionCADToolState actualState = (SelectionCADToolState) _fsm
366
		.getState();
382
				.getState();
367 383

  
368 384
		String status = actualState.getName();
369
		if (!status.equals("Selection.FirstPoint")) return true;
370
		
371
		firstPoint = new Point2D.Double(x, y);
372

  
373
//		FBitSet selection = getCadToolAdapter().getVectorialAdapter()
374
//				.getSelection();
375 385
		VectorialLayerEdited vle = (VectorialLayerEdited) CADExtension
376 386
				.getEditionManager().getActiveLayerEdited();
377 387
		ArrayList selectedRow = vle.getSelectedRow();
378
		ArrayList selectedHandler = vle.getSelectedHandler();
379
		selectedRow.clear();
380
		selectedHandler.clear();
381
		
382
		// ArrayList selectedRowIndex = vle.getSelectedRowIndex();
383 388

  
384
		// Se comprueba si se pincha en una gemometr?a
385
		PluginServices.getMDIManager().setWaitCursor();
389
		if ((status.equals("Selection.FirstPoint"))
390
				|| (status.equals("Selection.WithSelectedFeatures"))) {
391
			firstPoint = new Point2D.Double(x, y);
386 392

  
387
		double tam = getCadToolAdapter().getMapControl().getViewPort()
388
				.toMapDistance(tolerance);
389
		Rectangle2D rect = new Rectangle2D.Double(firstPoint.getX() - tam,
390
				firstPoint.getY() - tam, tam * 2, tam * 2);
391
		VectorialEditableAdapter vea = getCadToolAdapter()
392
				.getVectorialAdapter();
393
		String strEPSG = getCadToolAdapter().getMapControl().getViewPort()
394
				.getProjection().getAbrev().substring(5);
395
		IRowEdited[] feats;
396
		 
397
		try {
398
			feats = vea.getFeatures(rect, strEPSG);
399
//			selection.clear();
393
			// FBitSet selection = getCadToolAdapter().getVectorialAdapter()
394
			// .getSelection();
395
			ArrayList selectedHandler = vle.getSelectedHandler();
396
			selectedRow.clear();
397
			selectedHandler.clear();
400 398

  
401
			for (int i = 0; i < feats.length; i++) {
402
				IFeature feat = (IFeature) feats[i].getLinkedRow();
403
				IGeometry geom = feat.getGeometry();
399
			// ArrayList selectedRowIndex = vle.getSelectedRowIndex();
404 400

  
405
				if (geom.intersects(rect)) { // , 0.1)){
406
//					selection.set(feats[i].getIndex(), true);
407
					selectedRow.add(feats[i]);
401
			// Se comprueba si se pincha en una gemometr?a
402
			PluginServices.getMDIManager().setWaitCursor();
403

  
404
			double tam = getCadToolAdapter().getMapControl().getViewPort()
405
					.toMapDistance(tolerance);
406
			Rectangle2D rect = new Rectangle2D.Double(firstPoint.getX() - tam,
407
					firstPoint.getY() - tam, tam * 2, tam * 2);
408
			VectorialEditableAdapter vea = getCadToolAdapter()
409
					.getVectorialAdapter();
410
			String strEPSG = getCadToolAdapter().getMapControl().getViewPort()
411
					.getProjection().getAbrev().substring(5);
412
			IRowEdited[] feats;
413

  
414
			try {
415
				feats = vea.getFeatures(rect, strEPSG);
416
				// selection.clear();
417

  
418
				for (int i = 0; i < feats.length; i++) {
419
					IFeature feat = (IFeature) feats[i].getLinkedRow();
420
					IGeometry geom = feat.getGeometry();
421

  
422
					if (geom.intersects(rect)) { // , 0.1)){
423
						// selection.set(feats[i].getIndex(), true);
424
						selectedRow.add(feats[i]);
425
					}
408 426
				}
427
			} catch (DriverException e1) {
428
				e1.printStackTrace();
409 429
			}
410
		} catch (DriverException e1) {
411
			e1.printStackTrace();
412
		}		
413
		PluginServices.getMDIManager().restoreCursor();
414
		if (selectedRow.size() > 0)
415
		{
430
			PluginServices.getMDIManager().restoreCursor();
431
		}
432
		if (selectedRow.size() > 0) {
416 433
			nextState = "Selection.WithSelectedFeatures";
417 434
			return true;
435
		} else {
436
			// if (nextState == null)
437
			{
438
				nextState = "Selection.SecondPoint";
439
				return true;
440
			}
418 441
		}
419
		if (nextState.equals("Selection.SecondPoint"))
442
		/* if (nextState.equals("Selection.SecondPoint"))
420 443
			nextState = "Selection.FirstPoint";
421 444
		else
422 445
			nextState = "Selection.SecondPoint";
423
		return true; // Truco de Vicente
446

  
447
		return true; // Truco de Vicente */
424 448
	}
425 449

  
426 450
	public int selectHandlers(double x, double y) {
427 451
		// firstPoint = new Point2D.Double(x, y);
428
		
452

  
429 453
		Point2D auxPoint = new Point2D.Double(x, y);
430 454

  
431 455
		VectorialLayerEdited vle = (VectorialLayerEdited) CADExtension
432 456
				.getEditionManager().getActiveLayerEdited();
433 457
		ArrayList selectedHandler = vle.getSelectedHandler();
434 458
		ArrayList selectedRow = vle.getSelectedRow();
435
		System.out.println("DENTRO DE selectHandlers. selectedRow.size= " + selectedRow.size());
459
		System.out.println("DENTRO DE selectHandlers. selectedRow.size= "
460
				+ selectedRow.size());
436 461
		selectedHandler.clear();
437
		
462

  
438 463
		// Se comprueba si se pincha en una gemometr?a
439 464
		PluginServices.getMDIManager().setWaitCursor();
440 465

  
441 466
		double tam = getCadToolAdapter().getMapControl().getViewPort()
442 467
				.toMapDistance(tolerance);
443
		
468

  
444 469
		Handler[] handlers = null;
445
		for (int i=0; i < selectedRow.size(); i++)
446
		{
470
		for (int i = 0; i < selectedRow.size(); i++) {
447 471
			IRowEdited rowEd = (IRowEdited) selectedRow.get(i);
448
			
472

  
449 473
			IFeature fea = (IFeature) rowEd.getLinkedRow();
450 474
			handlers = fea.getGeometry().getHandlers(IGeometry.SELECTHANDLER);
451 475
			// y miramos los handlers de cada entidad seleccionada
......
456 480
				double distance = auxPoint.distance(handlerPoint);
457 481
				if (distance <= min) {
458 482
					min = distance;
459
					//hSel = j;
483
					// hSel = j;
460 484
					selectedHandler.add(handlers[j]);
461 485
				}
462 486
			}
463 487
		}
464 488
		PluginServices.getMDIManager().restoreCursor();
465
		
489

  
466 490
		int numHandlesSelected = selectedHandler.size();
467
		
468
		/* if (numHandlesSelected == 0)
469
			selectFeatures(x,y); */
470 491

  
492
		/*
493
		 * if (numHandlesSelected == 0) selectFeatures(x,y);
494
		 */
495

  
471 496
		return numHandlesSelected;
472 497
	}
473 498
}
trunk/extensions/extCAD/sm/SelectionCADTool.sm
45 45
}
46 46

  
47 47
SecondPoint{
48
	// Si hemos conseguido seleccionar algo
48 49
	addPoint( pointX:double,pointY:double,event:InputEvent)
49
		[ctxt.selectFeatures(pointX,pointY) && ctxt.getNextState().equals("Selection.FirstPoint")]
50
			[ctxt.selectWithSecondPoint(pointX,pointY) > 0]
51
			WithSelectedFeatures {
52
				setQuestion("select_handlers");
53
				setDescription(new String[]{"Cancelar"});
54
				addPoint( pointX,pointY,event);
55
				}
56
	// Si no lo hemos conseguido
57
	addPoint( pointX:double,pointY:double,event:InputEvent)
50 58
			FirstPoint {
51 59
				setQuestion("Precise punto del rect?ngulo de selecci?n");
52 60
				setDescription(new String[]{"Cancelar"});
53 61

  
54 62
				}
63

  
64

  
65
}
66
WithSelectedFeatures{
67

  
68
	// Si hemos pinchado encima de un handler
55 69
	addPoint( pointX:double,pointY:double,event:InputEvent)
56
			[ctxt.getNextState().equals("Selection.WithSelectedFeatures")]
70
	[ctxt.selectHandlers(pointX, pointY)>0]
71
			WithHandlers {
72
				setQuestion("Precise punto destino");
73
				setDescription(new String[]{"Cancelar"});
74
				addPoint( pointX,pointY,event);
75
				// refresh();
76
				}
77

  
78
	// Si no hemos cogido un handler, probamos a seleccionar
79
	// otra entidad
80
	addPoint( pointX:double,pointY:double,event:InputEvent)
81
		[ctxt.selectFeatures(pointX,pointY) && ctxt.getNextState().equals("Selection.WithSelectedFeatures")]
57 82
			WithSelectedFeatures {
58 83
				setQuestion("select_handlers");
59 84
				setDescription(new String[]{"Cancelar"});
......
61 86
				}
62 87

  
63 88

  
64
}
65
WithSelectedFeatures{
89
	// Cualquier otro caso (hemos pinchado en algo vacio), volvemos al estado inicial
66 90
	addPoint( pointX:double,pointY:double,event:InputEvent)
67
	[ctxt.selectHandlers(pointX,pointY)==0]
68 91
			FirstPoint {
69 92
				setQuestion("Precise punto del rect?ngulo de selecci?n");
70 93
				setDescription(new String[]{"Cancelar"});
71 94
				addPoint( pointX,pointY,event);
72
				refresh();
95
				// refresh();
73 96
				}
74
				addPoint( pointX:double,pointY:double,event:InputEvent)
75
	[ctxt.selectHandlers(pointX, pointY)>0]
76
			WithHandlers {
77
				setQuestion("Precise punto destino");
78
				setDescription(new String[]{"Cancelar"});
79
				addPoint( pointX,pointY,event);
80
				refresh();
81
				}
97
				
82 98
}
83 99

  
84 100
WithHandlers{

Also available in: Unified diff