source: josm/trunk/src/org/openstreetmap/josm/actions/MergeLayerAction.java@ 2695

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

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

File size: 1.9 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.List;
10
11import org.openstreetmap.josm.Main;
12import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
13import org.openstreetmap.josm.gui.layer.Layer;
14import org.openstreetmap.josm.tools.Shortcut;
15
16public class MergeLayerAction extends AbstractMergeAction {
17
18 public MergeLayerAction() {
19 super(tr("Merge layer"), "dialogs/mergedown", tr("Merge the current layer into another layer"), Shortcut
20 .registerShortcut("system:merge", tr("Edit: {0}", tr("Merge")), KeyEvent.VK_M, Shortcut.GROUP_MENU),
21 true /* register */
22 );
23 putValue("help", ht("/Action/MergeLayer"));
24 }
25
26 public void merge(Layer sourceLayer) {
27 if (sourceLayer == null)
28 return;
29 List<Layer> targetLayers = LayerListDialog.getInstance().getModel().getPossibleMergeTargets(sourceLayer);
30 if (targetLayers.isEmpty()) {
31 warnNoTargetLayersForSourceLayer(sourceLayer);
32 return;
33 }
34 Layer targetLayer = askTargetLayer(targetLayers);
35 if (targetLayer == null)
36 return;
37 targetLayer.mergeFrom(sourceLayer);
38 Main.map.mapView.removeLayer(sourceLayer);
39 Main.map.mapView.setActiveLayer(targetLayer);
40 }
41
42 public void actionPerformed(ActionEvent e) {
43 Layer sourceLayer = Main.main.getEditLayer();
44 if (sourceLayer == null)
45 return;
46 merge(sourceLayer);
47 }
48
49 @Override
50 protected void updateEnabledState() {
51 if (getEditLayer() == null) {
52 setEnabled(false);
53 return;
54 }
55 setEnabled(!LayerListDialog.getInstance().getModel().getPossibleMergeTargets(getEditLayer()).isEmpty());
56 }
57}
Note: See TracBrowser for help on using the repository browser.