#27 expose messagebox type for inputbox
authorKevin Lamonte <kevin.lamonte@gmail.com>
Sun, 8 Apr 2018 18:44:38 +0000 (14:44 -0400)
committerKevin Lamonte <kevin.lamonte@gmail.com>
Sun, 8 Apr 2018 18:44:38 +0000 (14:44 -0400)
src/jexer/TApplication.java
src/jexer/TInputBox.java
src/jexer/demos/DemoMsgBoxWindow.java

index 9fa64d0703ae5d973453db0abb998661eb76fe20..7f491a5ba712dad54431dcea705128cc1eab0169 100644 (file)
@@ -2861,6 +2861,22 @@ public class TApplication implements Runnable {
         return new TInputBox(this, title, caption, text);
     }
 
+    /**
+     * Convenience function to spawn an input box.
+     *
+     * @param title window title, will be centered along the top border
+     * @param caption message to display.  Use embedded newlines to get a
+     * multi-line box.
+     * @param text initial text to seed the field with
+     * @param type one of the Type constants.  Default is Type.OK.
+     * @return the new input box
+     */
+    public final TInputBox inputBox(final String title, final String caption,
+        final String text, final TInputBox.Type type) {
+
+        return new TInputBox(this, title, caption, text, type);
+    }
+
     /**
      * Convenience function to open a terminal window.
      *
index 070f27755fb879699efdf67c5785ce4848c2971c..6ade42fb6d0cd5d70ed4fe8fd34933ec6cac4fb5 100644 (file)
@@ -69,7 +69,7 @@ public class TInputBox extends TMessageBox {
     public TInputBox(final TApplication application, final String title,
         final String caption) {
 
-        this(application, title, caption, "");
+        this(application, title, caption, "", Type.OK);
     }
 
     /**
@@ -84,7 +84,23 @@ public class TInputBox extends TMessageBox {
     public TInputBox(final TApplication application, final String title,
         final String caption, final String text) {
 
-        super(application, title, caption, Type.OK, false);
+        this(application, title, caption, text, Type.OK);
+    }
+
+    /**
+     * Public constructor.  The input box will be centered on screen.
+     *
+     * @param application TApplication that manages this window
+     * @param title window title, will be centered along the top border
+     * @param caption message to display.  Use embedded newlines to get a
+     * multi-line box.
+     * @param text initial text to seed the field with
+     * @param type one of the Type constants.  Default is Type.OK.
+     */
+    public TInputBox(final TApplication application, final String title,
+        final String caption, final String text, final Type type) {
+
+        super(application, title, caption, type, false);
 
         for (TWidget widget: getChildren()) {
             if (widget instanceof TButton) {
index 27ee79074b20fb1ca5dbec0227e490b44fa84241..b6c9404f74f9e1b02a07cc17e0fbb8bf23e04f9f 100644 (file)
@@ -59,7 +59,7 @@ public class DemoMsgBoxWindow extends TWindow {
     DemoMsgBoxWindow(final TApplication parent, final int flags) {
         // Construct a demo window.  X and Y don't matter because it
         // will be centered on screen.
-        super(parent, "Message Boxes", 0, 0, 60, 16, flags);
+        super(parent, "Message Boxes", 0, 0, 64, 18, flags);
 
         int row = 1;
 
@@ -137,7 +137,7 @@ public class DemoMsgBoxWindow extends TWindow {
         );
         row += 2;
 
-        addLabel("Input box", 1, row);
+        addLabel("Input box 1", 1, row);
         addButton("Open &input box", 35, row,
             new TAction() {
                 public void DO() {
@@ -152,6 +152,24 @@ public class DemoMsgBoxWindow extends TWindow {
                 }
             }
         );
+        row += 2;
+
+        addLabel("Input box 2", 1, row);
+        addButton("Cance&llable input box", 35, row,
+            new TAction() {
+                public void DO() {
+                    TInputBox in = getApplication().inputBox("Input Box",
+"This is an example of an InputBox.\n" +
+"\n" +
+"Note that the InputBox text can span multiple\n" +
+"lines.\n" +
+"This one has both OK and Cancel buttons.\n",
+                        "some input text", TInputBox.Type.OKCANCEL);
+                    getApplication().messageBox("Your InputBox Answer",
+                        "You entered: " + in.getText());
+                }
+            }
+        );
 
         addButton("&Close Window", (getWidth() - 14) / 2, getHeight() - 4,
             new TAction() {