source: josm/trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java@ 14129

Last change on this file since 14129 was 14129, checked in by Don-vip, 6 years ago

code refactoring

  • Property svn:eol-style set to native
File size: 3.0 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.layer.gpx;
3
4import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
5import static org.openstreetmap.josm.tools.I18n.tr;
6
7import java.awt.GridBagLayout;
8import java.awt.event.ActionEvent;
9import java.io.File;
10
11import javax.swing.AbstractAction;
12import javax.swing.JLabel;
13import javax.swing.JOptionPane;
14import javax.swing.JPanel;
15
16import org.openstreetmap.josm.Main;
17import org.openstreetmap.josm.data.osm.DataSet;
18import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
19import org.openstreetmap.josm.gui.MainApplication;
20import org.openstreetmap.josm.gui.layer.Layer;
21import org.openstreetmap.josm.gui.layer.OsmDataLayer;
22import org.openstreetmap.josm.gui.widgets.UrlLabel;
23import org.openstreetmap.josm.spi.preferences.Config;
24import org.openstreetmap.josm.tools.GBC;
25import org.openstreetmap.josm.tools.ImageProvider;
26
27/**
28 * An abstract action for a conversion from a {@code T} {@link Layer} to a {@link OsmDataLayer}.
29 * @param <T> the source layer class
30 */
31public abstract class ConvertToDataLayerAction<T extends Layer> extends AbstractAction {
32 /** source layer */
33 protected final transient T layer;
34
35 /**
36 * Constructs a new {@code ConvertToDataLayerAction}
37 * @param layer source layer
38 */
39 protected ConvertToDataLayerAction(final T layer) {
40 super(tr("Convert to data layer"));
41 new ImageProvider("converttoosm").getResource().attachImageIcon(this, true);
42 this.layer = layer;
43 putValue("help", ht("/Action/ConvertToDataLayer"));
44 }
45
46 /**
47 * Performs the conversion to a {@link DataSet}.
48 * @return the resulting dataset
49 */
50 public abstract DataSet convert();
51
52 @Override
53 public void actionPerformed(ActionEvent e) {
54 JPanel msg = new JPanel(new GridBagLayout());
55 msg.add(new JLabel(
56 tr("<html>Upload of unprocessed GPS data as map data is considered harmful.<br>"
57 + "If you want to upload traces, look here:</html>")),
58 GBC.eol());
59 msg.add(new UrlLabel(Config.getUrls().getOSMWebsite() + "/traces", 2), GBC.eop());
60 if (!ConditionalOptionPaneUtil.showConfirmationDialog("convert_to_data", Main.parent, msg, tr("Warning"),
61 JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE, JOptionPane.OK_OPTION)) {
62 return;
63 }
64 final DataSet ds = convert();
65 if (ds != null) {
66 final OsmDataLayer osmLayer = new OsmDataLayer(ds, tr("Converted from: {0}", layer.getName()), null);
67 if (layer.getAssociatedFile() != null) {
68 osmLayer.setAssociatedFile(new File(layer.getAssociatedFile().getParentFile(),
69 layer.getAssociatedFile().getName() + ".osm"));
70 }
71 osmLayer.setUploadDiscouraged(true);
72 MainApplication.getLayerManager().addLayer(osmLayer, false);
73 MainApplication.getLayerManager().removeLayer(layer);
74 }
75 }
76}
Note: See TracBrowser for help on using the repository browser.