All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.lessvoid.nifty.controls.textfield.TextFieldInputMapping Maven / Gradle / Ivy

There is a newer version: 1.4.3
Show newest version
package de.lessvoid.nifty.controls.textfield;

import de.lessvoid.nifty.input.NiftyInputMapping;
import de.lessvoid.nifty.input.NiftyStandardInputEvent;
import de.lessvoid.nifty.input.keyboard.KeyboardInputEvent;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

/**
 * The input mapping for the {@link de.lessvoid.nifty.controls.TextField}.
 *
 * @author void
 * @author Martin Karing <[email protected]>
 */
public class TextFieldInputMapping implements NiftyInputMapping {
  /**
   * Convert a keyboard input event to a {@link NiftyStandardInputEvent}.
   *
   * @param inputEvent the keyboard input event that needs to be converted
   * @return the {@link NiftyStandardInputEvent} that is assigned to the keyboard event or {@code null} in case no
   * event is
   * assigned
   */
  @Nullable
  @Override
  public NiftyStandardInputEvent convert(@Nonnull final KeyboardInputEvent inputEvent) {
    if (inputEvent.isKeyDown()) {
      return handleKeyDownEvent(inputEvent);
    } else {
      return handleKeyUpEvent(inputEvent);
    }
  }

  /**
   * Translate a keyboard down event to a {@link NiftyStandardInputEvent} regarding the button that was used at this
   * event.
   *
   * @param inputEvent the keyboard input event that needs translation
   * @return {@link NiftyStandardInputEvent} that is assigned to the keyboard event or {@code null} in case no event is
   * assigned
   */
  @Nullable
  private static NiftyStandardInputEvent handleKeyDownEvent(@Nonnull final KeyboardInputEvent inputEvent) {
    switch (inputEvent.getKey()) {
      case KeyboardInputEvent.KEY_UP:
        return NiftyStandardInputEvent.MoveCursorUp;
      case KeyboardInputEvent.KEY_DOWN:
        return NiftyStandardInputEvent.MoveCursorDown;
      case KeyboardInputEvent.KEY_LEFT:
        return NiftyStandardInputEvent.MoveCursorLeft;
      case KeyboardInputEvent.KEY_RIGHT:
        return NiftyStandardInputEvent.MoveCursorRight;
      case KeyboardInputEvent.KEY_F1:
        return NiftyStandardInputEvent.ConsoleToggle;
      case KeyboardInputEvent.KEY_RETURN:
        return NiftyStandardInputEvent.SubmitText;
      case KeyboardInputEvent.KEY_DELETE:
        return NiftyStandardInputEvent.Delete;
      case KeyboardInputEvent.KEY_BACK:
        return NiftyStandardInputEvent.Backspace;
      case KeyboardInputEvent.KEY_END:
        return NiftyStandardInputEvent.MoveCursorToLastPosition;
      case KeyboardInputEvent.KEY_HOME:
        return NiftyStandardInputEvent.MoveCursorToFirstPosition;
      case KeyboardInputEvent.KEY_LSHIFT:
      case KeyboardInputEvent.KEY_RSHIFT:
        return NiftyStandardInputEvent.SelectionStart;
      case KeyboardInputEvent.KEY_TAB:
        return inputEvent.isShiftDown() ? NiftyStandardInputEvent.PrevInputElement : NiftyStandardInputEvent
            .NextInputElement;
      case KeyboardInputEvent.KEY_X:
        if (inputEvent.isControlDown()) {
          return NiftyStandardInputEvent.Cut;
        }
        break;
      case KeyboardInputEvent.KEY_C:
        if (inputEvent.isControlDown()) {
          return NiftyStandardInputEvent.Copy;
        }
        break;
      case KeyboardInputEvent.KEY_V:
        if (inputEvent.isControlDown()) {
          return NiftyStandardInputEvent.Paste;
        }
        break;
      case KeyboardInputEvent.KEY_A:
        if (inputEvent.isControlDown()) {
          return NiftyStandardInputEvent.SelectAll;
        }
        break;
      default:
        break;
    }

    if (!Character.isISOControl(inputEvent.getCharacter())) {
      final NiftyStandardInputEvent character = NiftyStandardInputEvent.Character;
      character.setCharacter(inputEvent.getCharacter());
      return character;
    }
    return null;
  }

  /**
   * Translate a keyboard key released event into the assigned {@link NiftyStandardInputEvent}.
   *
   * @param inputEvent the keyboard input event that triggered the call of this function
   * @return the assigned {@link NiftyStandardInputEvent} or {@code null} in case no event is assigned
   */
  @Nullable
  private static NiftyStandardInputEvent handleKeyUpEvent(@Nonnull final KeyboardInputEvent inputEvent) {
    switch (inputEvent.getKey()) {
      case KeyboardInputEvent.KEY_LSHIFT:
      case KeyboardInputEvent.KEY_RSHIFT:
        return NiftyStandardInputEvent.SelectionEnd;
      case KeyboardInputEvent.KEY_ESCAPE:
        return NiftyStandardInputEvent.Escape;
      default:
        return null;
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy