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

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

removed OptionPaneUtil
cleanup of deprecated Layer API
cleanup of deprecated APIs in OsmPrimitive and Way
cleanup of imports

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
54
55
56}
Note: See TracBrowser for help on using the repository browser.