Class TextraField

java.lang.Object
com.badlogic.gdx.scenes.scene2d.Actor
com.badlogic.gdx.scenes.scene2d.ui.Widget
com.github.tommyettinger.textra.TextraField
All Implemented Interfaces:
com.badlogic.gdx.scenes.scene2d.utils.Disableable, com.badlogic.gdx.scenes.scene2d.utils.Layout

public class TextraField extends com.badlogic.gdx.scenes.scene2d.ui.Widget implements com.badlogic.gdx.scenes.scene2d.utils.Disableable
A single-line text input field.
This class is alpha-quality at best right now! You should try alternatives instead of using TextraField:
When you want text entry, you should use a TextField with a BitmapFont that has its BitmapFont.BitmapFontData.markupEnabled set to false.
If you just want a span of read-only text that can be selected and copied, then use a TypingLabel with selectable set to true, use a TypingListener that checks for the event "*SELECTED", and call TypingLabel.copySelectedText() when the user requests.
NONE OF THE REST OF THIS IS ACCURATE YET.
The preferred height of a text field is the height of the TextField.TextFieldStyle.font and TextField.TextFieldStyle.background. The preferred width of a text field is 150, a relatively arbitrary size.

The text field will copy the currently selected text when ctrl+c is pressed, and paste any text in the clipboard when ctrl+v is pressed. Clipboard functionality is provided via the Clipboard interface. Currently there are two standard implementations, one for the desktop and one for Android. The Android clipboard is a stub, as copy-and-pasting on Android is not supported yet.

