X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2FTPasswordField.java;fp=src%2Fjexer%2FTPasswordField.java;h=8fd29d0d8fde69e15cb35cd1361f0fcb1d7c0b01;hb=87a17f3ca4b2602c396afdbb13cccb4c1e7cbd38;hp=0000000000000000000000000000000000000000;hpb=30bd4abd2a85c162bdf0a1cc687b366345182bc1;p=fanfix.git diff --git a/src/jexer/TPasswordField.java b/src/jexer/TPasswordField.java new file mode 100644 index 0000000..8fd29d0 --- /dev/null +++ b/src/jexer/TPasswordField.java @@ -0,0 +1,125 @@ +/** + * 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; + +import jexer.bits.CellAttributes; +import jexer.bits.GraphicsChars; + +/** + * TField implements an editable text field. + */ +public final class TPasswordField extends TField { + + /** + * Public constructor. + * + * @param parent parent widget + * @param x column relative to parent + * @param y row relative to parent + * @param width visible text width + * @param fixed if true, the text cannot exceed the display width + */ + public TPasswordField(final TWidget parent, final int x, final int y, + final int width, final boolean fixed) { + + this(parent, x, y, width, fixed, "", null, null); + } + + /** + * Public constructor. + * + * @param parent parent widget + * @param x column relative to parent + * @param y row relative to parent + * @param width visible text width + * @param fixed if true, the text cannot exceed the display width + * @param text initial text, default is empty string + */ + public TPasswordField(final TWidget parent, final int x, final int y, + final int width, final boolean fixed, final String text) { + + this(parent, x, y, width, fixed, text, null, null); + } + + /** + * Public constructor. + * + * @param parent parent widget + * @param x column relative to parent + * @param y row relative to parent + * @param width visible text width + * @param fixed if true, the text cannot exceed the display width + * @param text initial text, default is empty string + * @param enterAction function to call when enter key is pressed + * @param updateAction function to call when the text is updated + */ + public TPasswordField(final TWidget parent, final int x, final int y, + final int width, final boolean fixed, final String text, + final TAction enterAction, final TAction updateAction) { + + // Set parent and window + super(parent, x, y, width, fixed, text, enterAction, updateAction); + } + + /** + * Draw the text field. + */ + @Override + public void draw() { + CellAttributes fieldColor; + + boolean showStars = false; + if (getAbsoluteActive()) { + fieldColor = getTheme().getColor("tfield.active"); + } else { + fieldColor = getTheme().getColor("tfield.inactive"); + showStars = true; + } + + int end = windowStart + getWidth(); + if (end > text.length()) { + end = text.length(); + } + + getScreen().hLineXY(0, 0, getWidth(), GraphicsChars.HATCH, fieldColor); + if (showStars) { + getScreen().hLineXY(0, 0, getWidth() - 2, '*', + fieldColor); + } else { + getScreen().putStrXY(0, 0, text.substring(windowStart, end), + fieldColor); + } + + // Fix the cursor, it will be rendered by TApplication.drawAll(). + updateCursor(); + } + +}