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

Last change on this file since 4982 was 4982, checked in by stoecker, 12 years ago

see #7226 - patch by akks (fixed a bit) - fix shortcut deprecations

  • Property svn:eol-style set to native
File size: 2.3 KB
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.CTRL_SHIFT),
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.