Revision 2615
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.duplicate/src/main/java/org/gvsig/vectorediting/lib/prov/duplicate/PasteFromClipboardEditingProvider.java | ||
---|---|---|
30 | 30 |
import java.util.LinkedHashMap; |
31 | 31 |
import java.util.List; |
32 | 32 |
import java.util.Map; |
33 |
import java.util.Observable; |
|
33 | 34 |
import java.util.logging.Level; |
34 | 35 |
import java.util.logging.Logger; |
35 | 36 |
import org.apache.commons.collections4.CollectionUtils; |
... | ... | |
58 | 59 |
import org.gvsig.tools.dynobject.DynObject; |
59 | 60 |
import org.gvsig.tools.i18n.I18nManager; |
60 | 61 |
import org.gvsig.tools.service.spi.ProviderServices; |
62 |
import org.gvsig.tools.swing.api.ToolsSwingLocator; |
|
61 | 63 |
import org.gvsig.vectorediting.lib.api.DrawingStatus; |
62 | 64 |
import org.gvsig.vectorediting.lib.api.EditingServiceParameter; |
63 | 65 |
import org.gvsig.vectorediting.lib.api.EditingServiceParameter.TYPE; |
... | ... | |
76 | 78 |
import org.gvsig.vectorediting.lib.spi.EditingProviderServices; |
77 | 79 |
|
78 | 80 |
/** |
79 |
* @author llmarques
|
|
81 |
* @author gvSIG Team
|
|
80 | 82 |
* |
81 | 83 |
*/ |
84 |
@SuppressWarnings("UseSpecificCatch") |
|
82 | 85 |
public class PasteFromClipboardEditingProvider extends AbstractEditingProvider implements |
83 | 86 |
EditingProvider { |
84 | 87 |
|
... | ... | |
91 | 94 |
private final FeatureStore featureStore; |
92 | 95 |
|
93 | 96 |
private Map<EditingServiceParameter, Object> values; |
97 |
|
|
94 | 98 |
private Point firstPoint; |
99 |
private final java.util.Observer clipboardObserver; |
|
95 | 100 |
|
96 | 101 |
/** |
97 | 102 |
* Default constructor. |
... | ... | |
130 | 135 |
true, |
131 | 136 |
TYPE.OPTION |
132 | 137 |
); |
138 |
|
|
139 |
this.clipboardObserver = (java.util.Observable o, Object arg) -> { |
|
140 |
doClipboardChanged(); |
|
141 |
}; |
|
133 | 142 |
} |
134 | 143 |
|
135 | 144 |
@Override |
... | ... | |
137 | 146 |
return true; |
138 | 147 |
} |
139 | 148 |
|
140 |
|
|
149 |
private void doClipboardChanged() { |
|
150 |
EditingProviderManager manager = EditingProviderLocator.getProviderManager(); |
|
151 |
List<EditableFeature> featuresFromClipBoard = manager.getFeaturesFromClipboard( |
|
152 |
this.getProviderServices(), |
|
153 |
featureStore |
|
154 |
); |
|
155 |
if (CollectionUtils.isNotEmpty(featuresFromClipBoard)) { |
|
156 |
try { |
|
157 |
setValue(clipboard, featuresFromClipBoard); |
|
158 |
} catch (InvalidEntryException ex) { |
|
159 |
} |
|
160 |
} |
|
161 |
} |
|
141 | 162 |
|
142 | 163 |
@Override |
143 | 164 |
public EditingServiceParameter next() { |
... | ... | |
172 | 193 |
|
173 | 194 |
if (values != null) { |
174 | 195 |
|
175 |
List<Feature> features = null;
|
|
196 |
List<Feature> features; |
|
176 | 197 |
features = (List<Feature>) values.get(clipboard); |
177 | 198 |
if (features != null && firstPoint != null) { |
178 | 199 |
try { |
... | ... | |
227 | 248 |
if (values != null) { |
228 | 249 |
values.clear(); |
229 | 250 |
} |
251 |
ToolsSwingLocator.getToolsSwingManager().deleteClipboardObserver(this.clipboardObserver); |
|
230 | 252 |
} |
231 | 253 |
|
232 | 254 |
@Override |
... | ... | |
330 | 352 |
Geometry geometry = editableFeature.getDefaultGeometry().cloneGeometry(); |
331 | 353 |
|
332 | 354 |
geometry.transform(at); |
333 |
EditableFeature targetEditableFeature = null;
|
|
355 |
EditableFeature targetEditableFeature; |
|
334 | 356 |
if(copyAttributes == null || copyAttributes){ |
335 | 357 |
targetEditableFeature = editableFeature; |
336 | 358 |
} else { |
... | ... | |
350 | 372 |
} |
351 | 373 |
} |
352 | 374 |
|
375 |
@Override |
|
353 | 376 |
public void start() throws StartServiceException, InvalidEntryException { |
354 | 377 |
values = new HashMap<>(); |
355 | 378 |
|
... | ... | |
364 | 387 |
if(getValue(copyAlphanumericAttributes) == null){ |
365 | 388 |
setValue(copyAlphanumericAttributes, "true"); |
366 | 389 |
} |
390 |
ToolsSwingLocator.getToolsSwingManager().addClipboardObserver(this.clipboardObserver); |
|
367 | 391 |
} |
368 | 392 |
|
393 |
@Override |
|
369 | 394 |
public String getName() { |
370 | 395 |
return PasteFromClipboardEditingProviderFactory.PROVIDER_NAME; |
371 | 396 |
} |
Also available in: Unified diff