Class AutoLookup

java.lang.Object
docking.widgets.AutoLookup
Direct Known Subclasses:
GListAutoLookup, GTableAutoLookup

public abstract class AutoLookup extends Object
A class that holds the logic and state for finding matching rows in a widget when a user types in the widget. This class was designed for row-based widgets, such as tables and lists.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final long
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected boolean
    A method that subclasses can override to affect whether this class uses a binary search for a particular column
    abstract int
    Returns the currently selected row
    abstract int
    Returns the total number of rows
    abstract String
    getValueString(int row, int col)
    Returns a string representation of the item at the given row and column.
    abstract boolean
    isSorted(int column)
    Returns true if the given column is sorted.
    abstract boolean
    Returns true if the currently sorted column is sorted ascending.
    void
    Clients call this method when the user types keys
    abstract void
    matchFound(int row)
    This method will be called when a match for the call to keyTyped(KeyEvent) is found
    void
    setColumn(int column)
    Sets the column that is searched when a lookup is performed
    void
    setTimeout(long timeout)
    Sets the delay between keystrokes after which each keystroke is considered a new lookup
    void
    Sets the logic for deciding whether the elapsed time between keystrokes is enough to trigger a new auto lookup or to continue with the previous match.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • AutoLookup

      public AutoLookup()
  • Method Details

    • getCurrentRow

      public abstract int getCurrentRow()
      Returns the currently selected row
      Returns:
      the row
    • getRowCount

      public abstract int getRowCount()
      Returns the total number of rows
      Returns:
      the row count
    • getValueString

      public abstract String getValueString(int row, int col)
      Returns a string representation of the item at the given row and column. The text should match what the user sees.
      Parameters:
      row - the row
      col - the column
      Returns:
      the text
    • isSorted

      public abstract boolean isSorted(int column)
      Returns true if the given column is sorted. This class will use a binary search if the given column is sorted. Otherwise, a brute-force search will be used.
      Parameters:
      column - the column
      Returns:
      true if sorted
    • canBinarySearchColumn

      protected boolean canBinarySearchColumn(int column)
      A method that subclasses can override to affect whether this class uses a binary search for a particular column
      Parameters:
      column - the column
      Returns:
      true if the binary search algorithm will work on the given column
    • isSortedAscending

      public abstract boolean isSortedAscending()
      Returns true if the currently sorted column is sorted ascending. This is used in conjunction with isSorted(int). If that method returns false, then this method will not be called.
      Returns:
      true if sorted ascending
    • matchFound

      public abstract void matchFound(int row)
      This method will be called when a match for the call to keyTyped(KeyEvent) is found
      Parameters:
      row - the matching row
    • setTimeout

      public void setTimeout(long timeout)
      Sets the delay between keystrokes after which each keystroke is considered a new lookup
      Parameters:
      timeout - the timeout
    • setColumn

      public void setColumn(int column)
      Sets the column that is searched when a lookup is performed
      Parameters:
      column - the column
    • setTimeoutPredicate

      public void setTimeoutPredicate(Predicate<Long> p)
      Sets the logic for deciding whether the elapsed time between keystrokes is enough to trigger a new auto lookup or to continue with the previous match.

      This method is intended for tests that need precise control over the timeout mechanism.

      Parameters:
      p - the predicate that takes the amount of elapsed time
      See Also:
    • keyTyped

      public void keyTyped(KeyEvent e)
      Clients call this method when the user types keys
      Parameters:
      e - the key event