X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2FTField.java;h=07a457bcf7eb7beb4e05af9e71f8f782a6cc2227;hb=7c870d89433346ccb5505f8f9ba62d3fc18fe996;hp=14e93e78c0d34585e40bcda850451a7a9b1e3902;hpb=128e5be1ffb65d047d8461ea1cfb65c22686ec91;p=fanfix.git diff --git a/src/jexer/TField.java b/src/jexer/TField.java index 14e93e7..07a457b 100644 --- a/src/jexer/TField.java +++ b/src/jexer/TField.java @@ -37,21 +37,21 @@ import jexer.event.TMouseEvent; import static jexer.TKeypress.*; /** - * + * TField implements an editable text field. */ -public final class TField extends TWidget { +public class TField extends TWidget { /** * Field text. */ - private String text = ""; + protected String text = ""; /** * Get field text. * * @return field text */ - public String getText() { + public final String getText() { return text; } @@ -59,37 +59,37 @@ public final class TField extends TWidget { * If true, only allow enough characters that will fit in the width. If * false, allow the field to scroll to the right. */ - private boolean fixed = false; + protected boolean fixed = false; /** * Current editing position within text. */ - private int position = 0; + protected int position = 0; /** * Beginning of visible portion. */ - private int windowStart = 0; + protected int windowStart = 0; /** * If true, new characters are inserted at position. */ - private boolean insertMode = true; + protected boolean insertMode = true; /** * Remember mouse state. */ - private TMouseEvent mouse; + protected TMouseEvent mouse; /** * The action to perform when the user presses enter. */ - private TAction enterAction; + protected TAction enterAction; /** * The action to perform when the text is updated. */ - private TAction updateAction; + protected TAction updateAction; /** * Public constructor. @@ -139,13 +139,9 @@ public final class TField extends TWidget { final TAction enterAction, final TAction updateAction) { // Set parent and window - super(parent); - setX(x); - setY(y); - setHeight(1); - setWidth(width); - setHasCursor(true); + super(parent, x, y, width, 1); + setCursorVisible(true); this.fixed = fixed; this.text = text; this.enterAction = enterAction; @@ -157,7 +153,7 @@ public final class TField extends TWidget { * * @return if true the mouse is currently on the field */ - private boolean mouseOnField() { + protected boolean mouseOnField() { int rightEdge = getWidth() - 1; if ((mouse != null) && (mouse.getY() == 0) @@ -175,7 +171,7 @@ public final class TField extends TWidget { * @param enter if true, the user pressed Enter, else this was an update * to the text. */ - private void dispatch(final boolean enter) { + protected void dispatch(final boolean enter) { if (enter) { if (enterAction != null) { enterAction.DO(); @@ -194,7 +190,7 @@ public final class TField extends TWidget { public void draw() { CellAttributes fieldColor; - if (getAbsoluteActive()) { + if (isAbsoluteActive()) { fieldColor = getTheme().getColor("tfield.active"); } else { fieldColor = getTheme().getColor("tfield.inactive"); @@ -215,7 +211,7 @@ public final class TField extends TWidget { /** * Update the cursor position. */ - private void updateCursor() { + protected void updateCursor() { if ((position > getWidth()) && fixed) { setCursorX(getWidth()); } else if ((position - windowStart == getWidth()) && !fixed) { @@ -234,7 +230,7 @@ public final class TField extends TWidget { public void onMouseDown(final TMouseEvent mouse) { this.mouse = mouse; - if ((mouseOnField()) && (mouse.getMouse1())) { + if ((mouseOnField()) && (mouse.isMouse1())) { // Move cursor int deltaX = mouse.getX() - getCursorX(); position += deltaX; @@ -337,16 +333,16 @@ public final class TField extends TWidget { return; } - if (!keypress.getKey().getIsKey() - && !keypress.getKey().getAlt() - && !keypress.getKey().getCtrl() + if (!keypress.getKey().isFnKey() + && !keypress.getKey().isAlt() + && !keypress.getKey().isCtrl() ) { // Plain old keystroke, process it if ((position == text.length()) && (text.length() < getWidth())) { // Append case - appendChar(keypress.getKey().getCh()); + appendChar(keypress.getKey().getChar()); } else if ((position < text.length()) && (text.length() < getWidth())) { @@ -354,12 +350,12 @@ public final class TField extends TWidget { if (insertMode == false) { // Replace character text = text.substring(0, position) - + keypress.getKey().getCh() + + keypress.getKey().getChar() + text.substring(position + 1); position++; } else { // Insert character - insertChar(keypress.getKey().getCh()); + insertChar(keypress.getKey().getChar()); } } else if ((position < text.length()) && (text.length() >= getWidth())) { @@ -370,7 +366,7 @@ public final class TField extends TWidget { } else if ((fixed == true) && (insertMode == false)) { // Overwrite the last character, maybe move position text = text.substring(0, position) - + keypress.getKey().getCh() + + keypress.getKey().getChar() + text.substring(position + 1); if (position < getWidth() - 1) { position++; @@ -378,23 +374,23 @@ public final class TField extends TWidget { } else if ((fixed == false) && (insertMode == false)) { // Overwrite the last character, definitely move position text = text.substring(0, position) - + keypress.getKey().getCh() + + keypress.getKey().getChar() + text.substring(position + 1); position++; } else { if (position == text.length()) { // Append this character - appendChar(keypress.getKey().getCh()); + appendChar(keypress.getKey().getChar()); } else { // Insert this character - insertChar(keypress.getKey().getCh()); + insertChar(keypress.getKey().getChar()); } } } else { assert (!fixed); // Append this character - appendChar(keypress.getKey().getCh()); + appendChar(keypress.getKey().getChar()); } dispatch(false); return; @@ -409,7 +405,7 @@ public final class TField extends TWidget { * * @param ch = char to append */ - private void appendChar(final char ch) { + protected void appendChar(final char ch) { // Append the LAST character text += ch; position++; @@ -432,7 +428,7 @@ public final class TField extends TWidget { * * @param ch char to append */ - private void insertChar(final char ch) { + protected void insertChar(final char ch) { text = text.substring(0, position) + ch + text.substring(position); position++; if ((position - windowStart) == getWidth()) {