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

Revision 4851, 2.5 KB checked in by stoecker, 3 weeks ago (diff)

allow automatic parsing of shortcuts see #7226

  • Property svn:eol-style set to native
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.actions;
3
4import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
5import static org.openstreetmap.josm.tools.I18n.tr;
6
7import java.awt.event.ActionEvent;
8import java.awt.event.KeyEvent;
9import java.util.List;
10
11import org.openstreetmap.josm.Main;
12import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
13import org.openstreetmap.josm.gui.layer.Layer;
14import org.openstreetmap.josm.tools.Shortcut;
15
16public class MergeLayerAction extends AbstractMergeAction {
17
18    public MergeLayerAction() {
19        super(tr("Merge layer"), "dialogs/mergedown",
20            tr("Merge the current layer into another layer"),
21            Shortcut.registerShortcut("system:merge", tr("Edit: {0}",
22            tr("Merge")), KeyEvent.VK_M, Shortcut.GROUP_MENU),
23            true, "action/mergelayer", true);
24        putValue("help", ht("/Action/MergeLayer"));
25    }
26
27    public void merge(List<Layer> sourceLayers) {
28        Layer targetLayer = askTargetLayer(sourceLayers);
29        if (targetLayer == null)
30            return;
31        for (Layer l: sourceLayers) {
32            if (l != targetLayer) {
33                targetLayer.mergeFrom(l);
34                Main.map.mapView.removeLayer(l);
35            }
36        }
37        Main.map.mapView.setActiveLayer(targetLayer);
38    }
39
40    public void merge(final Layer sourceLayer) {
41        if (sourceLayer == null)
42            return;
43        List<Layer> targetLayers = LayerListDialog.getInstance().getModel().getPossibleMergeTargets(sourceLayer);
44        if (targetLayers.isEmpty()) {
45            warnNoTargetLayersForSourceLayer(sourceLayer);
46            return;
47        }
48        final Layer targetLayer = askTargetLayer(targetLayers);
49        if (targetLayer == null)
50            return;
51        Main.worker.submit(new Runnable() {
52            @Override
53            public void run() {
54                targetLayer.mergeFrom(sourceLayer);
55                Main.map.mapView.removeLayer(sourceLayer);
56                Main.map.mapView.setActiveLayer(targetLayer);
57            }
58        });
59    }
60
61    public void actionPerformed(ActionEvent e) {
62        Layer sourceLayer = Main.main.getEditLayer();
63        if (sourceLayer == null)
64            return;
65        merge(sourceLayer);
66    }
67
68    @Override
69    protected void updateEnabledState() {
70        if (getEditLayer() == null) {
71            setEnabled(false);
72            return;
73        }
74        setEnabled(!LayerListDialog.getInstance().getModel().getPossibleMergeTargets(getEditLayer()).isEmpty());
75    }
76}
Note: See TracBrowser for help on using the repository browser.