Revision 10626 trunk/extensions/extCAD/src/com/iver/cit/gvsig/layers/VectorialLayerEdited.java

View differences:

VectorialLayerEdited.java
5 5
import java.awt.geom.Point2D;
6 6
import java.awt.geom.Rectangle2D;
7 7
import java.awt.image.BufferedImage;
8
import java.io.IOException;
9 8
import java.util.ArrayList;
10 9
import java.util.EmptyStackException;
11 10

  
11
import com.hardcode.gdbms.driver.exceptions.ReadDriverException;
12 12
import com.iver.andami.PluginServices;
13 13
import com.iver.cit.gvsig.CADExtension;
14 14
import com.iver.cit.gvsig.StartEditing;
15 15
import com.iver.cit.gvsig.ViewCommandStackExtension;
16
import com.iver.cit.gvsig.fmap.DriverException;
16
import com.iver.cit.gvsig.exceptions.expansionfile.ExpansionFileReadException;
17 17
import com.iver.cit.gvsig.fmap.ViewPort;
18 18
import com.iver.cit.gvsig.fmap.core.DefaultFeature;
19 19
import com.iver.cit.gvsig.fmap.core.Handler;
20 20
import com.iver.cit.gvsig.fmap.core.IFeature;
21 21
import com.iver.cit.gvsig.fmap.core.IGeometry;
22 22
import com.iver.cit.gvsig.fmap.core.v02.FGraphicUtilities;
23
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
24 23
import com.iver.cit.gvsig.fmap.edition.DefaultRowEdited;
25 24
import com.iver.cit.gvsig.fmap.edition.IEditableSource;
26 25
import com.iver.cit.gvsig.fmap.edition.IRowEdited;
......
66 65
		layersToSnap.add(lyr);
67 66
		try {
68 67
			((FLyrVect)lyr).getRecordset().addSelectionListener(this);
69
		} catch (DriverException e) {
68
		} catch (ReadDriverException e) {
70 69
			e.printStackTrace();
71 70
		}
72 71
	}
......
79 78
		return selectedRow;
80 79
	}
81 80

  
82
	public void clearSelection(boolean savePrevious) {
81
	public void clearSelection(boolean savePrevious) throws ReadDriverException {
83 82
		if (!selectedRow.isEmpty() && savePrevious) {
84 83
			previousRowSelection.clear();
85 84
			previousHandlerSelection.clear();
......
96 95
			selection.clear();
97 96
		}
98 97
	}
99
	public void restorePreviousSelection() {
98
	public void restorePreviousSelection() throws ReadDriverException {
100 99
		VectorialEditableAdapter vea=getVEA();
101 100
		FBitSet selection=vea.getSelection();
102 101

  
......
123 122
	public void selectWithPoint(double x, double y,boolean multipleSelection){
124 123
		firstPoint = new Point2D.Double(x, y);
125 124
		VectorialEditableAdapter vea = getVEA();
126
		FBitSet selection = vea.getSelection();
125
		FBitSet selection=null;
126
		try {
127
			selection = vea.getSelection();
128

  
127 129
		if (!multipleSelection) {
128 130
			clearSelection(SAVEPREVIOUS);
129 131
		}
132
		} catch (ReadDriverException e) {
133
			// TODO Auto-generated catch block
134
			e.printStackTrace();
135
		}
130 136
		// Se comprueba si se pincha en una gemometr?a
131 137
		ViewPort vp=getLayer().getMapContext().getViewPort();
132 138
		double tam =vp.toMapDistance(SelectionCADTool.tolerance);
......
156 162
			}
157 163
			vea.setSelectionImage(selectionImage);
158 164
			vea.setHandlersImage(handlersImage);
159
		} catch (DriverException e1) {
160
			e1.printStackTrace();
165
		} catch (ReadDriverException e) {
166
			// TODO Auto-generated catch block
167
			e.printStackTrace();
168
		} catch (ExpansionFileReadException e) {
169
			// TODO Auto-generated catch block
170
			e.printStackTrace();
161 171
		}
162 172

  
163 173
	}
164 174
	public void selectWithSecondPoint(double x, double y) {
165 175
		VectorialEditableAdapter vea = getVEA();
166
		FBitSet selection = vea.getSelection();
176
		FBitSet selection=null;
177
		try {
178
			selection = vea.getSelection();
179

  
167 180
		lastPoint = new Point2D.Double(x, y);
168
		ViewPort vp=getLayer().getMapContext().getViewPort();
169 181
		selection.clear();
170 182
		clearSelection(SAVEPREVIOUS);
171

  
183
		} catch (ReadDriverException e1) {
184
			// TODO Auto-generated catch block
185
			e1.printStackTrace();
186
		}
187
		ViewPort vp=getLayer().getMapContext().getViewPort();
172 188
		double x1;
173 189
		double y1;
174 190
		double w1;
......
222 238
			}
223 239
			vea.setSelectionImage(selectionImage);
224 240
			vea.setHandlersImage(handlersImage);
225
		} catch (DriverException e) {
241
		} catch (ReadDriverException e) {
242
			// TODO Auto-generated catch block
226 243
			e.printStackTrace();
244
		} catch (ExpansionFileReadException e) {
245
			// TODO Auto-generated catch block
246
			e.printStackTrace();
227 247
		}
