source: josm/trunk/src/org/openstreetmap/josm/actions/GpxExportAction.java@ 6267

Last change on this file since 6267 was 6084, checked in by bastiK, 11 years ago

see #8902 - add missing @Override annotations (patch by shinigami)

  • Property svn:eol-style set to native
File size: 3.5 KB
Line 
1// License: GPL. Copyright 2007 by Immanuel Scholz and others
2package org.openstreetmap.josm.actions;
3
4import static org.openstreetmap.josm.actions.SaveActionBase.createAndOpenSaveFileChooser;
5import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
6import static org.openstreetmap.josm.tools.I18n.tr;
7
8import java.awt.event.ActionEvent;
9import java.awt.event.KeyEvent;
10import java.io.File;
11import java.io.IOException;
12import java.text.MessageFormat;
13
14import javax.swing.JOptionPane;
15
16import org.openstreetmap.josm.Main;
17import org.openstreetmap.josm.gui.layer.GpxLayer;
18import org.openstreetmap.josm.gui.layer.Layer;
19import org.openstreetmap.josm.gui.layer.OsmDataLayer;
20import org.openstreetmap.josm.io.FileExporter;
21import org.openstreetmap.josm.io.GpxImporter;
22import org.openstreetmap.josm.tools.CheckParameterUtil;
23import org.openstreetmap.josm.tools.Shortcut;
24
25/**
26 * Exports data to gpx.
27 */
28public class GpxExportAction extends DiskAccessAction {
29
30 public GpxExportAction() {
31 super(tr("Export to GPX..."), "exportgpx", tr("Export the data to GPX file."),
32 Shortcut.registerShortcut("file:exportgpx", tr("Export to GPX..."), KeyEvent.VK_E, Shortcut.CTRL));
33 putValue("help", ht("/Action/GpxExport"));
34 }
35
36 /**
37 * Get the layer to export.
38 * @return The layer to export, either a {@link GpxLayer} or {@link OsmDataLayer}.
39 */
40 protected Layer getLayer() {
41 if(!Main.isDisplayingMapView())
42 return null;
43 Layer layer = Main.map.mapView.getActiveLayer();
44 return (layer instanceof GpxLayer || layer instanceof OsmDataLayer) ? layer : null;
45 }
46
47 @Override
48 public void actionPerformed(ActionEvent e) {
49 if (!isEnabled())
50 return;
51 Layer layer = getLayer();
52 if (layer == null) {
53 JOptionPane.showMessageDialog(
54 Main.parent,
55 tr("Nothing to export. Get some data first."),
56 tr("Information"),
57 JOptionPane.INFORMATION_MESSAGE
58 );
59 return;
60 }
61 export(layer);
62 }
63
64 /**
65 * Exports a layer to a file. Launches a file chooser to request the user to enter a file name.
66 *
67 * <code>layer</code> must not be null. <code>layer</code> must be an instance of
68 * {@link OsmDataLayer} or {@link GpxLayer}.
69 *
70 * @param layer the layer
71 * @exception IllegalArgumentException thrown if layer is null
72 * @exception IllegalArgumentException thrown if layer is neither an instance of {@link OsmDataLayer}
73 * nor of {@link GpxLayer}
74 */
75 public void export(Layer layer) {
76 CheckParameterUtil.ensureParameterNotNull(layer, "layer");
77 if (! (layer instanceof OsmDataLayer) && ! (layer instanceof GpxLayer))
78 throw new IllegalArgumentException(MessageFormat.format("Expected instance of OsmDataLayer or GpxLayer. Got ''{0}''.", layer.getClass().getName()));
79
80 File file = createAndOpenSaveFileChooser(tr("Export GPX file"), GpxImporter.FILE_FILTER);
81 if (file == null)
82 return;
83
84 for (FileExporter exporter : ExtensionFileFilter.exporters) {
85 if (exporter.acceptFile(file, layer)) {
86 try {
87 exporter.exportData(file, layer);
88 } catch (IOException e1) {
89 e1.printStackTrace();
90 }
91 }
92 }
93 }
94
95 /**
96 * Refreshes the enabled state
97 *
98 */
99 @Override
100 protected void updateEnabledState() {
101 setEnabled(getLayer() != null);
102 }
103}
Note: See TracBrowser for help on using the repository browser.