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

View differences:

JoinCADTool.java
46 46
import java.awt.event.InputEvent;
47 47
import java.awt.geom.Point2D;
48 48
import java.util.ArrayList;
49
import java.util.Iterator;
49 50

  
50 51
import javax.swing.JOptionPane;
51 52

  
53
import org.gvsig.fmap.data.DataException;
52 54
import org.gvsig.fmap.data.ReadException;
55
import org.gvsig.fmap.data.feature.Feature;
56
import org.gvsig.fmap.data.feature.FeatureStore;
53 57
import org.gvsig.fmap.geom.Geometry;
54 58
import org.gvsig.fmap.geom.GeometryFactory;
55 59
import org.gvsig.fmap.geom.GeometryManager;
56 60
import org.gvsig.fmap.geom.handler.Handler;
61
import org.gvsig.fmap.geom.operation.Draw;
62
import org.gvsig.fmap.geom.operation.DrawOperationContext;
63
import org.gvsig.fmap.geom.operation.GeometryOperationException;
64
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
57 65
import org.gvsig.fmap.geom.primitive.GeneralPathX;
58 66
import org.gvsig.fmap.geom.util.UtilFunctions;
59 67
import org.gvsig.fmap.mapcontext.ViewPort;
......
154 162
     */
155 163
    public void drawOperation(Graphics g, double x, double y) {
156 164
    	 VectorialLayerEdited vle=getVLE();
157
         ArrayList selectedRows=vle.getSelectedRow();
165
    	 Iterator iterator=null;
166
		try {
167
			iterator = vle.getFeatureStore().getSelection().iterator();
168
		} catch (ReadException e1) {
169
			// TODO Auto-generated catch block
170
			e1.printStackTrace();
171
		}
172
//         ArrayList selectedRows=vle.getSelectedRow();
158 173
         ViewPort vp=CADExtension.getEditionManager().getMapControl().getViewPort();
159
         DefaultRowEdited[] dres=(DefaultRowEdited[])selectedRows.toArray(new DefaultRowEdited[0]);
160
         for (int i=0;i<dres.length;i++) {
161
        	 Geometry geom=((IFeature)dres[i].getLinkedRow()).getGeometry().cloneGeometry();
162
        	 geom.draw((Graphics2D)g,vp,DefaultCADTool.geometrySelectSymbol);
174
//         DefaultRowEdited[] dres=(DefaultRowEdited[])selectedRows.toArray(new DefaultRowEdited[0]);
175
//         for (int i=0;i<dres.length;i++) {
176
        while (iterator.hasNext()) {
177
			Feature feature = (Feature) iterator.next();
178
			Geometry geom=((Geometry)feature.getDefaultGeometry()).cloneGeometry();
179
			DrawOperationContext doc=new DrawOperationContext();
180
			doc.setGraphics((Graphics2D)g);
181
			doc.setViewPort(getCadToolAdapter().getMapControl().getViewPort());
182
			doc.setSymbol(DefaultCADTool.geometrySelectSymbol);
183
        	try {
184
				geom.invokeOperation(Draw.CODE,doc);
185
			} catch (GeometryOperationNotSupportedException e) {
186
				e.printStackTrace();
187
			} catch (GeometryOperationException e) {
188
				e.printStackTrace();
189
			}
190
//			geom.draw((Graphics2D)g,vp,DefaultCADTool.geometrySelectSymbol);
163 191
         }
164 192
    }
165 193
  /**
......
175 203
				joinGeometries();
176 204
			} catch (ReadException e) {
177 205
				NotificationManager.addError(e.getMessage(),e);
178
			} catch (ValidateRowException e) {
206
			} catch (DataException e) {
179 207
				NotificationManager.addError(e.getMessage(),e);
180 208
			}
181 209
    	}
182 210
    }
183
    private Handler[] getHandlers(DefaultRowEdited[] selectedRows) {
211
    private Handler[] getHandlers() throws ReadException {
212
    	Iterator iterator=getVLE().getFeatureStore().getSelection().iterator();
184 213
    	ArrayList handlers=new ArrayList();
185
    	for (int i=0;i<selectedRows.length;i++) {
186
    		Geometry geometry=((IFeature)selectedRows[i].getLinkedRow()).getGeometry();
214
    	while (iterator.hasNext()) {
215
			Feature feature = (Feature) iterator.next();
216
    		Geometry geometry=(Geometry)feature.getDefaultGeometry();
187 217
    		Handler[] hs=geometry.getHandlers(Geometry.SELECTHANDLER);
188 218
    		for (int j=0;j<hs.length;j++) {
189 219
    			handlers.add(hs[j]);
......
239 269

  
240 270

  
241 271

  
242
    private void joinGeometries() throws ReadException, ValidateRowException, ExpansionFileWriteException {
243
    	DefaultRowEdited[] rows = (DefaultRowEdited[]) getSelectedRows()
244
				.toArray(new DefaultRowEdited[0]);
245
		Handler[] handlers = getHandlers(rows);
272
    private void joinGeometries() throws DataException{
273

  
274
//    	DefaultRowEdited[] rows = (DefaultRowEdited[]) getSelectedRows()
275
//				.toArray(new DefaultRowEdited[0]);
276
		Handler[] handlers = getHandlers();
246 277
		if (handlers.length < 2) {
247 278
			return;
248 279
		}
......
254 285
		}
255 286

  
256 287
		VectorialLayerEdited vle = getVLE();
257
		VectorialEditableAdapter vea = vle.getVEA();
258
		vea.startComplexRow();
288
//		VectorialEditableAdapter vea = vle.getVEA();
289
		FeatureStore featureStore=vle.getFeatureStore();
290
		featureStore.getCommandsRecord().startComplex();
259 291

  
260
		String newFID = vea.getNewFID();
292
//		String newFID = vea.getNewFID();
261 293
		GeneralPathX gpx = new GeneralPathX();
262 294
		gpx.moveTo(points[0].getX(), points[0].getY());
263 295
		gpx.lineTo(points[1].getX(), points[1].getY());
264 296

  
265 297
		Geometry geom = geomFactory.createPolyline2D(gpx);
266
		DefaultFeature df1 = new DefaultFeature(geom, null, newFID);
298
		Feature df1=featureStore.createDefaultFeature(false);
299
		df1.editing();
300
		df1.setGeometry(featureStore.getDefaultFeatureType().getDefaultGeometry(), geom);
301
//		DefaultFeature df1 = new DefaultFeature(geom, null, newFID);
302
		Iterator iterator=featureStore.getSelection().iterator();
303
		while (iterator.hasNext()) {
304
			Feature feature = (Feature) iterator.next();
267 305

  
268
		for (int i = rows.length - 1; i >= 0; i--) {
269
			vea.removeRow(rows[i].getIndex(), getName(), EditionEvent.GRAPHIC);
306
//		}
307
//		for (int i = rows.length - 1; i >= 0; i--) {
308
			featureStore.delete(feature);
270 309
		}
271
		int index1 = vea.addRow(df1, PluginServices.getText(this, "parte1"),
272
				EditionEvent.GRAPHIC);
310
		featureStore.insert(df1);
311
//		int index1 = vea.addRow(df1, PluginServices.getText(this, "parte1"),
312
//				EditionEvent.GRAPHIC);
273 313
		//clearSelection();
274 314
		ArrayList selectedRowAux = new ArrayList();
275
		selectedRowAux.add(new DefaultRowEdited(df1, IRowEdited.STATUS_ADDED,
276
				vea.getInversedIndex(index1)));
277
		vle.setSelectionCache(VectorialLayerEdited.NOTSAVEPREVIOUS, selectedRowAux);
278
		vea.endComplexRow(getName());
315
		selectedRowAux.add(df1);
316
//		vle.setSelectionCache(VectorialLayerEdited.NOTSAVEPREVIOUS, selectedRowAux);
317
		featureStore.getCommandsRecord().endComplex(getName());
279 318

  
280 319
	}
281 320

  

Also available in: Unified diff