Revision 5985

View differences:

trunk/extensions/extCAD/src/com/iver/cit/gvsig/gui/cad/DefaultCADTool.java
85 85

  
86 86
/**
87 87
 * DOCUMENT ME!
88
 * 
88
 *
89 89
 * @author Vicente Caballero Navarro
90 90
 */
91 91
public abstract class DefaultCADTool implements CADTool {
......
114 114

  
115 115
	/**
116 116
	 * DOCUMENT ME!
117
	 * 
117
	 *
118 118
	 * @param cta
119 119
	 *            DOCUMENT ME!
120 120
	 */
......
124 124

  
125 125
	/**
126 126
	 * DOCUMENT ME!
127
	 * 
127
	 *
128 128
	 * @return DOCUMENT ME!
129 129
	 */
130 130
	public CADToolAdapter getCadToolAdapter() {
......
138 138

  
139 139
	/**
140 140
	 * DOCUMENT ME!
141
	 * 
141
	 *
142 142
	 * @param g
143 143
	 *            DOCUMENT ME!
144 144
	 * @param firstPoint
......
157 157

  
158 158
	/**
159 159
	 * DOCUMENT ME!
160
	 * 
160
	 *
161 161
	 * @param geometry
162 162
	 *            DOCUMENT ME!
163 163
	 */
......
180 180
						.valueOf(num));
181 181
				int index = vea.addRow(df, getName(), EditionEvent.GRAPHIC);
182 182
				VectorialLayerEdited vle = getVLE();
183
				ArrayList selectedHandler = vle.getSelectedHandler();
183
				clearSelection();
184 184
				ArrayList selectedRow = vle.getSelectedRow();
185
				selectedHandler.clear();
186
				selectedRow.clear();
187 185

  
186

  
188 187
				ViewPort vp = vle.getLayer().getFMap().getViewPort();
189 188
				BufferedImage selectionImage = new BufferedImage(vp
190 189
						.getImageWidth(), vp.getImageHeight(),
191 190
						BufferedImage.TYPE_INT_ARGB);
192 191
				Graphics2D gs = selectionImage.createGraphics();
192
				int inversedIndex=vea.getInversedIndex(index);
193 193
				selectedRow.add(new DefaultRowEdited(df,
194
						IRowEdited.STATUS_ADDED, index));
194
						IRowEdited.STATUS_ADDED, inversedIndex ));
195
				vea.getSelection().set(inversedIndex);
195 196
				IGeometry geom = df.getGeometry();
196 197
				geom.cloneGeometry().draw(gs, vp, CADTool.drawingSymbol);
197 198
				vle.drawHandlers(geom.cloneGeometry(), gs, vp);
......
215 216

  
216 217
	/**
217 218
	 * DOCUMENT ME!
218
	 * 
219
	 *
219 220
	 * @param geometry
220 221
	 *            DOCUMENT ME!
221 222
	 */
......
233 234

  
234 235
	/**
235 236
	 * DOCUMENT ME!
236
	 * 
237
	 *
237 238
	 * @param geometry
238 239
	 *            DOCUMENT ME!
239 240
	 * @param values
......
254 255
		} catch (DriverLoadException e) {
255 256
			e.printStackTrace();
256 257
		}
257
		return index;
258
		return vea.getInversedIndex(index);
258 259
	}
259 260

  
260 261
	/**
261 262
	 * Devuelve la cadena que corresponde al estado en el que nos encontramos.
262
	 * 
263
	 *
263 264
	 * @return Cadena para mostrar por consola.
264 265
	 */
