diff --git a/forge-gui-desktop/src/main/java/forge/GuiDesktop.java b/forge-gui-desktop/src/main/java/forge/GuiDesktop.java index 787c3597ee5..d0a5ad5deb4 100644 --- a/forge-gui-desktop/src/main/java/forge/GuiDesktop.java +++ b/forge-gui-desktop/src/main/java/forge/GuiDesktop.java @@ -174,7 +174,7 @@ public class GuiDesktop implements IGuiBase { } @Override - public String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput, final List inputOptions) { + public String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput, final List inputOptions, boolean isNumeric) { return FOptionPane.showInputDialog(message, title, icon == null ? null : FSkin.getImage(icon), initialInput, inputOptions); } diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java b/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java index 9de84ba045b..4bae1a4ba06 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java +++ b/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java @@ -1110,7 +1110,7 @@ public final class CMatchUI } @Override - public String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput, final List inputOptions) { + public String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput, final List inputOptions, boolean isNumeric) { return FOptionPane.showInputDialog(message, title, icon == null ? null : FSkin.getImage(icon), initialInput, inputOptions); } diff --git a/forge-gui-mobile/src/forge/Forge.java b/forge-gui-mobile/src/forge/Forge.java index 8bcf22c421f..5f0787f8aee 100644 --- a/forge-gui-mobile/src/forge/Forge.java +++ b/forge-gui-mobile/src/forge/Forge.java @@ -4,6 +4,7 @@ import com.badlogic.gdx.Application; import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input.Keys; +import com.badlogic.gdx.Input; import com.badlogic.gdx.InputProcessor; import com.badlogic.gdx.controllers.Controller; import com.badlogic.gdx.controllers.ControllerAdapter; @@ -1069,7 +1070,7 @@ public class Forge implements ApplicationListener { System.out.println(message); } - public static void startKeyInput(KeyInputAdapter adapter) { + public static void startKeyInput(KeyInputAdapter adapter, boolean numeric) { if (keyInputAdapter == adapter) { return; } @@ -1077,7 +1078,7 @@ public class Forge implements ApplicationListener { keyInputAdapter.onInputEnd(); //make sure previous adapter is ended } keyInputAdapter = adapter; - Gdx.input.setOnscreenKeyboardVisible(true); + Gdx.input.setOnscreenKeyboardVisible(true, numeric ? Input.OnscreenKeyboardType.NumberPad : Input.OnscreenKeyboardType.Default); } public static boolean endKeyInput() { diff --git a/forge-gui-mobile/src/forge/GuiMobile.java b/forge-gui-mobile/src/forge/GuiMobile.java index 74aa2fedc0a..9b99c35fae4 100644 --- a/forge-gui-mobile/src/forge/GuiMobile.java +++ b/forge-gui-mobile/src/forge/GuiMobile.java @@ -178,11 +178,11 @@ public class GuiMobile implements IGuiBase { } @Override - public String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput, final List inputOptions) { + public String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput, final List inputOptions, boolean isNumeric) { return new WaitCallback() { @Override public void run() { - FOptionPane.showInputDialog(message, title, initialInput, inputOptions, this); + FOptionPane.showInputDialog(message, title, initialInput, inputOptions, this, isNumeric); } }.invokeAndWait(); } diff --git a/forge-gui-mobile/src/forge/screens/match/MatchController.java b/forge-gui-mobile/src/forge/screens/match/MatchController.java index acb8c490e6b..86898673586 100644 --- a/forge-gui-mobile/src/forge/screens/match/MatchController.java +++ b/forge-gui-mobile/src/forge/screens/match/MatchController.java @@ -632,8 +632,8 @@ public class MatchController extends AbstractGuiGame { } @Override - public String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput, final List inputOptions) { - return SOptionPane.showInputDialog(message, title, icon, initialInput, inputOptions); + public String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput, final List inputOptions, boolean isNumeric) { + return SOptionPane.showInputDialog(message, title, icon, initialInput, inputOptions, isNumeric); } @Override diff --git a/forge-gui-mobile/src/forge/toolbox/FOptionPane.java b/forge-gui-mobile/src/forge/toolbox/FOptionPane.java index 96dbe34a66d..cb8ddb587f3 100644 --- a/forge-gui-mobile/src/forge/toolbox/FOptionPane.java +++ b/forge-gui-mobile/src/forge/toolbox/FOptionPane.java @@ -156,17 +156,18 @@ public class FOptionPane extends FDialog { } public static void showInputDialog(final String title, final Callback callback) { - showInputDialog(null, title, "", null, callback); + showInputDialog(null, title, "", null, callback, false); } public static void showInputDialog(final String title, final T initialInput, final Callback callback) { - showInputDialog(null, title, initialInput, null, callback); + showInputDialog(null, title, initialInput, null, callback, false); } - public static void showInputDialog(final String message, final String title, final T initialInput, final List inputOptions, final Callback callback) { + public static void showInputDialog(final String message, final String title, final T initialInput, final List inputOptions, final Callback callback, final boolean isNumeric) { final FDisplayObject inputField; final FTextField txtInput; final FComboBox cbInput; if (inputOptions == null) { txtInput = new FTextField(initialInput.toString()); + txtInput.setIsNumeric(isNumeric); cbInput = null; inputField = txtInput; } diff --git a/forge-gui-mobile/src/forge/toolbox/FTextField.java b/forge-gui-mobile/src/forge/toolbox/FTextField.java index d34278952fd..2071a3258d8 100644 --- a/forge-gui-mobile/src/forge/toolbox/FTextField.java +++ b/forge-gui-mobile/src/forge/toolbox/FTextField.java @@ -52,7 +52,7 @@ public class FTextField extends FDisplayObject implements ITextField { protected FSkinFont font, renderedFont; private int alignment; private int selStart, selLength; - private boolean isEditing, readOnly; + private boolean isEditing, readOnly, isNumeric; private final FPopupMenu contextMenu = new FPopupMenu() { @Override @@ -165,6 +165,9 @@ public class FTextField extends FDisplayObject implements ITextField { public boolean isReadOnly() { return readOnly; } + public void setIsNumeric(boolean isNumeric0) { + isNumeric = isNumeric0; + } public void setReadOnly(boolean readOnly0) { readOnly = readOnly0; } @@ -353,7 +356,7 @@ public class FTextField extends FDisplayObject implements ITextField { public void onInputEnd() { endEdit(); } - }); + }, isNumeric); isEditing = true; return true; } diff --git a/forge-gui/src/main/java/forge/gamemodes/match/AbstractGuiGame.java b/forge-gui/src/main/java/forge/gamemodes/match/AbstractGuiGame.java index 626a985a302..9031e516b70 100644 --- a/forge-gui/src/main/java/forge/gamemodes/match/AbstractGuiGame.java +++ b/forge-gui/src/main/java/forge/gamemodes/match/AbstractGuiGame.java @@ -711,7 +711,7 @@ public abstract class AbstractGuiGame implements IGuiGame, IMayViewCards { } while (true) { - final String str = showInputDialog(prompt, message); + final String str = showInputDialog(prompt, message, true); if (str == null) { return null; } // that is 'cancel' @@ -772,18 +772,18 @@ public abstract class AbstractGuiGame implements IGuiGame, IMayViewCards { } @Override - public String showInputDialog(final String message, final String title) { - return showInputDialog(message, title, null, "", null); + public String showInputDialog(final String message, final String title, boolean isNumeric) { + return showInputDialog(message, title, null, "", null, isNumeric); } @Override public String showInputDialog(final String message, final String title, final FSkinProp icon) { - return showInputDialog(message, title, icon, "", null); + return showInputDialog(message, title, icon, "", null, false); } @Override public String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput) { - return showInputDialog(message, title, icon, initialInput, null); + return showInputDialog(message, title, icon, initialInput, null, false); } @Override diff --git a/forge-gui/src/main/java/forge/gamemodes/net/ProtocolMethod.java b/forge-gui/src/main/java/forge/gamemodes/net/ProtocolMethod.java index 3e9e7b57407..805a5792517 100644 --- a/forge-gui/src/main/java/forge/gamemodes/net/ProtocolMethod.java +++ b/forge-gui/src/main/java/forge/gamemodes/net/ProtocolMethod.java @@ -62,7 +62,7 @@ public enum ProtocolMethod { showErrorDialog (Mode.SERVER, Void.TYPE, String.class, String.class), showConfirmDialog (Mode.SERVER, Boolean.TYPE, String.class, String.class, String.class, String.class, Boolean.TYPE), showOptionDialog (Mode.SERVER, Integer.TYPE, String.class, String.class, FSkinProp.class, List/*String*/.class, Integer.TYPE), - showInputDialog (Mode.SERVER, String.class, String.class, String.class, FSkinProp.class, String.class, List/*String*/.class), + showInputDialog (Mode.SERVER, String.class, String.class, String.class, FSkinProp.class, String.class, List/*String*/.class, Boolean.TYPE), confirm (Mode.SERVER, Boolean.TYPE, CardView.class, String.class, Boolean.TYPE, List/*String*/.class), getChoices (Mode.SERVER, List.class, String.class, Integer.TYPE, Integer.TYPE, List.class, Object.class, Function.class), order (Mode.SERVER, List.class, String.class, String.class, Integer.TYPE, Integer.TYPE, List.class, List.class, CardView.class, Boolean.TYPE), diff --git a/forge-gui/src/main/java/forge/gamemodes/net/server/NetGuiGame.java b/forge-gui/src/main/java/forge/gamemodes/net/server/NetGuiGame.java index 3f510001ccc..424a3345e36 100644 --- a/forge-gui/src/main/java/forge/gamemodes/net/server/NetGuiGame.java +++ b/forge-gui/src/main/java/forge/gamemodes/net/server/NetGuiGame.java @@ -237,8 +237,8 @@ public class NetGuiGame extends AbstractGuiGame { } @Override - public String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput, final List inputOptions) { - return sendAndWait(ProtocolMethod.showInputDialog, message, title, icon, initialInput, inputOptions); + public String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput, final List inputOptions, final boolean isNumeric) { + return sendAndWait(ProtocolMethod.showInputDialog, message, title, icon, initialInput, inputOptions, isNumeric); } @Override diff --git a/forge-gui/src/main/java/forge/gui/interfaces/IGuiBase.java b/forge-gui/src/main/java/forge/gui/interfaces/IGuiBase.java index 8ea15a4cbd4..98920318ef1 100644 --- a/forge-gui/src/main/java/forge/gui/interfaces/IGuiBase.java +++ b/forge-gui/src/main/java/forge/gui/interfaces/IGuiBase.java @@ -36,7 +36,7 @@ public interface IGuiBase { void showBugReportDialog(String title, String text, boolean showExitAppBtn); void showImageDialog(ISkinImage image, String message, String title); int showOptionDialog(String message, String title, FSkinProp icon, List options, int defaultOption); - String showInputDialog(String message, String title, FSkinProp icon, String initialInput, List inputOptions); + String showInputDialog(String message, String title, FSkinProp icon, String initialInput, List inputOptions, boolean isNumeric); List getChoices(String message, int min, int max, Collection choices, T selected, Function display); List order(String title, String top, int remainingObjectsMin, int remainingObjectsMax, List sourceChoices, List destChoices); String showFileDialog(String title, String defaultDir); diff --git a/forge-gui/src/main/java/forge/gui/interfaces/IGuiGame.java b/forge-gui/src/main/java/forge/gui/interfaces/IGuiGame.java index 68898088528..4c22cb8dee1 100644 --- a/forge-gui/src/main/java/forge/gui/interfaces/IGuiGame.java +++ b/forge-gui/src/main/java/forge/gui/interfaces/IGuiGame.java @@ -132,13 +132,13 @@ public interface IGuiGame { int showOptionDialog(String message, String title, FSkinProp icon, List options, int defaultOption); - String showInputDialog(String message, String title); + String showInputDialog(String message, String title, boolean isNumeric); String showInputDialog(String message, String title, FSkinProp icon); String showInputDialog(String message, String title, FSkinProp icon, String initialInput); - String showInputDialog(String message, String title, FSkinProp icon, String initialInput, List inputOptions); + String showInputDialog(String message, String title, FSkinProp icon, String initialInput, List inputOptions, boolean isNumeric); boolean confirm(CardView c, String question); diff --git a/forge-gui/src/main/java/forge/gui/util/SOptionPane.java b/forge-gui/src/main/java/forge/gui/util/SOptionPane.java index 34c7fed6387..42312e9a6e9 100644 --- a/forge-gui/src/main/java/forge/gui/util/SOptionPane.java +++ b/forge-gui/src/main/java/forge/gui/util/SOptionPane.java @@ -69,19 +69,19 @@ public class SOptionPane { } public static String showInputDialog(final String message, final String title) { - return showInputDialog(message, title, null, "", null); + return showInputDialog(message, title, null, "", null, false); } public static String showInputDialog(final String message, final String title, final FSkinProp icon) { - return showInputDialog(message, title, icon, "", null); + return showInputDialog(message, title, icon, "", null, false); } public static String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput) { - return showInputDialog(message, title, icon, initialInput, null); + return showInputDialog(message, title, icon, initialInput, null, false); } - public static String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput, final List inputOptions) { - return GuiBase.getInterface().showInputDialog(message, title, icon, initialInput, inputOptions); + public static String showInputDialog(final String message, final String title, final FSkinProp icon, final String initialInput, final List inputOptions, boolean isNumeric) { + return GuiBase.getInterface().showInputDialog(message, title, icon, initialInput, inputOptions, isNumeric); } private SOptionPane() {