X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2FTInputBox.java;h=d60d0b53f5d8b7e8bc8cadb9a41cfceebc7f2873;hb=505be508ae7d3fb48122be548b310a238cfb91eb;hp=7f030d7122b7cf78f47c58ffbd9b000a14941348;hpb=c6940ed922d1c4e06bf30fd57a50e43f0720e60c;p=fanfix.git diff --git a/src/jexer/TInputBox.java b/src/jexer/TInputBox.java index 7f030d7..d60d0b5 100644 --- a/src/jexer/TInputBox.java +++ b/src/jexer/TInputBox.java @@ -1,29 +1,27 @@ -/** +/* * Jexer - Java Text User Interface * - * License: LGPLv3 or later - * - * This module is licensed under the GNU Lesser General Public License - * Version 3. Please see the file "COPYING" in this directory for more - * information about the GNU Lesser General Public License Version 3. + * The MIT License (MIT) * - * Copyright (C) 2015 Kevin Lamonte + * Copyright (C) 2019 Kevin Lamonte * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 3 of - * the License, or (at your option) any later version. + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, see - * http://www.gnu.org/licenses/, or write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. * * @author Kevin Lamonte [kevin.lamonte@gmail.com] * @version 1 @@ -34,10 +32,9 @@ package jexer; * TInputBox is a system-modal dialog with an OK button and a text input * field. Call it like: * - *

*

  * {@code
- *     box = application.inputBox(title, caption);
+ *     box = inputBox(title, caption);
  *     if (box.getText().equals("yes")) {
  *         ... the user entered "yes", do stuff ...
  *     }
@@ -45,20 +42,33 @@ package jexer;
  * 
* */ -public final class TInputBox extends TMessageBox { +public class TInputBox extends TMessageBox { + + // ------------------------------------------------------------------------ + // Variables -------------------------------------------------------------- + // ------------------------------------------------------------------------ /** * The input field. */ private TField field; + // ------------------------------------------------------------------------ + // Constructors ----------------------------------------------------------- + // ------------------------------------------------------------------------ + /** - * Retrieve the answer text. + * Public constructor. The input box will be centered on screen. * - * @return the answer text + * @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. */ - public String getText() { - return field.getText(); + public TInputBox(final TApplication application, final String title, + final String caption) { + + this(application, title, caption, "", Type.OK); } /** @@ -68,11 +78,12 @@ public final class TInputBox extends TMessageBox { * @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 */ public TInputBox(final TApplication application, final String title, - final String caption) { + final String caption, final String text) { - this(application, title, caption, ""); + this(application, title, caption, text, Type.OK); } /** @@ -83,11 +94,12 @@ public final class TInputBox extends TMessageBox { * @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 String caption, final String text, final Type type) { - super(application, title, caption, Type.OK, false); + super(application, title, caption, type, false); for (TWidget widget: getChildren()) { if (widget instanceof TButton) { @@ -98,9 +110,29 @@ public final class TInputBox extends TMessageBox { setHeight(getHeight() + 2); field = addField(1, getHeight() - 6, getWidth() - 4, false, text); + // Set the secondaryThread to run me + getApplication().enableSecondaryEventReceiver(this); + // Yield to the secondary thread. When I come back from the // constructor response will already be set. getApplication().yield(); } + // ------------------------------------------------------------------------ + // TMessageBox ------------------------------------------------------------ + // ------------------------------------------------------------------------ + + // ------------------------------------------------------------------------ + // TInputBox -------------------------------------------------------------- + // ------------------------------------------------------------------------ + + /** + * Retrieve the answer text. + * + * @return the answer text + */ + public String getText() { + return field.getText(); + } + }