From 4deb374a7f6e6cdc78a46f163dfb39dcb5e8768b Mon Sep 17 00:00:00 2001 From: johni0702 Date: Fri, 20 Jan 2017 16:16:01 +0100 Subject: [PATCH] Enable validation on focus change for all number input fields --- .../replaymod/editor/gui/GuiTrimPanel.java | 20 +++++++++++-------- .../render/gui/GuiRenderSettings.java | 6 +++--- .../gui/overlay/GuiEditMarkerPopup.java | 18 ++++++++++------- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/replaymod/editor/gui/GuiTrimPanel.java b/src/main/java/com/replaymod/editor/gui/GuiTrimPanel.java index ae5fd79e..fda001f1 100644 --- a/src/main/java/com/replaymod/editor/gui/GuiTrimPanel.java +++ b/src/main/java/com/replaymod/editor/gui/GuiTrimPanel.java @@ -39,6 +39,10 @@ import static com.replaymod.editor.ReplayModEditor.LOGGER; import static java.util.Optional.ofNullable; public class GuiTrimPanel extends GuiPanel { + private static GuiNumberField newGuiNumberField() { + return new GuiNumberField().setMaxLength(2).setSize(20, 20).setValidateOnFocusChange(true); + } + // Special value indicating no replay files were found private static final File NO_REPLAY = new File("."); // Special value for the initial "Select Marker Keyframe" entry @@ -50,16 +54,16 @@ public class GuiTrimPanel extends GuiPanel { .setMinSize(new Dimension(200, 20)).onSelection(i -> updateSelectedReplay()) .setToString(f -> f == NO_REPLAY ? "" : FilenameUtils.getBaseName(f.getName())); - public final GuiNumberField startHour = new GuiNumberField().setSize(20, 20).setMaxLength(2); - public final GuiNumberField startMin = new GuiNumberField().setSize(20, 20).setMaxLength(2); - public final GuiNumberField startSec = new GuiNumberField().setSize(20, 20).setMaxLength(2); - public final GuiNumberField startMilli = new GuiNumberField().setSize(40, 20).setMaxLength(4); + public final GuiNumberField startHour = newGuiNumberField(); + public final GuiNumberField startMin = newGuiNumberField(); + public final GuiNumberField startSec = newGuiNumberField(); + public final GuiNumberField startMilli = newGuiNumberField().setSize(40, 20).setMaxLength(4); public final GuiDropdownMenu startMarker = new GuiDropdownMenu<>(); - public final GuiNumberField endHour = new GuiNumberField().setSize(20, 20).setMaxLength(2); - public final GuiNumberField endMin = new GuiNumberField().setSize(20, 20).setMaxLength(2); - public final GuiNumberField endSec = new GuiNumberField().setSize(20, 20).setMaxLength(2); - public final GuiNumberField endMilli = new GuiNumberField().setSize(40, 20).setMaxLength(4); + public final GuiNumberField endHour = newGuiNumberField(); + public final GuiNumberField endMin = newGuiNumberField(); + public final GuiNumberField endSec = newGuiNumberField(); + public final GuiNumberField endMilli = newGuiNumberField().setSize(40, 20).setMaxLength(4); public final GuiDropdownMenu endMarker = new GuiDropdownMenu<>(); public final GuiPanel timePanel = new GuiPanel(this) diff --git a/src/main/java/com/replaymod/render/gui/GuiRenderSettings.java b/src/main/java/com/replaymod/render/gui/GuiRenderSettings.java index 14cd84fc..3c2faa88 100644 --- a/src/main/java/com/replaymod/render/gui/GuiRenderSettings.java +++ b/src/main/java/com/replaymod/render/gui/GuiRenderSettings.java @@ -80,8 +80,8 @@ public class GuiRenderSettings extends GuiScreen implements Closeable { } }).setMinSize(new Dimension(0, 20)).setValues(RenderSettings.EncodingPreset.values()); - public final GuiNumberField videoWidth = new GuiNumberField().setSize(50, 20).setMinValue(1); - public final GuiNumberField videoHeight = new GuiNumberField().setSize(50, 20).setMinValue(1); + public final GuiNumberField videoWidth = new GuiNumberField().setSize(50, 20).setMinValue(1).setValidateOnFocusChange(true); + public final GuiNumberField videoHeight = new GuiNumberField().setSize(50, 20).setMinValue(1).setValidateOnFocusChange(true); public final GuiSlider frameRateSlider = new GuiSlider().onValueChanged(new Runnable() { @Override public void run() { @@ -93,7 +93,7 @@ public class GuiRenderSettings extends GuiScreen implements Closeable { .setLayout(new HorizontalLayout(HorizontalLayout.Alignment.RIGHT).setSpacing(2)) .addElements(new HorizontalLayout.Data(0.5), videoWidth, new GuiLabel().setText("*"), videoHeight); - public final GuiNumberField bitRateField = new GuiNumberField().setValue(10).setSize(50, 20); + public final GuiNumberField bitRateField = new GuiNumberField().setValue(10).setSize(50, 20).setValidateOnFocusChange(true); public final GuiDropdownMenu bitRateUnit = new GuiDropdownMenu() .setSize(50, 20).setValues("bps", "kbps", "mbps").setSelected("mbps"); diff --git a/src/main/java/com/replaymod/replay/gui/overlay/GuiEditMarkerPopup.java b/src/main/java/com/replaymod/replay/gui/overlay/GuiEditMarkerPopup.java index 23e9e5b5..cc94f3cc 100644 --- a/src/main/java/com/replaymod/replay/gui/overlay/GuiEditMarkerPopup.java +++ b/src/main/java/com/replaymod/replay/gui/overlay/GuiEditMarkerPopup.java @@ -16,6 +16,10 @@ import org.lwjgl.input.Keyboard; import org.lwjgl.util.ReadablePoint; public class GuiEditMarkerPopup extends AbstractGuiPopup implements Typeable { + private static GuiNumberField newGuiNumberField() { + return new GuiNumberField().setSize(150, 20).setValidateOnFocusChange(true); + } + private final ReplayHandler replayHandler; private final Marker marker; @@ -23,15 +27,15 @@ public class GuiEditMarkerPopup extends AbstractGuiPopup imp public final GuiTextField nameField = new GuiTextField().setSize(150, 20); // TODO: Replace with a min/sec/msec field - public final GuiNumberField timeField = new GuiNumberField().setSize(150, 20).setPrecision(0); + public final GuiNumberField timeField = newGuiNumberField().setPrecision(0); - public final GuiNumberField xField = new GuiNumberField().setSize(150, 20).setPrecision(10); - public final GuiNumberField yField = new GuiNumberField().setSize(150, 20).setPrecision(10); - public final GuiNumberField zField = new GuiNumberField().setSize(150, 20).setPrecision(10); + public final GuiNumberField xField = newGuiNumberField().setPrecision(10); + public final GuiNumberField yField = newGuiNumberField().setPrecision(10); + public final GuiNumberField zField = newGuiNumberField().setPrecision(10); - public final GuiNumberField yawField = new GuiNumberField().setSize(150, 20).setPrecision(5); - public final GuiNumberField pitchField = new GuiNumberField().setSize(150, 20).setPrecision(5); - public final GuiNumberField rollField = new GuiNumberField().setSize(150, 20).setPrecision(5); + public final GuiNumberField yawField = newGuiNumberField().setPrecision(5); + public final GuiNumberField pitchField = newGuiNumberField().setPrecision(5); + public final GuiNumberField rollField = newGuiNumberField().setPrecision(5); public final GuiPanel inputs = GuiPanel.builder() .layout(new GridLayout().setColumns(2).setSpacingX(7).setSpacingY(3))