265 266
	public String getQuestion() {
......
268 269

  
269 270
	/**
270 271
	 * Actualiza la cadena que corresponde al estado actual.
271
	 * 
272
	 *
272 273
	 * @param s
273 274
	 *            Cadena que aparecer? en consola.
274 275
	 */
......
322 323

  
323 324
	/*
324 325
	 * (non-Javadoc)
325
	 * 
326
	 *
326 327
	 * @see com.iver.cit.gvsig.gui.cad.CADTool#end()
327 328
	 */
328 329
	public void end() {
trunk/extensions/extCAD/src/com/iver/cit/gvsig/gui/cad/tools/EditVertexCADTool.java
631 631
	private void selectHandler(double x, double y) {
632 632
		Point2D firstPoint = new Point2D.Double(x, y);
633 633
		VectorialLayerEdited vle = getVLE();
634
		VectorialEditableAdapter vea=vle.getVEA();
634 635
		ArrayList selectedRows = vle.getSelectedRow();
635 636
		double tam = getCadToolAdapter().getMapControl().getViewPort()
636 637
				.toMapDistance(SelectionCADTool.tolerance);
......
682 683
							if (geom!=null) {
683 684
							DefaultFeature df = new DefaultFeature(geom, fea
684 685
									.getAttributes(),row.getID());
685
							int index=vle.getVEA().modifyRow(row.getIndex(), df,
686
							vea.modifyRow(row.getIndex(), df,
686 687
									PluginServices.getText(this,"add_vertex"),EditionEvent.GRAPHIC);
687 688

  
688 689
							Handler[] newHandlers = geom
......
697 698

  
698 699
							clearSelection();
699 700
							selectedRows.add(new DefaultRowEdited(df,
700
									IRowEdited.STATUS_MODIFIED, index));
701
									IRowEdited.STATUS_MODIFIED, row.getIndex()));
701 702
							}
702 703
						}
703 704
					} catch (IOException e) {
trunk/extensions/extCAD/src/com/iver/cit/gvsig/gui/cad/tools/ExploitCADTool.java
169 169
				vea.removeRow(dre.getIndex(), getName(), EditionEvent.GRAPHIC);
170 170
			}
171 171
			vea.endComplexRow();
172
			clearSelection();
173
			selectedRow.addAll(selectedRowAux);
172
			vle.setSelectionCache(selectedRowAux);
173
			//clearSelection();
174
			//selectedRow.addAll(selectedRowAux);
174 175
		} catch (IOException e) {
175 176
			e.printStackTrace();
176 177
		} catch (DriverIOException e) {
trunk/extensions/extCAD/src/com/iver/cit/gvsig/gui/cad/tools/BreakCADTool.java
468 468
				Graphics2D gs = selectionImage.createGraphics();
469 469
				clearSelection();
470 470
				ArrayList selectedRow = vle.getSelectedRow();
471
				selectedRow.add(new DefaultRowEdited(df1, IRowEdited.STATUS_ADDED, index1));
471
				selectedRow.add(new DefaultRowEdited(df1, IRowEdited.STATUS_ADDED, vea.getInversedIndex(index1)));
472 472
				geom1.cloneGeometry().draw(gs, vp, CADTool.drawingSymbol);
473 473
				vle.drawHandlers(geom1.cloneGeometry(),gs,vp);
474 474
				vea.setSelectionImage(selectionImage);
......
492 492
			Graphics2D gs = selectionImage.createGraphics();
493 493
			clearSelection();
494 494
			ArrayList selectedRow = vle.getSelectedRow();
495
			selectedRow.add(new DefaultRowEdited(df1, IRowEdited.STATUS_ADDED, index1));
496
			selectedRow.add(new DefaultRowEdited(df2, IRowEdited.STATUS_ADDED, index2));
495
			selectedRow.add(new DefaultRowEdited(df1, IRowEdited.STATUS_ADDED, vea.getInversedIndex(index1)));
496
			selectedRow.add(new DefaultRowEdited(df2, IRowEdited.STATUS_ADDED, vea.getInversedIndex(index2)));
497 497
			geom1.cloneGeometry().draw(gs, vp, CADTool.drawingSymbol);
498 498
			vle.drawHandlers(geom1.cloneGeometry(),gs,vp);
499 499
			geom2.cloneGeometry().draw(gs, vp, CADTool.drawingSymbol);
trunk/extensions/extCAD/src/com/iver/cit/gvsig/gui/cad/tools/SelectionCADTool.java
259 259
				selectedRowsAux.add(new DefaultRowEdited(feat,IRowEdited.STATUS_MODIFIED,row.getIndex()));
260 260
			}
261 261
			firstPoint=new Point2D.Double(x,y);
262
			clearSelection();
263
			selectedRow.addAll(selectedRowsAux);
262
			vle.setSelectionCache(selectedRowsAux);
263
			//clearSelection();
264
			//selectedRow.addAll(selectedRowsAux);
264 265
			try {
265 266
				vea.endComplexRow();
266 267
			} catch (IOException e) {
trunk/extensions/extCAD/src/com/iver/cit/gvsig/gui/cad/tools/ScaleCADTool.java
319 319
    	}
320 320
    }
