Revision 2615

View differences:

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