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

Last change on this file since 2491 was 2323, checked in by Gubaer, 14 years ago

Added explicit help topics
See also current list of help topics with links to source files and to help pages

File size: 2.4 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.actions;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
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 primitives into another layer"), Shortcut
23 .registerShortcut("system:mergeselection", tr("Edit: {0}", tr("Merge selection")), KeyEvent.VK_M, Shortcut.GROUP_MENU, Shortcut.SHIFT_DEFAULT),
24 true /* register */
25 );
26 putValue("help", ht("/Action/MergeSelection"));
27 }
28
29 public void mergeSelected(DataSet source) {
30 List<Layer> targetLayers = LayerListDialog.getInstance().getModel().getPossibleMergeTargets(getEditLayer());
31 if (targetLayers.isEmpty()) {
32 warnNoTargetLayersForSourceLayer(getEditLayer());
33 return;
34 }
35 Layer targetLayer = askTargetLayer(targetLayers);
36 if (targetLayer == null)
37 return;
38 MergeSourceBuildingVisitor builder = new MergeSourceBuildingVisitor(getEditLayer().data);
39 ((OsmDataLayer)targetLayer).mergeFrom(builder.build());
40 }
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.