321 321
    private void scale(double scaleFactor) throws DriverIOException, IOException {
322
    		VectorialEditableAdapter vea=getVLE().getVEA();
323
    		vea.startComplexRow();
324
    		ArrayList selectedRow=getSelectedRows();
325
    		ArrayList selectedRowAux=new ArrayList();
326
    		for (int i = 0; i < selectedRow.size(); i++) {
327
    			IRowEdited edRow = (IRowEdited) selectedRow.get(i);
328
    			DefaultFeature fea = (DefaultFeature) edRow.getLinkedRow().cloneRow();
329
				UtilFunctions.scaleGeom(fea.getGeometry(), scalePoint, scaleFactor, scaleFactor);
330
    			vea.modifyRow(edRow.getIndex(), fea,getName(),EditionEvent.GRAPHIC);
331
    			selectedRowAux.add(new DefaultRowEdited(fea,IRowEdited.STATUS_MODIFIED,edRow.getIndex()));
332
    		}
333
    		vea.endComplexRow();
334
    		clearSelection();
335
    		selectedRow.addAll(selectedRowAux);
322
    	VectorialLayerEdited vle=getVLE();
323
    	VectorialEditableAdapter vea=vle.getVEA();
324
    	vea.startComplexRow();
325
    	ArrayList selectedRow=getSelectedRows();
326
    	ArrayList selectedRowAux=new ArrayList();
327
    	for (int i = 0; i < selectedRow.size(); i++) {
328
    		IRowEdited edRow = (IRowEdited) selectedRow.get(i);
329
    		DefaultFeature fea = (DefaultFeature) edRow.getLinkedRow().cloneRow();
330
			UtilFunctions.scaleGeom(fea.getGeometry(), scalePoint, scaleFactor, scaleFactor);
331
    		vea.modifyRow(edRow.getIndex(), fea,getName(),EditionEvent.GRAPHIC);
332
    		selectedRowAux.add(new DefaultRowEdited(fea,IRowEdited.STATUS_MODIFIED,edRow.getIndex()));
336 333
    	}
334
    	vea.endComplexRow();
335
    	vle.setSelectionCache(selectedRowAux);
336
    	//clearSelection();
337
    	//selectedRow.addAll(selectedRowAux);
338
    }
337 339

  
338 340
	public String getName() {
339 341
		return PluginServices.getText(this,"scale_");
trunk/extensions/extCAD/src/com/iver/cit/gvsig/gui/cad/tools/SymmetryCADTool.java
256 256
				}
257 257

  
258 258
				vea.endComplexRow();
259
				clearSelection();
260
				selectedRow.addAll(selectedRowAux);
259
				vle.setSelectionCache(selectedRowAux);
260
				//clearSelection();
261
				//selectedRow.addAll(selectedRowAux);
261 262
			} catch (DriverIOException e) {
262 263
				e.printStackTrace();
263 264
			} catch (IOException e1) {
trunk/extensions/extCAD/src/com/iver/cit/gvsig/gui/cad/tools/RotateCADTool.java
167 167
				}
168 168

  
169 169
				vea.endComplexRow();
170
				clearSelection();
171
				selectedRow.addAll(selectedRowAux);
170
				vle.setSelectionCache(selectedRowAux);
171
				//clearSelection();
172
				//selectedRow.addAll(selectedRowAux);
172 173
			} catch (DriverIOException e) {
173 174
				e.printStackTrace();
174 175
			} catch (IOException e1) {
trunk/extensions/extCAD/src/com/iver/cit/gvsig/gui/cad/tools/MoveCADTool.java
160 160
                    selectedRowAux.add(new DefaultRowEdited(feat,IRowEdited.STATUS_MODIFIED,edRow.getIndex()));
161 161
              }
162 162
                vea.endComplexRow();
163
                clearSelection();
164
              	selectedRow.addAll(selectedRowAux);
163
                vle.setSelectionCache(selectedRowAux);
164
                //clearSelection();
165
              	//selectedRow.addAll(selectedRowAux);