228 248

  
229 249
	}
230 250
	public void selectInsidePolygon(IGeometry polygon) {
231 251
		VectorialEditableAdapter vea = getVEA();
232
		FBitSet selection = vea.getSelection();
233
		ViewPort vp=getLayer().getMapContext().getViewPort();
252
		FBitSet selection=null;
253
		try {
254
			selection = vea.getSelection();
255

  
234 256
		selection.clear();
235 257
		clearSelection(SAVEPREVIOUS);
258
		} catch (ReadDriverException e1) {
259
			// TODO Auto-generated catch block
260
			e1.printStackTrace();
261
		}
262
		ViewPort vp=getLayer().getMapContext().getViewPort();
263

  
236 264
		Rectangle2D rect = polygon.getBounds2D();
237 265

  
238 266
		String strEPSG = vp.getProjection().getAbrev().substring(5);
......
255 283
			}
256 284
			vea.setSelectionImage(selectionImage);
257 285
			vea.setHandlersImage(handlersImage);
258
		} catch (DriverException e) {
286
		} catch (ReadDriverException e) {
287
			// TODO Auto-generated catch block
259 288
			e.printStackTrace();
289
		} catch (ExpansionFileReadException e) {
290
			// TODO Auto-generated catch block
291
			e.printStackTrace();
260 292
		}
261 293
	}
262 294

  
263 295
	public void selectCrossPolygon(IGeometry polygon) {
264 296
		VectorialEditableAdapter vea = getVEA();
265
		FBitSet selection = vea.getSelection();
297
		FBitSet selection=null;
298
		try {
299
			selection = vea.getSelection();
300
			selection.clear();
301
		clearSelection(SAVEPREVIOUS);
302
		} catch (ReadDriverException e1) {
303
			// TODO Auto-generated catch block
304
			e1.printStackTrace();
305
		}
266 306
		ViewPort vp=getLayer().getMapContext().getViewPort();
267
		selection.clear();
268
		clearSelection(SAVEPREVIOUS);
307

  
269 308
		Rectangle2D rect = polygon.getBounds2D();
270 309

  
271 310
		String strEPSG = vp.getProjection().getAbrev().substring(5);
......
288 327
			}
289 328
			vea.setSelectionImage(selectionImage);
290 329
			vea.setHandlersImage(handlersImage);
291
		} catch (DriverException e) {
330
		} catch (ReadDriverException e) {
331
			// TODO Auto-generated catch block
292 332
			e.printStackTrace();
333
		} catch (ExpansionFileReadException e) {
334
			// TODO Auto-generated catch block
335
			e.printStackTrace();
293 336
		}
294 337
	}
295 338

  
296 339
	public void selectOutPolygon(IGeometry polygon) {
297 340
		VectorialEditableAdapter vea = getVEA();
298
		FBitSet selection = vea.getSelection();
341
		FBitSet selection=null;
342
		try {
343
			selection = vea.getSelection();
344
			selection.clear();
345
			clearSelection(SAVEPREVIOUS);
346
		} catch (ReadDriverException e1) {
347
			// TODO Auto-generated catch block
348
			e1.printStackTrace();
349
		}
299 350
		ViewPort vp=getLayer().getMapContext().getViewPort();
300
		selection.clear();
301
		clearSelection(SAVEPREVIOUS);
302 351

  
303 352
		try {
304 353
			BufferedImage selectionImage = new BufferedImage(vp.getImageWidth(), vp.getImageHeight(), BufferedImage.TYPE_INT_ARGB);
......
318 367
			}
319 368
			vea.setSelectionImage(selectionImage);
320 369
			vea.setHandlersImage(handlersImage);
321
		} catch (DriverIOException e) {
370
		} catch (ReadDriverException e) {
371
			// TODO Auto-generated catch block
322 372
			e.printStackTrace();
323
		} catch (IOException e) {
373
		} catch (ExpansionFileReadException e) {
374
			// TODO Auto-generated catch block
324 375
			e.printStackTrace();
325 376
		}
326 377
	}
