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

Last change on this file since 2198 was 2198, checked in by Gubaer, 15 years ago

fixed #3249: Resolve conflicts between invisible and deleted primitives automatically

File size: 2.0 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.actions;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.awt.event.ActionEvent;
7import java.awt.event.KeyEvent;
8import java.util.List;
9
10import org.openstreetmap.josm.data.osm.DataSet;
11import org.openstreetmap.josm.data.osm.visitor.MergeSourceBuildingVisitor;
12import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
13import org.openstreetmap.josm.gui.layer.Layer;
14import org.openstreetmap.josm.gui.layer.OsmDataLayer;
15import org.openstreetmap.josm.tools.Shortcut;
16
17public class MergeSelectionAction extends AbstractMergeAction {
18 public MergeSelectionAction() {
19 super(tr("Merge selection"), "dialogs/mergedown", tr("Merge the currently selected primitives into another layer"), Shortcut
20 .registerShortcut("system:mergeselection", tr("Edit: {0}", tr("Merge selection")), KeyEvent.VK_M, Shortcut.GROUP_MENU, Shortcut.SHIFT_DEFAULT),
21 true /* register */
22 );
23 }
24
25 public void mergeSelected(DataSet source) {
26 List<Layer> targetLayers = LayerListDialog.getInstance().getModel().getPossibleMergeTargets(getEditLayer());
27 if (targetLayers.isEmpty()) {
28 warnNoTargetLayersForSourceLayer(getEditLayer());
29 return;
30 }
31 Layer targetLayer = askTargetLayer(targetLayers);
32 if (targetLayer == null)
33 return;
34 MergeSourceBuildingVisitor builder = new MergeSourceBuildingVisitor(getEditLayer().data);
35 ((OsmDataLayer)targetLayer).mergeFrom(builder.build());
36 }
37
38
39 public void actionPerformed(ActionEvent e) {
40 if (getEditLayer() == null || getEditLayer().data.getSelected().isEmpty())
41 return;
42 mergeSelected(getEditLayer().data);
43 }
44
45 @Override
46 protected void updateEnabledState() {
47 if (getEditLayer() == null) {
48 setEnabled(false);
49 return;
50 }
51 setEnabled(!getEditLayer().data.getSelected().isEmpty());
52 }
53}
Note: See TracBrowser for help on using the repository browser.