X-Git-Url: https://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2Fload%2Fbabel%2FSimplifyFilter.java;fp=tim%2Fprune%2Fload%2Fbabel%2FSimplifyFilter.java;h=0000000000000000000000000000000000000000;hb=ce6f2161b8596f7018d6a76bff79bc9e571f35fd;hp=1567c883dc1a60bc65f56fa0e273c0bfc48aba49;hpb=2d8cb72e84d5cc1089ce77baf1e34ea3ea2f8465;p=GpsPrune.git diff --git a/tim/prune/load/babel/SimplifyFilter.java b/tim/prune/load/babel/SimplifyFilter.java deleted file mode 100644 index 1567c88..0000000 --- a/tim/prune/load/babel/SimplifyFilter.java +++ /dev/null @@ -1,147 +0,0 @@ -package tim.prune.load.babel; - -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.GridLayout; - -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.ButtonGroup; -import javax.swing.JComboBox; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JRadioButton; - -import tim.prune.I18nManager; -import tim.prune.data.UnitSetLibrary; -import tim.prune.gui.DecimalNumberField; -import tim.prune.gui.WholeNumberField; - -/** - * Simplify filter for GPSBabel - */ -public class SimplifyFilter extends FilterDefinition -{ - /** Constructor */ - public SimplifyFilter(AddFilterDialog inFilterDialog) - { - super(inFilterDialog); - makePanelContents(); - } - - private WholeNumberField _maxPointsField = null; - private DecimalNumberField _distField = null; - private JComboBox _distUnitsCombo = null; - private JRadioButton _crossTrackRadio = null; - private JRadioButton _lengthRadio = null; - private JRadioButton _relativeRadio = null; - - - /** @return filter name */ - protected String getFilterName() { - return "simplify"; - } - - /** Make the panel contents */ - protected void makePanelContents() - { - setLayout(new BorderLayout()); - JPanel boxPanel = new JPanel(); - boxPanel.setLayout(new BoxLayout(boxPanel, BoxLayout.Y_AXIS)); - add(boxPanel, BorderLayout.NORTH); - JLabel topLabel = new JLabel(I18nManager.getText("dialog.gpsbabel.filter.simplify.intro")); - topLabel.setAlignmentX(Component.LEFT_ALIGNMENT); - boxPanel.add(topLabel); - boxPanel.add(Box.createVerticalStrut(18)); // spacer - // Main three-column grid - JPanel gridPanel = new JPanel(); - gridPanel.setLayout(new GridLayout(0, 3, 4, 4)); - gridPanel.add(new JLabel(I18nManager.getText("dialog.gpsbabel.filter.simplify.maxpoints"))); - _maxPointsField = new WholeNumberField(6); - _maxPointsField.addKeyListener(_paramChangeListener); - gridPanel.add(_maxPointsField); - gridPanel.add(new JLabel(" ")); - gridPanel.add(new JLabel(I18nManager.getText("dialog.gpsbabel.filter.simplify.maxerror"))); - _distField = new DecimalNumberField(); - _distField.addKeyListener(_paramChangeListener); - gridPanel.add(_distField); - _distUnitsCombo = new JComboBox(new String[] { - I18nManager.getText(UnitSetLibrary.UNITS_KILOMETRES.getNameKey()), - I18nManager.getText(UnitSetLibrary.UNITS_MILES.getNameKey()) - }); - gridPanel.add(_distUnitsCombo); - // radio buttons - _crossTrackRadio = new JRadioButton(I18nManager.getText("dialog.gpsbabel.filter.simplify.crosstrack")); - _crossTrackRadio.setSelected(true); - _lengthRadio = new JRadioButton(I18nManager.getText("dialog.gpsbabel.filter.simplify.length")); - _relativeRadio = new JRadioButton(I18nManager.getText("dialog.gpsbabel.filter.simplify.relative")); - ButtonGroup radioGroup = new ButtonGroup(); - radioGroup.add(_crossTrackRadio); - radioGroup.add(_lengthRadio); - radioGroup.add(_relativeRadio); - gridPanel.add(_crossTrackRadio); - gridPanel.add(_lengthRadio); - gridPanel.add(_relativeRadio); - gridPanel.setAlignmentX(Component.LEFT_ALIGNMENT); - boxPanel.add(gridPanel); - } - - /** - * @return true if the filters are valid - */ - public boolean isFilterValid() - { - final boolean countGiven = _maxPointsField.getText() != null && _maxPointsField.getText().trim().length() > 0; - final boolean distGiven = _distField.getText() != null && _distField.getText().trim().length() > 0; - if ((!countGiven && !distGiven) || (countGiven && distGiven)) { - return false; // only one or the other allowed - } - if (countGiven && _maxPointsField.getValue() <= 1) { - return false; // must have a decent max points - } - if (distGiven && _distField.getValue() <= 0.001) { - return false; // no zero or negative distances allowed - } - // must be ok - return true; - } - - /** - * @return filter parameters as a string, or null - */ - protected String getParameters() - { - if (!isFilterValid()) return null; - StringBuilder builder = new StringBuilder(); - // type - final boolean countGiven = _maxPointsField.getText() != null && _maxPointsField.getText().trim().length() > 0; - final boolean distGiven = _distField.getText() != null && _distField.getText().trim().length() > 0; - if (countGiven) { - builder.append(",count=").append(_maxPointsField.getValue()); - } - else if (distGiven) - { - double dValue = 1.0; - try { - dValue = Double.parseDouble(_distField.getText()); - } - catch (Exception e) {} // shouldn't happen, otherwise validation would have failed - builder.append(",error=").append(dValue); - // units of distance (miles by default) - if (_distUnitsCombo.getSelectedIndex() == 0) { - builder.append("k"); // nothing for miles - } - } - // three options - if (_crossTrackRadio.isSelected()) { - builder.append(",crosstrack"); // default, could not pass it - } - else if (_lengthRadio.isSelected()) { - builder.append(",length"); - } - else if (_relativeRadio.isSelected()) { - builder.append(",relative"); - } - return builder.toString(); - } -}