27 |
27 |
import java.awt.BorderLayout;
|
28 |
28 |
import java.awt.Component;
|
29 |
29 |
import java.lang.ref.WeakReference;
|
|
30 |
import java.util.ArrayList;
|
30 |
31 |
import java.util.Set;
|
31 |
32 |
import java.util.Stack;
|
|
33 |
import java.util.prefs.PreferenceChangeEvent;
|
|
34 |
import java.util.prefs.PreferenceChangeListener;
|
|
35 |
import java.util.prefs.Preferences;
|
32 |
36 |
|
33 |
37 |
import org.slf4j.Logger;
|
34 |
38 |
import org.slf4j.LoggerFactory;
|
... | ... | |
159 |
163 |
}
|
160 |
164 |
};
|
161 |
165 |
|
|
166 |
private PreferenceChangeListener preferenceChangeListener =
|
|
167 |
new PreferenceChangeListener() {
|
|
168 |
|
|
169 |
public void preferenceChange(PreferenceChangeEvent evt) {
|
|
170 |
String key = evt.getKey();
|
|
171 |
if (key.equalsIgnoreCase("apply-snappers")) {
|
|
172 |
boolean newValue = Boolean.parseBoolean(evt.getNewValue());
|
|
173 |
getMapControl().setRefentEnabled(newValue);
|
|
174 |
}
|
|
175 |
}
|
|
176 |
};
|
|
177 |
|
162 |
178 |
public DefaultEditingContext(MapControl mapControl) {
|
163 |
179 |
|
164 |
180 |
this.mapControlReference = new WeakReference<MapControl>(mapControl);
|
... | ... | |
168 |
184 |
this.serviceStack = new Stack<EditingService>();
|
169 |
185 |
|
170 |
186 |
addLayerListeners();
|
|
187 |
addPreferenceListener();
|
171 |
188 |
addConsolePanelListeners(getConsolePanel());
|
172 |
189 |
}
|
173 |
190 |
|
|
191 |
private void addPreferenceListener() {
|
|
192 |
Preferences prefs = Preferences.userRoot().node("snappers");
|
|
193 |
prefs.addPreferenceChangeListener(preferenceChangeListener);
|
|
194 |
}
|
|
195 |
|
174 |
196 |
public void activateService(String name) {
|
175 |
197 |
|
176 |
198 |
if ((getMapControl() != null)
|
... | ... | |
389 |
411 |
EditingNotification.AFTER_ENTER_EDITING_STORE, null, layer);
|
390 |
412 |
|
391 |
413 |
getMapControl().setTool("VectorEditing");
|
|
414 |
enableSnapping();
|
392 |
415 |
showConsole();
|
393 |
416 |
}
|
394 |
417 |
|
|
418 |
@SuppressWarnings({ "rawtypes", "unchecked" })
|
|
419 |
private void enableSnapping() {
|
|
420 |
Preferences prefs = Preferences.userRoot().node("snappers");
|
|
421 |
if ((prefs.getBoolean("apply-snappers", false) && currentLayer != null)) {
|
|
422 |
getMapControl().setRefentEnabled(true);
|
|
423 |
ArrayList layersToSnap =
|
|
424 |
getMapControl().getMapContext().getLayersToSnap();
|
|
425 |
if (!layersToSnap.contains(currentLayer)) {
|
|
426 |
layersToSnap.add(currentLayer);
|
|
427 |
}
|
|
428 |
}
|
|
429 |
}
|
|
430 |
|
|
431 |
@SuppressWarnings("rawtypes")
|
|
432 |
private void disableSnapping() {
|
|
433 |
getMapControl().setRefentEnabled(true);
|
|
434 |
ArrayList layersToSnap =
|
|
435 |
getMapControl().getMapContext().getLayersToSnap();
|
|
436 |
if (layersToSnap.contains(currentLayer)) {
|
|
437 |
layersToSnap.remove(currentLayer);
|
|
438 |
}
|
|
439 |
}
|
|
440 |
|
395 |
441 |
private void changeSelectedTool(String name) {
|
396 |
442 |
if (name.equalsIgnoreCase(DEFAULT_TOOL)) {
|
397 |
443 |
name = "selection-simple-select-view";
|
... | ... | |
476 |
522 |
|
477 |
523 |
cleanEditingContext();
|
478 |
524 |
hideConsole();
|
|
525 |
disableSnapping();
|
479 |
526 |
changeSelectedTool(DEFAULT_TOOL);
|
480 |
527 |
|
481 |
528 |
FeatureStore featureStore = layer.getFeatureStore();
|