X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2Fsave%2FGpsSaver.java;h=3fa66c3096146e7fb57389e6816749e61eead45c;hb=c055cf54834e2e5c32276b5b354e777ee8a828c1;hp=a9c59a8ce1e169adeb5d2c64fb9eb329023b2869;hpb=112bb0c9b46894adca9a33ed8c99ea712b253185;p=GpsPrune.git diff --git a/tim/prune/save/GpsSaver.java b/tim/prune/save/GpsSaver.java index a9c59a8..3fa66c3 100644 --- a/tim/prune/save/GpsSaver.java +++ b/tim/prune/save/GpsSaver.java @@ -6,6 +6,8 @@ import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; @@ -25,10 +27,10 @@ import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import tim.prune.App; -import tim.prune.Config; import tim.prune.ExternalTools; import tim.prune.GenericFunction; import tim.prune.I18nManager; +import tim.prune.config.Config; /** * Class to manage the loading of GPS data using GpsBabel @@ -40,6 +42,7 @@ public class GpsSaver extends GenericFunction implements Runnable private JTextField _deviceField = null, _formatField = null; private JTextField _trackNameField = null; private JCheckBox _waypointCheckbox = null, _trackCheckbox = null; + private boolean _switchedWaypointsOff = false, _switchedTrackpointsOff = false; private JButton _okButton = null; private JProgressBar _progressBar = null; private boolean _cancelled = false; @@ -82,8 +85,10 @@ public class GpsSaver extends GenericFunction implements Runnable _dialog.pack(); } // Initialise progress bars, buttons + enableCheckboxes(); enableOkButton(); setupProgressBar(true); + _trackNameField.requestFocus(); _dialog.setVisible(true); } } @@ -121,6 +126,19 @@ public class GpsSaver extends GenericFunction implements Runnable gridPanel.setAlignmentX(Component.CENTER_ALIGNMENT); gridPanel.setBorder(BorderFactory.createEmptyBorder(10, 5, 5, 20)); mainPanel.add(gridPanel); + // close dialog when escape pressed + KeyAdapter closer = new KeyAdapter() { + public void keyReleased(KeyEvent e) + { + // close dialog if escape pressed + if (e.getKeyCode() == KeyEvent.VK_ESCAPE) { + _dialog.dispose(); + } + } + }; + _deviceField.addKeyListener(closer); + _formatField.addKeyListener(closer); + _trackNameField.addKeyListener(closer); // checkboxes ChangeListener checkboxListener = new ChangeListener() { @@ -182,6 +200,42 @@ public class GpsSaver extends GenericFunction implements Runnable _progressBar.setValue(0); } + /** + * Enable or disable the waypoints and trackpoints checkboxes + */ + private void enableCheckboxes() + { + // Enable or disable waypoints checkbox depending on whether data is available + if (_waypointCheckbox.isSelected()) + { + if (!_app.getTrackInfo().getTrack().hasWaypoints()) + { + _waypointCheckbox.setSelected(false); + _switchedWaypointsOff = true; + } + else _switchedWaypointsOff = false; + } + else if (_app.getTrackInfo().getTrack().hasWaypoints() && _switchedWaypointsOff) + { + _waypointCheckbox.setSelected(true); + _switchedWaypointsOff = false; + } + // ... and the same for track points + if (_trackCheckbox.isSelected()) + { + if (!_app.getTrackInfo().getTrack().hasTrackPoints()) + { + _trackCheckbox.setSelected(false); + _switchedTrackpointsOff = true; + } + else _switchedTrackpointsOff = false; + } + else if (_app.getTrackInfo().getTrack().hasTrackPoints() && _switchedTrackpointsOff) + { + _trackCheckbox.setSelected(true); + _switchedTrackpointsOff = false; + } + } /** * Enable or disable the ok button @@ -254,11 +308,11 @@ public class GpsSaver extends GenericFunction implements Runnable Process process = Runtime.getRuntime().exec(commands); String trackName = _trackNameField.getText(); - if (trackName == null || trackName.equals("")) {trackName = "prune";} + if (trackName == null || trackName.equals("")) {trackName = "gpsprune";} // Generate the GPX file and send to the GPS OutputStreamWriter writer = new OutputStreamWriter(process.getOutputStream()); - boolean[] saveFlags = {true, true, true, true}; // export everything - GpxExporter.exportData(writer, _app.getTrackInfo().getTrack(), trackName, null, saveFlags); + boolean[] saveFlags = {true, true, true, true, false, true}; // export everything + GpxExporter.exportData(writer, _app.getTrackInfo(), trackName, null, saveFlags, null); writer.close(); // Read the error stream to see if there's a better error message there