165 166

  
166 167
            } catch (DriverIOException e) {
167 168
                e.printStackTrace();
trunk/extensions/extCAD/src/com/iver/cit/gvsig/gui/cad/tools/CopyCADTool.java
153 153
                    UtilFunctions.moveGeom(fea.getGeometry(), lastPoint.getX() -
154 154
                            firstPoint.getX(), lastPoint.getY() - firstPoint.getY());
155 155

  
156
                    int index=vea.addRow(fea,getName(),EditionEvent.GRAPHIC);
157
                    selectedRowAux.add(new DefaultRowEdited(fea,IRowEdited.STATUS_ADDED,index));
156
                    vea.addRow(fea,getName(),EditionEvent.GRAPHIC);
157
                    selectedRowAux.add(new DefaultRowEdited(fea,IRowEdited.STATUS_ADDED,dre.getIndex()));
158 158
                }
159 159
            	vea.endComplexRow();
160
                clearSelection();
161
                selectedRow.addAll(selectedRowAux);
160
                //clearSelection();
161
                //selectedRow.addAll(selectedRowAux);
162
                vle.setSelectionCache(selectedRowAux);
162 163
            } catch (DriverIOException e) {
163 164
                e.printStackTrace();
164 165
            } catch (IOException e) {
trunk/extensions/extCAD/src/com/iver/cit/gvsig/gui/cad/CADToolAdapter.java
32 32
import com.iver.cit.gvsig.fmap.core.v02.FSymbol;
33 33
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
34 34
import com.iver.cit.gvsig.fmap.edition.EditionEvent;
35
import com.iver.cit.gvsig.fmap.edition.IRowEdited;
35 36
import com.iver.cit.gvsig.fmap.edition.UtilFunctions;
36 37
import com.iver.cit.gvsig.fmap.edition.VectorialEditableAdapter;
37 38
import com.iver.cit.gvsig.fmap.layers.FBitSet;
......
168 169
	 */
169 170
	private double adjustToHandler(Point2D point,
170 171
			Point2D mapHandlerAdjustedPoint) {
171
		
172

  
172 173
		if (!isRefentEnabled())
173 174
			return Double.MAX_VALUE;
174 175

  
......
176 177
		if (!(aux instanceof VectorialLayerEdited))
177 178
			return Double.MAX_VALUE;
178 179
		VectorialLayerEdited vle = (VectorialLayerEdited) aux;
179
		
180

  
180 181
		ArrayList snappers = vle.getSnappers();
181 182
		ArrayList layersToSnap = vle.getLayersToSnap();
182 183

  
......
199 200
				mapPoint.getY() - mapTolerance / 2, mapTolerance, mapTolerance);
200 201

  
201 202
		Envelope e = FConverter.convertRectangle2DtoEnvelope(r);
202
		
203

  
203 204
		usedSnap = null;
204 205
		Point2D lastPoint = null;
205 206
		if (previousPoint != null)
......
217 218
				for (int i = 0; i < snappers.size(); i++)
218 219
				{
219 220
					ISnapper theSnapper = (ISnapper) snappers.get(i);
220
					
221

  
221 222
					if (usedSnap != null)
222 223
					{
223 224
						// Si ya tenemos un snap y es de alta prioridad, cogemos ese. (A no ser que en otra capa encontremos un snapper mejor)
224 225
						if (theSnapper.getPriority() < usedSnap.getPriority())
225
							break; 
226
							break;
226 227
					}
227
		
228

  
228 229
					SnappingVisitor snapVisitor = new SnappingVisitor(theSnapper, point, mapTolerance, lastPoint);
229 230
					// System.out.println("Cache size = " + cache.size());
230 231
					cache.query(e, snapVisitor);
231
		
232

  
232 233
					if (snapVisitor.getSnapPoint() != null) {
233 234
						if (minDist > snapVisitor.getMinDist())
234 235
						{
......
274 275
		calculateSnapPoint(e.getPoint());
275 276
		
276 277
		showCoords(e.getPoint());
277
		
278

  
278 279
		getMapControl().repaint();
279 280
	}
280 281

  
......
306 307
		MainFrame mF = PluginServices.getMainFrame();
307 308

  
308 309
		if (mF != null)
309
		{			
310
		{
310 311
            mF.getStatusBar().setMessage("1",
311 312
                    FConstant.NAMES[vp.getDistanceUnits()]);
312 313
            mF.getStatusBar().setMessage("6", "1:"+mapControl.getMapContext().getScaleView());
......
366 367
				if (usedSnap != null)
367 368
				{
368 369
					usedSnap.draw(g, adjustedPoint);
369
					
370

  
370 371
					Graphics2D g2 = (Graphics2D) g;
371 372
			        FontMetrics metrics = g2.getFontMetrics();
372 373
			        int w = metrics.stringWidth(usedSnap.getToolTipText()) + 5;
373 374
			        int h = metrics.getMaxAscent() + 5;
374 375
			        int x = (int)p.getX()+9;
375 376
			        int y = (int)p.getY()- 7;
376
			        
377

  
377 378
			        g2.setColor(theTipColor );
378 379
			        g2.fillRect(x, y-h, w, h);
379 380
			        g2.setColor(Color.BLACK);
380 381
			        g2.drawRect(x, y-h, w, h);
381 382
					g2.drawString(usedSnap.getToolTipText(), x+3, y-3);
382
					
383 383

  
384

  
384 385
					// getMapControl().setToolTipText(usedSnap.getToolTipText());
385 386
				}
386 387

  
......
680 681
	public void setRefentEnabled(boolean activated) {
681 682
		bRefent = activated;
682 683
	}
683
	
684

  
684 685
	public boolean isRefentEnabled()
685 686
	{
686 687
		return bRefent;
......
807 808
				indexesToDel[j++] = i;
808 809
				// /vea.removeRow(i);
809 810
			}
810
			/*
811
			 * VectorialLayerEdited vle = (VectorialLayerEdited) CADExtension
812
			 * .getEditionManager().getActiveLayerEdited(); ArrayList
813
			 * selectedRow = vle.getSelectedRow();
814
			 *
815
			 * int[] indexesToDel = new int[selectedRow.size()]; for (int i = 0;
816
			 * i < selectedRow.size(); i++) { IRowEdited edRow = (IRowEdited)
817
			 * selectedRow.get(i); indexesToDel[i] = edRow.getIndex(); }
818
			 */
811

  
812
//			  ArrayList selectedRow = vle.getSelectedRow();
813
//
814
//			  int[] indexesToDel = new int[selectedRow.size()];
815
//			  for (int i = 0;i < selectedRow.size(); i++) {
816
//				  IRowEdited edRow = (IRowEdited) selectedRow.get(i);
817
//				  indexesToDel[i] = vea.getInversedIndex(edRow.getIndex());
818
//				  }
819
//
819 820
			for (int i = indexesToDel.length - 1; i >= 0; i--) {
820 821
				vea.removeRow(indexesToDel[i], PluginServices.getText(this,
821 822
						"deleted_feature"),EditionEvent.GRAPHIC);
......
873 874

  
874 875
				pushCadTool(selCad);
875 876
				// getVectorialAdapter().getSelection().clear();
876
				
877

  
877 878
				refreshEditedLayer();
878
				
879
				
879

  
880

  
880 881
				PluginServices.getMainFrame().setSelectedTool("_selection");
881 882
				// askQuestion();
882 883
			} else {
......
887 888
		PluginServices.getMainFrame().enableControls();
888 889

  
889 890
	}
890
	
891

  
891 892
	/**
892 893
	 * Provoca un repintado "soft" de la capa activa en edici?n.
893
	 * Las capas por debajo de ella no se dibujan de verdad, solo 
894
	 * Las capas por debajo de ella no se dibujan de verdad, solo
894 895
	 * se dibuja la que est? en edici?n y las que est?n por encima
895 896
	 * de ella en el TOC.
896 897
	 */
......
902 903
			edLayer.getLayer().setDirty(true);
903 904
			getMapControl().rePaintDirtyLayers();
904 905
		}
905
		
906

  
906 907
	}
907 908

  
908 909
	public CADGrid getGrid() {
trunk/extensions/extCAD/src/com/iver/cit/gvsig/layers/VectorialLayerEdited.java
72 72
	public void clearSelection() {
73 73
		selectedHandler.clear();
74 74
		selectedRow.clear();
75
		FBitSet selection=getVEA().getSelection();
76
		selection.clear();
75 77
	}
76 78
	/**
77 79
	 * @return Returns the selectedRow.
......
459 461

  
460 462
	}
461 463

  
464
	public void setSelectionCache(ArrayList selectedRowAux) {
465
		clearSelection();
466
		VectorialEditableAdapter vea=getVEA();
467
		FBitSet selection=vea.getSelection();
468
		selectedRow.addAll(selectedRowAux);
469
		for (int i = 0;i < selectedRow.size(); i++) {
470
			  IRowEdited edRow = (IRowEdited) selectedRow.get(i);
471
			  selection.set(edRow.getIndex());
472
		}
473
	}
474

  
462 475
}

Also available in: Unified diff