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

Last change on this file since 2684 was 2512, checked in by stoecker, 14 years ago

i18n updated, fixed files to reduce problems when applying patches, fix #4017

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.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 public void actionPerformed(ActionEvent e) {
43 if (getEditLayer() == null || getEditLayer().data.getSelected().isEmpty())
44 return;
45 mergeSelected(getEditLayer().data);
46 }
47
48 @Override
49 protected void updateEnabledState() {
50 if (getCurrentDataSet() == null) {
51 setEnabled(false);
52 } else {
53 updateEnabledState(getCurrentDataSet().getSelected());
54 }
55 }
56
57 @Override
58 protected void updateEnabledState(Collection<? extends OsmPrimitive> selection) {
59 setEnabled(selection != null && !selection.isEmpty());
60 }
61}
Note: See TracBrowser for help on using the repository browser.