Revision 23086 branches/v2_0_0_prep/extensions/extCAD/src/com/iver/cit/gvsig/gui/cad/tools/CopyCADTool.java
CopyCADTool.java | ||
---|---|---|
45 | 45 |
import java.awt.event.InputEvent; |
46 | 46 |
import java.awt.geom.Point2D; |
47 | 47 |
import java.util.ArrayList; |
48 |
import java.util.Iterator; |
|
48 | 49 |
|
50 |
import org.gvsig.fmap.data.DataException; |
|
49 | 51 |
import org.gvsig.fmap.data.ReadException; |
52 |
import org.gvsig.fmap.data.feature.Feature; |
|
53 |
import org.gvsig.fmap.data.feature.FeatureCollection; |
|
54 |
import org.gvsig.fmap.data.feature.FeatureStore; |
|
55 |
import org.gvsig.fmap.geom.Geometry; |
|
50 | 56 |
import org.gvsig.fmap.geom.util.UtilFunctions; |
51 | 57 |
import org.gvsig.fmap.mapcontext.ViewPort; |
52 | 58 |
|
... | ... | |
111 | 117 |
* DOCUMENT ME! |
112 | 118 |
*/ |
113 | 119 |
public void selection() { |
114 |
ArrayList selectedRow=getSelectedRows(); |
|
115 |
if (selectedRow.size() == 0 && !CADExtension.getCADTool().getClass().getName().equals("com.iver.cit.gvsig.gui.cad.tools.SelectionCADTool")) { |
|
120 |
FeatureCollection selection=null; |
|
121 |
try { |
|
122 |
selection = (FeatureCollection)getVLE().getFeatureStore().getSelection(); |
|
123 |
} catch (ReadException e) { |
|
124 |
// TODO Auto-generated catch block |
|
125 |
e.printStackTrace(); |
|
126 |
}//getSelectedRows(); |
|
127 |
if (selection.size() == 0 && !CADExtension.getCADTool().getClass().getName().equals("com.iver.cit.gvsig.gui.cad.tools.SelectionCADTool")) { |
|
116 | 128 |
CADExtension.setCADTool("_selection",false); |
117 | 129 |
((SelectionCADTool) CADExtension.getCADTool()).setNextTool( |
118 | 130 |
"_copy"); |
... | ... | |
130 | 142 |
CopyCADToolState actualState = (CopyCADToolState) _fsm.getPreviousState(); |
131 | 143 |
String status = actualState.getName(); |
132 | 144 |
VectorialLayerEdited vle=getVLE(); |
133 |
VectorialEditableAdapter vea = vle.getVEA(); |
|
134 |
ArrayList selectedRow=getSelectedRows(); |
|
145 |
FeatureStore featureStore=null; |
|
146 |
try { |
|
147 |
featureStore = vle.getFeatureStore(); |
|
148 |
} catch (ReadException e1) { |
|
149 |
// TODO Auto-generated catch block |
|
150 |
e1.printStackTrace(); |
|
151 |
} |
|
152 |
// VectorialEditableAdapter vea = vle.getVEA(); |
|
153 |
FeatureCollection selection=(FeatureCollection)featureStore.getSelection(); |
|
135 | 154 |
ArrayList selectedRowAux=new ArrayList(); |
136 | 155 |
if (status.equals("Copy.FirstPointToMove")) { |
137 | 156 |
firstPoint = new Point2D.Double(x, y); |
138 | 157 |
} else if (status.equals("Copy.SecondPointToMove")) { |
139 | 158 |
PluginServices.getMDIManager().setWaitCursor(); |
140 | 159 |
lastPoint = new Point2D.Double(x, y); |
141 |
vea.startComplexRow();
|
|
160 |
featureStore.getCommandsRecord().startComplex();
|
|
142 | 161 |
|
143 | 162 |
try { |
144 |
for (int i = 0; i < selectedRow.size(); i++) { |
|
145 |
DefaultRowEdited dre=(DefaultRowEdited)selectedRow.get(i); |
|
146 |
DefaultFeature fea = (DefaultFeature)dre.getLinkedRow() |
|
147 |
.cloneRow(); |
|
163 |
Iterator iterator=selection.iterator(); |
|
164 |
while (iterator.hasNext()) { |
|
165 |
Feature feature = (Feature) iterator.next(); |
|
166 |
|
|
167 |
// } |
|
168 |
// for (int i = 0; i < selectedRow.size(); i++) { |
|
169 |
// DefaultRowEdited dre=(DefaultRowEdited)selectedRow.get(i); |
|
170 |
// DefaultFeature fea = (DefaultFeature)dre.getLinkedRow() |
|
171 |
// .cloneRow(); |
|
148 | 172 |
// Movemos la geometr?a |
149 |
UtilFunctions.moveGeom(fea.getGeometry(), lastPoint.getX() - |
|
173 |
Geometry geometry=((Geometry)feature.getDefaultGeometry()).cloneGeometry(); |
|
174 |
feature.editing(); |
|
175 |
UtilFunctions.moveGeom(geometry, lastPoint.getX() - |
|
150 | 176 |
firstPoint.getX(), lastPoint.getY() - firstPoint.getY()); |
177 |
feature.setGeometry(featureStore.getDefaultFeatureType().getDefaultGeometry(),geometry); |
|
178 |
featureStore.insert(feature); |
|
151 | 179 |
|
152 |
int index=vea.addRow(fea,getName(),EditionEvent.GRAPHIC); |
|
153 |
selectedRowAux.add(new DefaultRowEdited(fea,IRowEdited.STATUS_ADDED,vea.getInversedIndex(index))); |
|
180 |
// int index=vea.addRow(fea,getName(),EditionEvent.GRAPHIC);
|
|
181 |
// selectedRowAux.add(new DefaultRowEdited(fea,IRowEdited.STATUS_ADDED,vea.getInversedIndex(index)));
|
|
154 | 182 |
} |
155 |
vea.endComplexRow(getName());
|
|
183 |
featureStore.getCommandsRecord().endComplex(getName());
|
|
156 | 184 |
//clearSelection(); |
157 | 185 |
//selectedRow.addAll(selectedRowAux); |
158 |
vle.setSelectionCache(VectorialLayerEdited.SAVEPREVIOUS, selectedRowAux); |
|
159 |
} catch (ValidateRowException e) { |
|
160 |
NotificationManager.addError(e.getMessage(),e); |
|
161 |
} catch (ReadException e) { |
|
186 |
// vle.setSelectionCache(VectorialLayerEdited.SAVEPREVIOUS, selectedRowAux); |
|
187 |
} catch (ReadException e) { |
|
162 | 188 |
NotificationManager.addError(e.getMessage(),e); |
189 |
} catch (DataException e) { |
|
190 |
// TODO Auto-generated catch block |
|
191 |
e.printStackTrace(); |
|
163 | 192 |
} |
164 | 193 |
PluginServices.getMDIManager().restoreCursor(); |
165 | 194 |
} |
Also available in: Unified diff