source: josm/trunk/src/org/openstreetmap/josm/actions/MergeLayerAction.java@ 2001

Last change on this file since 2001 was 1890, checked in by Gubaer, 15 years ago

update: rewrite of layer dialog
new: allows multiple selection of layers in the dialog
new: move up, move down, toggle visibility, and delete on multiple layers
new: merge from an arbitrary layer into another layer, not only from the first into the second
new: new action for merging of the currently selected primitives on an arbitrary layer
new: make "active" layer explicit (special icon); activating a layer automatically moves it in the first position
refactoring: public fields 'name' and 'visible' on Layer are @deprecated. Use the setter/getters instead, Layer now emits PropertyChangeEvents if name or visibility are changed.

File size: 1.9 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.actions;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.awt.event.ActionEvent;
7import java.awt.event.KeyEvent;
8import java.util.List;
9
10import org.openstreetmap.josm.Main;
11import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
12import org.openstreetmap.josm.gui.layer.Layer;
13import org.openstreetmap.josm.tools.Shortcut;
14
15public class MergeLayerAction extends AbstractMergeAction {
16
17 public MergeLayerAction() {
18 super(tr("Merge layer"), "dialogs/mergedown", tr("Merge the current layer into another layer"), Shortcut
19 .registerShortcut("system:merge", tr("Edit: {0}", tr("Merge")), KeyEvent.VK_M, Shortcut.GROUP_MENU),
20 true /* register */
21 );
22 }
23
24 public void merge(Layer sourceLayer) {
25 if (sourceLayer == null)
26 return;
27 List<Layer> targetLayers = LayerListDialog.getInstance().getModel().getPossibleMergeTargets(sourceLayer);
28 if (targetLayers.isEmpty()) {
29 warnNoTargetLayersForSourceLayer(sourceLayer);
30 return;
31 }
32 Layer targetLayer = askTargetLayer(targetLayers);
33 if (targetLayer == null)
34 return;
35 targetLayer.mergeFrom(sourceLayer);
36 Main.map.mapView.removeLayer(sourceLayer);
37 Main.map.mapView.setActiveLayer(targetLayer);
38 }
39
40 public void actionPerformed(ActionEvent e) {
41 Layer sourceLayer = Main.main.getEditLayer();
42 if (sourceLayer == null)
43 return;
44 merge(sourceLayer);
45 }
46
47 @Override
48 protected void updateEnabledState() {
49 if (getEditLayer() == null) {
50 setEnabled(false);
51 return;
52 }
53 setEnabled(!LayerListDialog.getInstance().getModel().getPossibleMergeTargets(getEditLayer()).isEmpty());
54 }
55}
Note: See TracBrowser for help on using the repository browser.