+++ /dev/null
-package tim.prune.load.babel;
-
-import java.awt.BorderLayout;
-import java.awt.Component;
-import java.awt.GridLayout;
-
-import javax.swing.BorderFactory;
-import javax.swing.Box;
-import javax.swing.BoxLayout;
-import javax.swing.JCheckBox;
-import javax.swing.JComboBox;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.SwingConstants;
-import javax.swing.border.EtchedBorder;
-
-import tim.prune.I18nManager;
-import tim.prune.gui.WholeNumberField;
-
-/**
- * Discard filter for GPSBabel
- */
-public class DiscardFilter extends FilterDefinition
-{
- /** Constructor */
- public DiscardFilter(AddFilterDialog inFilterDialog)
- {
- super(inFilterDialog);
- makePanelContents();
- }
-
- private WholeNumberField _hdopField = null;
- private WholeNumberField _vdopField = null;
- private JComboBox<String> _combineDopsCombo = null;
- private WholeNumberField _numSatsField = null;
- private JCheckBox _noFixCheckbox = null;
- private JCheckBox _unknownFixCheckbox = null;
-
-
- /** @return filter name */
- protected String getFilterName() {
- return "discard";
- }
-
- /** Make the panel contents */
- protected void makePanelContents()
- {
- setLayout(new BorderLayout());
- JPanel boxPanel = new JPanel();
- boxPanel.setLayout(new BoxLayout(boxPanel, BoxLayout.Y_AXIS));
- JLabel topLabel = new JLabel(I18nManager.getText("dialog.gpsbabel.filter.discard.intro"));
- topLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
- boxPanel.add(topLabel);
- boxPanel.add(Box.createVerticalStrut(9)); // spacer
-
- JPanel boxPanel2 = new JPanel();
- boxPanel2.setLayout(new BoxLayout(boxPanel2, BoxLayout.Y_AXIS));
- // Panel for dops
- JPanel dopPanel = new JPanel();
- dopPanel.setBorder(BorderFactory.createCompoundBorder(
- BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), BorderFactory.createEmptyBorder(4, 4, 4, 4))
- );
- dopPanel.setLayout(new GridLayout(0, 3, 4, 2));
- dopPanel.add(new JLabel(I18nManager.getText("dialog.gpsbabel.filter.discard.hdop"), SwingConstants.RIGHT));
- _hdopField = new WholeNumberField(2);
- _hdopField.addKeyListener(_paramChangeListener);
- dopPanel.add(_hdopField);
- _combineDopsCombo = new JComboBox<String>(new String[] {I18nManager.getText("logic.and"), I18nManager.getText("logic.or")});
- dopPanel.add(_combineDopsCombo);
- dopPanel.add(new JLabel(I18nManager.getText("dialog.gpsbabel.filter.discard.vdop"), SwingConstants.RIGHT));
- _vdopField = new WholeNumberField(2);
- _vdopField.addKeyListener(_paramChangeListener);
- dopPanel.add(_vdopField);
- boxPanel2.add(dopPanel);
-
- // Number of satellites
- JPanel satPanel = new JPanel();
- satPanel.add(new JLabel(I18nManager.getText("dialog.gpsbabel.filter.discard.numsats")));
- _numSatsField = new WholeNumberField(2);
- _numSatsField.addKeyListener(_paramChangeListener);
- satPanel.add(_numSatsField);
- boxPanel2.add(satPanel);
-
- // Checkboxes for no fix and unknown fix
- _noFixCheckbox = new JCheckBox(I18nManager.getText("dialog.gpsbabel.filter.discard.nofix"));
- boxPanel2.add(_noFixCheckbox);
- _unknownFixCheckbox = new JCheckBox(I18nManager.getText("dialog.gpsbabel.filter.discard.unknownfix"));
- boxPanel2.add(_unknownFixCheckbox);
- boxPanel2.add(Box.createVerticalStrut(9)); // spacer
-
- boxPanel2.setAlignmentX(Component.LEFT_ALIGNMENT);
- boxPanel.add(boxPanel2);
- add(boxPanel, BorderLayout.NORTH);
-}
-
- /**
- * @return true if the filters are valid
- */
- public boolean isFilterValid()
- {
- // If values are entered, insist that they're positive (0 not valid)
- if (_hdopField.getText() != null && _hdopField.getText().length() > 0 && _hdopField.getValue() <= 0) {return false;}
- if (_vdopField.getText() != null && _vdopField.getText().length() > 0 && _vdopField.getValue() <= 0) {return false;}
- if (_numSatsField.getText() != null && _numSatsField.getText().length() > 0 && _numSatsField.getValue() <= 0) {return false;}
- // Insist that at least one value has been entered
- return _hdopField.getValue() > 0 || _vdopField.getValue() > 0 || _numSatsField.getValue() > 0;
- }
-
- /**
- * @return filter parameters as a string, or null
- */
- protected String getParameters()
- {
- if (!isFilterValid()) return null;
- StringBuilder builder = new StringBuilder();
- // hdop and vdop
- final int hdop = _hdopField.getValue();
- if (hdop > 0) {
- builder.append(",hdop=").append(hdop);
- }
- final int vdop = _vdopField.getValue();
- if (vdop > 0)
- {
- builder.append(",vdop=").append(vdop);
- if (hdop > 0 && _combineDopsCombo.getSelectedIndex() == 0) {
- builder.append(",hdopandvdop");
- }
- }
- // number of satellites
- final int numSats = _numSatsField.getValue();
- if (numSats > 0)
- {
- builder.append(",sat=").append(numSats);
- }
- // checkboxes
- if (_noFixCheckbox.isSelected()) {
- builder.append(",fixnone");
- }
- if (_unknownFixCheckbox.isSelected()) {
- builder.append(",fixunknown");
- }
- return builder.toString();
- }
-}