The text field allows you to specify an TextraField.OnscreenKeyboard for displaying a softkeyboard and piping all key events generated by the keyboard to the text field. There are two standard implementations, one for the desktop and one for Android. The desktop keyboard is a stub, as a softkeyboard is not needed on the desktop. The Android TextraField.OnscreenKeyboard implementation will bring up the default IME.

  • Field Details

    • BACKSPACE

      protected static final char BACKSPACE
      See Also:
    • CARRIAGE_RETURN

      protected static final char CARRIAGE_RETURN
      See Also:
    • NEWLINE

      protected static final char NEWLINE
      See Also:
    • TAB

      protected static final char TAB
      See Also:
    • DELETE

      protected static final char DELETE
      See Also:
    • BULLET

      public static final char BULLET
      Used as the default char to replace content when passwordMode is on.
      See Also:
    • keyRepeatInitialTime

      public static float keyRepeatInitialTime
    • keyRepeatTime

      public static float keyRepeatTime
    • text

      protected String text
    • cursor

      protected int cursor
    • selectionStart

      protected int selectionStart
    • hasSelection

      protected boolean hasSelection
    • writeEnters

      protected boolean writeEnters
    • label

      protected final TypingLabel label
    • glyphPositions

      protected final com.badlogic.gdx.utils.FloatArray glyphPositions
    • displayText

      protected String displayText
    • fontOffset

      protected float fontOffset
    • textOffset

      protected float textOffset
    • visibleTextStart

      protected int visibleTextStart
    • visibleTextEnd

      protected int visibleTextEnd
  • Constructor Details

    • TextraField

      public TextraField(@Null String text, com.badlogic.gdx.scenes.scene2d.ui.Skin skin)
    • TextraField

      public TextraField(@Null String text, com.badlogic.gdx.scenes.scene2d.ui.Skin skin, String styleName)
    • TextraField

      public TextraField(@Null String text, com.badlogic.gdx.scenes.scene2d.ui.TextField.TextFieldStyle style)
    • TextraField

      public TextraField(@Null String text, com.badlogic.gdx.scenes.scene2d.ui.TextField.TextFieldStyle style, Font replacementFont)
  • Method Details

    • setStage

      protected void setStage(com.badlogic.gdx.scenes.scene2d.Stage stage)
      Overrides:
      setStage in class com.badlogic.gdx.scenes.scene2d.Actor
    • setParent

      protected void setParent(com.badlogic.gdx.scenes.scene2d.Group parent)
      Overrides:
      setParent in class com.badlogic.gdx.scenes.scene2d.Actor
    • initialize

      protected void initialize()
    • createInputListener

      protected com.badlogic.gdx.scenes.scene2d.InputListener createInputListener()
    • isWordCharacter

      protected boolean isWordCharacter(char c)
    • isWordCharacter

      protected boolean isWordCharacter(long glyph)
    • wordUnderCursor

      protected long wordUnderCursor()
    • setMaxLength

      public void setMaxLength(int maxLength)
    • getMaxLength

      public int getMaxLength()
    • setOnlyFontChars

      public void setOnlyFontChars(boolean onlyFontChars)
      When false, text set by setText(String) may contain characters not in the font, a space will be displayed instead. When true (the default), characters not in the font are stripped by setText. Characters not in the font are always stripped when typed or pasted.
    • setStyle

      public void setStyle(com.badlogic.gdx.scenes.scene2d.ui.TextField.TextFieldStyle style)
    • getStyle

      public com.badlogic.gdx.scenes.scene2d.ui.TextField.TextFieldStyle getStyle()
      Returns the text field's style. Modifying the returned style may not have an effect until setStyle(TextFieldStyle) is called.
    • calculateOffsets

      protected void calculateOffsets()
    • getBackgroundDrawable

      @Null protected com.badlogic.gdx.scenes.scene2d.utils.Drawable getBackgroundDrawable()
    • draw

      public void draw(com.badlogic.gdx.graphics.g2d.Batch batch, float parentAlpha)
      Overrides:
      draw in class com.badlogic.gdx.scenes.scene2d.ui.Widget
    • getTextY

      protected float getTextY(Font font, @Null com.badlogic.gdx.scenes.scene2d.utils.Drawable background)
    • drawSelection

      protected void drawSelection(com.badlogic.gdx.scenes.scene2d.utils.Drawable selection, com.badlogic.gdx.graphics.g2d.Batch batch, Font font, float x, float y)
      Draws selection rectangle
    • drawCursor

      protected void drawCursor(com.badlogic.gdx.scenes.scene2d.utils.Drawable cursorPatch, com.badlogic.gdx.graphics.g2d.Batch batch, Font font, float x, float y)
    • copy

      public void copy()
      Copies the contents of this TextraField to the Clipboard implementation set on this TextraField.
    • cut

      public void cut()
      Copies the selected contents of this TextraField to the Clipboard implementation set on this TextraField, then removes it.
    • next

      public void next(boolean up)
      Sets the keyboard focus to the next TextraField. If no next text field is found, the onscreen keyboard is hidden. Does nothing if the text field is not in a stage.
      Parameters:
      up - If true, the text field with the same or next smallest y coordinate is found, else the next highest.
    • getDefaultInputListener

      public com.badlogic.gdx.scenes.scene2d.InputListener getDefaultInputListener()
    • setTextFieldListener

      public void setTextFieldListener(@Null TextraField.TextFieldListener listener)
      Parameters:
      listener - May be null.
    • setTextFieldFilter

      public void setTextFieldFilter(@Null TextraField.TextFieldFilter filter)
      Parameters:
      filter - May be null.
    • getTextFieldFilter

      @Null public TextraField.TextFieldFilter getTextFieldFilter()
    • setFocusTraversal

      public void setFocusTraversal(boolean focusTraversal)
      If true (the default), tab/shift+tab will move to the next text field.
    • getMessageText

      @Null public String getMessageText()
      Returns:
      May be null.
    • setMessageText

      public void setMessageText(@Null String messageText)
      Sets the text that will be drawn in the text field if no text has been entered.
      Parameters:
      messageText - may be null.
    • appendText

      public void appendText(@Null String str)
      Parameters:
      str - If null, "" is used.
    • setText

      public void setText(@Null String str)
      Parameters:
      str - If null, "" is used.
    • getText

      public String getText()
      Returns:
      Never null, might be an empty string.
    • setProgrammaticChangeEvents

      public void setProgrammaticChangeEvents(boolean programmaticChangeEvents)
      If false, methods that change the text will not fire ChangeListener.ChangeEvent, the event will be fired only when the user changes the text.
    • getProgrammaticChangeEvents

      public boolean getProgrammaticChangeEvents()
    • getSelectionStart

      public int getSelectionStart()
    • getSelection

      public String getSelection()
    • setSelection

      public void setSelection(int selectionStart, int selectionEnd)
      Sets the selected text.
    • selectAll

      public void selectAll()
    • clearSelection

      public void clearSelection()
    • setCursorPosition

      public void setCursorPosition(int cursorPosition)
      Sets the cursor position and clears any selection.
    • getCursorPosition

      public int getCursorPosition()
    • getOnscreenKeyboard

      public TextraField.OnscreenKeyboard getOnscreenKeyboard()
      Default is an instance of TextraField.DefaultOnscreenKeyboard.
    • setOnscreenKeyboard

      public void setOnscreenKeyboard(TextraField.OnscreenKeyboard keyboard)
    • setClipboard

      public void setClipboard(com.badlogic.gdx.utils.Clipboard clipboard)
    • getPrefWidth

      public float getPrefWidth()
      Specified by:
      getPrefWidth in interface com.badlogic.gdx.scenes.scene2d.utils.Layout
      Overrides:
      getPrefWidth in class com.badlogic.gdx.scenes.scene2d.ui.Widget
    • getPrefHeight

      public float getPrefHeight()
      Specified by:
      getPrefHeight in interface com.badlogic.gdx.scenes.scene2d.utils.Layout
      Overrides:
      getPrefHeight in class com.badlogic.gdx.scenes.scene2d.ui.Widget
    • setAlignment

      public void setAlignment(int alignment)
      Sets text horizontal alignment (left, center or right).
      See Also:
      • Align
    • getAlignment

      public int getAlignment()
    • positionChanged

      protected void positionChanged()
      Overrides:
      positionChanged in class com.badlogic.gdx.scenes.scene2d.Actor
    • sizeChanged

      protected void sizeChanged()
      Overrides:
      sizeChanged in class com.badlogic.gdx.scenes.scene2d.ui.Widget
    • act

      public void act(float delta)
      Overrides:
      act in class com.badlogic.gdx.scenes.scene2d.Actor
    • setPasswordMode

      public void setPasswordMode(boolean passwordMode)
      If true, the text in this text field will be shown as bullet characters.
      See Also:
    • isPasswordMode

      public boolean isPasswordMode()
    • setPasswordCharacter

      public void setPasswordCharacter(char passwordCharacter)
      Sets the password character for the text field. If the character is not present in the Font, this does nothing. Default is 8226 (the bullet char , Unicode 0x2022).
    • setBlinkTime

      public void setBlinkTime(float blinkTime)
    • setDisabled

      public void setDisabled(boolean disabled)
      Specified by:
      setDisabled in interface com.badlogic.gdx.scenes.scene2d.utils.Disableable
    • isDisabled

      public boolean isDisabled()
      Specified by:
      isDisabled in interface com.badlogic.gdx.scenes.scene2d.utils.Disableable
    • moveCursor

      protected void moveCursor(boolean forward, boolean jump)
    • continueCursor

      protected boolean continueCursor(int index, int offset)