+++ /dev/null
-package tim.prune.load;
-
-import java.awt.BorderLayout;
-import java.awt.Component;
-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 javax.swing.BorderFactory;
-import javax.swing.BoxLayout;
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JProgressBar;
-import javax.swing.JTextField;
-import javax.swing.SwingConstants;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-
-import tim.prune.App;
-import tim.prune.I18nManager;
-import tim.prune.config.Config;
-import tim.prune.data.SourceInfo;
-import tim.prune.data.SourceInfo.FILE_TYPE;
-import tim.prune.load.babel.BabelFilterPanel;
-
-/**
- * Class to manage the loading of data from a GPS device using GpsBabel
- */
-public class BabelLoadFromGps extends BabelLoader
-{
- // Text fields for entering device and format
- private JTextField _deviceField = null, _formatField = null;
-
-
- /**
- * Constructor
- * @param inApp Application object to inform of data load
- */
- public BabelLoadFromGps(App inApp) {
- super(inApp);
- }
-
- /** Get the name key */
- public String getNameKey() {
- return "function.loadfromgps";
- }
-
- /** @return device name as file path */
- protected String getFilePath() {
- return _deviceField.getText();
- }
-
- /** @return Source info */
- protected SourceInfo getSourceInfo() {
- return new SourceInfo(_deviceField.getText(), FILE_TYPE.GPSBABEL);
- }
-
- /** @return input format */
- protected String getInputFormat() {
- return _formatField.getText();
- }
-
- /** @return true if function can be run */
- protected boolean isInputOk() {
- return _waypointCheckbox.isSelected() || _trackCheckbox.isSelected();
- }
-
- /**
- * @return a panel containing the main dialog components
- */
- protected JPanel makeDialogComponents()
- {
- JPanel outerPanel = new JPanel();
- outerPanel.setLayout(new BorderLayout());
- // Main panel with options etc
- JPanel mainPanel = new JPanel();
- mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
-
- // text fields for options
- JPanel gridPanel = new JPanel();
- gridPanel.setLayout(new GridLayout(0, 2, 10, 3));
- JLabel deviceLabel = new JLabel(I18nManager.getText("dialog.gpsload.device"));
- deviceLabel.setHorizontalAlignment(SwingConstants.RIGHT);
- gridPanel.add(deviceLabel);
- _deviceField = new JTextField(Config.getConfigString(Config.KEY_GPS_DEVICE), 12);
- KeyAdapter escapeListener = new KeyAdapter() {
- public void keyReleased(KeyEvent e)
- {
- // close dialog if escape pressed
- if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
- _dialog.dispose();
- }
- }
- };
- _deviceField.addKeyListener(escapeListener);
- gridPanel.add(_deviceField);
- JLabel formatLabel = new JLabel(I18nManager.getText("dialog.gpsload.format"));
- formatLabel.setHorizontalAlignment(SwingConstants.RIGHT);
- gridPanel.add(formatLabel);
- _formatField = new JTextField(Config.getConfigString(Config.KEY_GPS_FORMAT), 12);
- _formatField.addKeyListener(escapeListener);
- gridPanel.add(_formatField);
- gridPanel.setAlignmentX(Component.CENTER_ALIGNMENT);
- gridPanel.setBorder(BorderFactory.createEmptyBorder(10, 5, 5, 20));
- mainPanel.add(gridPanel);
-
- // checkboxes
- ChangeListener checkboxListener = new ChangeListener() {
- public void stateChanged(ChangeEvent e)
- {
- enableOkButton();
- }
- };
- _waypointCheckbox = new JCheckBox(I18nManager.getText("dialog.gpsload.getwaypoints"), true);
- _waypointCheckbox.addChangeListener(checkboxListener);
- _waypointCheckbox.setAlignmentX(Component.CENTER_ALIGNMENT);
- mainPanel.add(_waypointCheckbox);
- _trackCheckbox = new JCheckBox(I18nManager.getText("dialog.gpsload.gettracks"), true);
- _trackCheckbox.addChangeListener(checkboxListener);
- _trackCheckbox.setAlignmentX(Component.CENTER_ALIGNMENT);
- mainPanel.add(_trackCheckbox);
- // Checkbox for immediately saving to file
- _saveCheckbox = new JCheckBox(I18nManager.getText("dialog.gpsload.save"));
- _saveCheckbox.setAlignmentX(Component.CENTER_ALIGNMENT);
- mainPanel.add(_saveCheckbox);
-
- // Filter panel
- _filterPanel = new BabelFilterPanel(_parentFrame);
- // Give filter panel the contents of the config
- String filter = Config.getConfigString(Config.KEY_GPSBABEL_FILTER);
- if (filter != null) {
- _filterPanel.setFilterString(filter);
- }
- mainPanel.add(_filterPanel);
-
- // progress bar (initially invisible)
- _progressBar = new JProgressBar(0, 10);
- mainPanel.add(_progressBar);
- outerPanel.add(mainPanel, BorderLayout.NORTH);
-
- // Lower panel with ok and cancel buttons
- JPanel buttonPanel = new JPanel();
- buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
- _okButton = new JButton(I18nManager.getText("button.ok"));
- ActionListener okListener = new ActionListener() {
- public void actionPerformed(ActionEvent e)
- {
- // start thread to call gpsbabel
- _cancelled = false;
- new Thread(BabelLoadFromGps.this).start();
- }
- };
- _okButton.addActionListener(okListener);
- _deviceField.addActionListener(okListener);
- _formatField.addActionListener(okListener);
- buttonPanel.add(_okButton);
- JButton cancelButton = new JButton(I18nManager.getText("button.cancel"));
- cancelButton.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e)
- {
- _cancelled = true;
- _dialog.dispose();
- }
- });
- buttonPanel.add(cancelButton);
- outerPanel.add(buttonPanel, BorderLayout.SOUTH);
- return outerPanel;
- }
-
- /**
- * Save GPS settings in config
- */
- protected void saveConfigValues()
- {
- final String device = _deviceField.getText().trim();
- final String format = _formatField.getText().trim();
- final String filter = _filterPanel.getFilterString();
- Config.setConfigString(Config.KEY_GPS_DEVICE, device);
- Config.setConfigString(Config.KEY_GPS_FORMAT, format);
- Config.setConfigString(Config.KEY_GPSBABEL_FILTER, filter);
- }
-}