From ad5c2517d24c46be67a681aca741e150cd41ad53 Mon Sep 17 00:00:00 2001 From: Ben Culkin Date: Sun, 8 Nov 2020 19:11:01 -0500 Subject: Do some token splitter cleanup Cleanup somethings related to token splitters --- .../bjc/utils/gui/panels/SimpleSpinnerPanel.java | 2 +- .../bjc/utils/gui/panels/SliderInputPanel.java | 92 +++++++++++----------- .../splitter/IdentityTokenSplitter.java | 16 ++++ .../utils/parserutils/splitter/TokenSplitters.java | 9 +++ 4 files changed, 71 insertions(+), 48 deletions(-) create mode 100644 base/src/main/java/bjc/utils/parserutils/splitter/IdentityTokenSplitter.java (limited to 'base') diff --git a/base/src/main/java/bjc/utils/gui/panels/SimpleSpinnerPanel.java b/base/src/main/java/bjc/utils/gui/panels/SimpleSpinnerPanel.java index 8ca6f2b..406929a 100644 --- a/base/src/main/java/bjc/utils/gui/panels/SimpleSpinnerPanel.java +++ b/base/src/main/java/bjc/utils/gui/panels/SimpleSpinnerPanel.java @@ -8,7 +8,7 @@ import javax.swing.JSpinner; import javax.swing.SpinnerModel; /** - * A simple spinner control + * A simple spinner control alongside a label * * @author ben * diff --git a/base/src/main/java/bjc/utils/gui/panels/SliderInputPanel.java b/base/src/main/java/bjc/utils/gui/panels/SliderInputPanel.java index 835513a..dacba42 100644 --- a/base/src/main/java/bjc/utils/gui/panels/SliderInputPanel.java +++ b/base/src/main/java/bjc/utils/gui/panels/SliderInputPanel.java @@ -9,6 +9,7 @@ import javax.swing.JPanel; import javax.swing.JSlider; import bjc.utils.gui.layout.HLayout; +import bjc.utils.gui.panels.SliderInputPanel.*; /** * A simple input panel for a slider-controlled value and a manual-input field @@ -18,51 +19,6 @@ import bjc.utils.gui.layout.HLayout; * */ public class SliderInputPanel extends JPanel { - private final class NumberFormatter extends JFormattedTextField.AbstractFormatter { - private static final long serialVersionUID = -4448291795913908270L; - - private final int minValue; - private final int maxValue; - - private final int initValue; - - public NumberFormatter(final SliderSettings settings) { - minValue = settings.minValue; - maxValue = settings.maxValue; - - initValue = settings.initValue; - } - - @Override - public Object stringToValue(final String text) throws ParseException { - try { - final int val = Integer.parseInt(text); - - if (val < minValue) - throw new ParseException("Value must be greater than " + minValue, 0); - else if (val > maxValue) - throw new ParseException("Value must be smaller than " + maxValue, 0); - else - return val; - } catch (final NumberFormatException nfex) { - final ParseException pex - = new ParseException("Value must be a valid integer", 0); - - pex.initCause(nfex); - - throw pex; - } - } - - @Override - public String valueToString(final Object value) throws ParseException { - if (value == null) - return Integer.toString(initValue); - - return Integer.toString((Integer) value); - } - } - /** * Represents the settings for a slider * @@ -104,7 +60,7 @@ public class SliderInputPanel extends JPanel { * @param max * The maximum slider value * @param init - * Th initial slider value + * The initial slider value */ public SliderSettings(final int min, final int max, final int init) { minValue = min; @@ -153,7 +109,6 @@ public class SliderInputPanel extends JPanel { final int val = slider.getValue(); field.setValue(val); - action.accept(val); } }); @@ -187,3 +142,46 @@ public class SliderInputPanel extends JPanel { field.setValue(value); } } + +final class NumberFormatter extends JFormattedTextField.AbstractFormatter { + private static final long serialVersionUID = -4448291795913908270L; + + private final int minValue; + private final int maxValue; + + private final int initValue; + + public NumberFormatter(final SliderSettings settings) { + minValue = settings.minValue; + maxValue = settings.maxValue; + + initValue = settings.initValue; + } + + @Override + public Object stringToValue(final String text) throws ParseException { + try { + final int val = Integer.parseInt(text); + + if (val < minValue) throw new ParseException( + "Value must be greater than " + minValue, 0); + else if (val > maxValue) throw new ParseException( + "Value must be smaller than " + maxValue, 0); + else return val; + } catch (final NumberFormatException nfex) { + final ParseException pex + = new ParseException("Value must be a valid integer", 0); + + pex.initCause(nfex); + + throw pex; + } + } + + @Override + public String valueToString(final Object value) throws ParseException { + if (value == null) return Integer.toString(initValue); + + return Integer.toString((Integer) value); + } +} diff --git a/base/src/main/java/bjc/utils/parserutils/splitter/IdentityTokenSplitter.java b/base/src/main/java/bjc/utils/parserutils/splitter/IdentityTokenSplitter.java new file mode 100644 index 0000000..6be0e7f --- /dev/null +++ b/base/src/main/java/bjc/utils/parserutils/splitter/IdentityTokenSplitter.java @@ -0,0 +1,16 @@ +package bjc.utils.parserutils.splitter; + +import bjc.funcdata.*; + +/** + * The token splitter that doesn't actually perform any splitting. + * + * @author Ben Culkin + * + */ +public class IdentityTokenSplitter implements TokenSplitter { + @Override + public IList split(String input) { + return new FunctionalList<>(input); + } +} diff --git a/base/src/main/java/bjc/utils/parserutils/splitter/TokenSplitters.java b/base/src/main/java/bjc/utils/parserutils/splitter/TokenSplitters.java index 15d6b8b..4aed8f6 100644 --- a/base/src/main/java/bjc/utils/parserutils/splitter/TokenSplitters.java +++ b/base/src/main/java/bjc/utils/parserutils/splitter/TokenSplitters.java @@ -24,6 +24,15 @@ public class TokenSplitters { return cts; } + /** + * Create a new identity token splitter, which doesn't actually do any splitting. + * + * @return A new identity splitter. + */ + public static TokenSplitter identitySplitter() { + return new IdentityTokenSplitter(); + } + /** * Create a new transforming token splitter. * -- cgit v1.2.3