/** * 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. * * Copyright (C) 2015 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. * * 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. * * 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 * * @author Kevin Lamonte [kevin.lamonte@gmail.com] * @version 1 */ 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); * if (box.getText().equals("yes")) { * ... the user entered "yes", do stuff ... * } * } ** */ public final class TInputBox extends TMessageBox { /** * The input field. */ private TField field; /** * Retrieve the answer text. * * @return the answer text */ public String getText() { return field.getText(); } /** * 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. */ public TInputBox(final TApplication application, final String title, final String caption) { this(application, title, caption, ""); } /** * 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 */ public TInputBox(final TApplication application, final String title, final String caption, final String text) { super(application, title, caption, Type.OK, false); for (TWidget widget: getChildren()) { if (widget instanceof TButton) { widget.setY(widget.getY() + 2); } } setHeight(getHeight() + 2); field = addField(1, getHeight() - 6, getWidth() - 4, false, text); // Yield to the secondary thread. When I come back from the // constructor response will already be set. getApplication().yield(); } }