327 378
	public void selectAll() {
328 379
		VectorialEditableAdapter vea = getVEA();
329
		FBitSet selection = vea.getSelection();
380
		FBitSet selection=null;
381
		try {
382
			selection = vea.getSelection();
383
			selection.clear();
384
			clearSelection(SAVEPREVIOUS);
385
		} catch (ReadDriverException e1) {
386
			// TODO Auto-generated catch block
387
			e1.printStackTrace();
388
		}
330 389
		ViewPort vp=getLayer().getMapContext().getViewPort();
331
		selection.clear();
332
		clearSelection(SAVEPREVIOUS);
390

  
333 391
		try {
334 392
			BufferedImage selectionImage = new BufferedImage(vp.getImageWidth(), vp.getImageHeight(), BufferedImage.TYPE_INT_ARGB);
335 393
			Graphics2D gs = selectionImage.createGraphics();
......
346 404
			}
347 405
			vea.setSelectionImage(selectionImage);
348 406
			vea.setHandlersImage(handlersImage);
349
		} catch (DriverIOException e) {
407
		} catch (ReadDriverException e) {
408
			// TODO Auto-generated catch block
350 409
			e.printStackTrace();
351
		} catch (IOException e) {
410
		} catch (ExpansionFileReadException e) {
411
			// TODO Auto-generated catch block
352 412
			e.printStackTrace();
353 413
		}
354 414
	}
355 415

  
356 416
	public void refreshSelectionCache(Point2D firstPoint,CADToolAdapter cta){
357 417
		VectorialEditableAdapter vea = getVEA();
358
		FBitSet selection = vea.getSelection();
418
		FBitSet selection=null;
419
		try {
420
			selection = vea.getSelection();
421
			//		 Cogemos las entidades seleccionadas
422
			clearSelection(SAVEPREVIOUS);
423
		} catch (ReadDriverException e1) {
424
			// TODO Auto-generated catch block
425
			e1.printStackTrace();
426
		}
359 427
		double min = java.lang.Double.MAX_VALUE;
360
//		 Cogemos las entidades seleccionadas
361
		clearSelection(SAVEPREVIOUS);
362 428
		ViewPort vp=getLayer().getMapContext().getViewPort();
363 429
		BufferedImage selectionImage = new BufferedImage(vp.getImageWidth(), vp.getImageHeight(), BufferedImage.TYPE_INT_ARGB);
364 430
		Graphics2D gs = selectionImage.createGraphics();
......
388 454
						selectedHandler.add(handlers[j]);
389 455
					}
390 456
				}
391
			} catch (DriverIOException e) {
457
			} catch (ReadDriverException e) {
458
				// TODO Auto-generated catch block
392 459
				e.printStackTrace();
393
			} catch (IOException e) {
460
			} catch (ExpansionFileReadException e) {
461
				// TODO Auto-generated catch block
394 462
				e.printStackTrace();
395 463
			}
396 464
		}
......
500 568
	}
501 569

  
502 570
	public void setSelectionCache(boolean savePrevious,ArrayList selectedRowAux) {
503
		clearSelection(savePrevious);
504
		VectorialEditableAdapter vea=getVEA();
505
		FBitSet selection=vea.getSelection();
506
		selectedRow.addAll(selectedRowAux);
507
		for (int i = 0;i < selectedRow.size(); i++) {
508
			IRowEdited edRow = (IRowEdited) selectedRow.get(i);
509
			selection.set(edRow.getIndex());
510
		}
511

  
512 571
		try {
572
			clearSelection(savePrevious);
573
			VectorialEditableAdapter vea=getVEA();
574
			FBitSet selection=vea.getSelection();
575
			selectedRow.addAll(selectedRowAux);
576
			for (int i = 0;i < selectedRow.size(); i++) {
577
				IRowEdited edRow = (IRowEdited) selectedRow.get(i);
578
				selection.set(edRow.getIndex());
579
			}
513 580
			FLyrVect active = (FLyrVect)getLayer();
514 581
			active.getRecordset().getSelectionSupport().fireSelectionEvents();
515
		} catch (DriverException e) {
582
		} catch (ReadDriverException e) {
583
			// TODO Auto-generated catch block
516 584
			e.printStackTrace();
517 585
		}
518 586
    }
......
533 601
	}
534 602

  
535 603
	public void selectionChanged(SelectionEvent e) {
536
		if (getVEA().getSelection().isEmpty())
537
			clearSelection(NOTSAVEPREVIOUS);
604
		try {
605
			if (getVEA().getSelection().isEmpty())
606
				clearSelection(NOTSAVEPREVIOUS);
607
		} catch (ReadDriverException e1) {
608
			// TODO Auto-generated catch block
609
			e1.printStackTrace();
610
		}
538 611
	}
539 612
}

Also available in: Unified diff