From fd38dfc31f701a0b44620659f0225fb951f5c23b Mon Sep 17 00:00:00 2001 From: Glease <4586901+Glease@users.noreply.github.com> Date: Tue, 23 Aug 2022 20:22:38 +0800 Subject: [PATCH] add tab, arrow keys and enter handling to make this nicer --- .../gui/GuiScreenConfigureChannels.java | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gtnewhorizon/structurelib/gui/GuiScreenConfigureChannels.java b/src/main/java/com/gtnewhorizon/structurelib/gui/GuiScreenConfigureChannels.java index 53de759f..60840d38 100644 --- a/src/main/java/com/gtnewhorizon/structurelib/gui/GuiScreenConfigureChannels.java +++ b/src/main/java/com/gtnewhorizon/structurelib/gui/GuiScreenConfigureChannels.java @@ -89,7 +89,7 @@ public class GuiScreenConfigureChannels extends GuiScreen implements IGuiScreen @Override public void setFocused(boolean p_146195_1_) { - if (!p_146195_1_ && isFocused()) { + if (!p_146195_1_ && isFocused() && !StringUtils.isBlank(getText())) { int result; try { result = Math.max(Integer.parseInt(getText()), 1); @@ -203,6 +203,31 @@ public class GuiScreenConfigureChannels extends GuiScreen implements IGuiScreen @Override protected void keyTyped(char aChar, int aKey) { + switch (aKey) { + case Keyboard.KEY_TAB: + if (key.isFocused()) { + key.setFocused(false); + value.setFocused(true); + } else { + key.setFocused(true); + value.setFocused(false); + } + return; + case Keyboard.KEY_RETURN: + case Keyboard.KEY_NUMPADENTER: + GuiButton add = getButtonList().get(0); + if (add.enabled) + doActionPerformed(add); + return; + case Keyboard.KEY_UP: + if (list.selectedIndex > 0) + list.setSelection(list.selectedIndex - 1); + return; + case Keyboard.KEY_DOWN: + if (list.selectedIndex < list.getNumElements() - 1) + list.setSelection(list.selectedIndex + 1); + return; + } if (key.textboxKeyTyped(aChar, aKey)) { updateButtons(); return;