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

Revision 4836, 2.3 KB checked in by stoecker, 3 weeks ago (diff)

make Shortcut parsing easier

  • 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.Collection;
10import java.util.List;
11
12import org.openstreetmap.josm.data.osm.DataSet;
13import org.openstreetmap.josm.data.osm.OsmPrimitive;
14import org.openstreetmap.josm.data.osm.visitor.MergeSourceBuildingVisitor;
15import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
16import org.openstreetmap.josm.gui.layer.Layer;
17import org.openstreetmap.josm.gui.layer.OsmDataLayer;
18import org.openstreetmap.josm.tools.Shortcut;
19
20public class MergeSelectionAction extends AbstractMergeAction {
21    public MergeSelectionAction() {
22        super(tr("Merge selection"), "dialogs/mergedown", tr("Merge the currently selected objects into another layer"),
23            Shortcut.registerShortcut("system:mergeselection", tr("Edit: {0}", tr("Merge selection")),
24            KeyEvent.VK_M, Shortcut.GROUP_MENU, Shortcut.SHIFT_DEFAULT),
25            true /* register */
26        );
27        putValue("help", ht("/Action/MergeSelection"));
28    }
29
30    public void mergeSelected(DataSet source) {
31        List<Layer> targetLayers = LayerListDialog.getInstance().getModel().getPossibleMergeTargets(getEditLayer());
32        if (targetLayers.isEmpty()) {
33            warnNoTargetLayersForSourceLayer(getEditLayer());
34            return;
35        }
36        Layer targetLayer = askTargetLayer(targetLayers);
37        if (targetLayer == null)
38            return;
39        MergeSourceBuildingVisitor builder = new MergeSourceBuildingVisitor(getEditLayer().data);
40        ((OsmDataLayer)targetLayer).mergeFrom(builder.build());
41    }
42
43    public void actionPerformed(ActionEvent e) {
44        if (getEditLayer() == null || getEditLayer().data.getSelected().isEmpty())
45            return;
46        mergeSelected(getEditLayer().data);
47    }
48
49    @Override
50    protected void updateEnabledState() {
51        if (getCurrentDataSet() == null) {
52            setEnabled(false);
53        } else {
54            updateEnabledState(getCurrentDataSet().getSelected());
55        }
56    }
57
58    @Override
59    protected void updateEnabledState(Collection<? extends OsmPrimitive> selection) {
60        setEnabled(selection != null && !selection.isEmpty());
61    }
62}
Note: See TracBrowser for help on using the repository browser.