Revision 23424 branches/v2_0_0_prep/extensions/extCAD/src/com/iver/cit/gvsig/gui/cad/tools/JoinCADTool.java
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