Class SearchPredicate

  • All Implemented Interfaces:
    HighlightPredicate

    public class SearchPredicate
    extends java.lang.Object
    implements HighlightPredicate
    Pattern based HighlightPredicate for searching. Highlights the current adapter cell if the value matches the pattern. The highlight scope can be limited to a certain column and row.

    Note: this differs from PatternPredicate in that it is focused on the current cell (highlight coordinates == test coordinates) while the PatternPredicate can have separate test and highlight coordinates.

    • Field Detail

      • highlightColumn

        private int highlightColumn
      • highlightRow

        private int highlightRow
      • pattern

        private java.util.regex.Pattern pattern
    • Constructor Detail

      • SearchPredicate

        public SearchPredicate​(java.util.regex.Pattern pattern)
        Instantiates a Predicate with the given Pattern. All matching cells are highlighted.
        Parameters:
        pattern - the Pattern to test the cell value against
      • SearchPredicate

        public SearchPredicate​(java.util.regex.Pattern pattern,
                               int column)
        Instantiates a Predicate with the given Pattern. Highlighting is limited to matching cells in the given column.
        Parameters:
        pattern - the Pattern to test the cell value against
        column - the column to limit the highlight to
      • SearchPredicate

        public SearchPredicate​(java.util.regex.Pattern pattern,
                               int row,
                               int column)
        Instantiates a Predicate with the given Pattern. Highlighting is limited to matching cells in the given column and row. A value of -1 indicates all rows/columns.

        Note: the coordinates are asymmetric - rows are in view- and column in model-coordinates - due to corresponding methods in ComponentAdapter. Hmm... no need to? This happens on the current adapter state which is view always, so could use view only?

        Parameters:
        pattern - the Pattern to test the cell value against
        row - the row index in view coordinates to limit the highlight.
        column - the column in model coordinates to limit the highlight to
      • SearchPredicate

        public SearchPredicate​(java.lang.String regex)
        Instantiates a Predicate with a Pattern compiled from the given regular expression. All matching cells are highlighted.
        Parameters:
        regex - the regular expression to test the cell value against
      • SearchPredicate

        public SearchPredicate​(java.lang.String regex,
                               int column)
        Instantiates a Predicate with a Pattern compiled from the given regular expression. Highlighting is applied to matching cells in all rows, but only in the given column. A value of ALL indicates all columns.

        Parameters:
        regex - the regular expression to test the cell value against
        column - the column index in model coordinates to limit the highlight to
      • SearchPredicate

        public SearchPredicate​(java.lang.String regex,
                               int row,
                               int column)
        Instantiates a Predicate with a Pattern compiled from the given regular expression. Highlighting is limited to matching cells in the given column and row. A value of ALL indicates all rows/columns.

        Note: the coordinates are asymmetric - rows are in view- and column in model-coordinates - due to corresponding methods in ComponentAdapter. Hmm... no need to? This happens on the current adapter state which is view always, so could use view only?

        Parameters:
        regex - the Pattern to test the cell value against
        row - the row index in view coordinates to limit the highlight.
        column - the column in model coordinates to limit the highlight to
    • Method Detail

      • getHighlightColumn

        public int getHighlightColumn()
        Returns:
        returns the column index to decorate (in model coordinates)
      • getHighlightRow

        public int getHighlightRow()
        Returns:
        returns the column index to decorate (in model coordinates)
      • getPattern

        public java.util.regex.Pattern getPattern()
        Returns:
        returns the Pattern to test the cell value against
      • isHighlighted

        public boolean isHighlighted​(java.awt.Component renderer,
                                     ComponentAdapter adapter)
        Returns a boolean to indicate whether the component should be highlighted.

        Note: both parameters should be considered strictly read-only!

        Specified by:
        isHighlighted in interface HighlightPredicate
        Parameters:
        renderer - the cell renderer component that is to be decorated, must not be null
        adapter - the ComponentAdapter for this decorate operation, most not be null
        Returns:
        a boolean to indicate whether the component should be highlighted.
      • test

        private boolean test​(java.awt.Component renderer,
                             ComponentAdapter adapter)
        Test the value. This is called only if the pre-check returned true, because accessing the value might be potentially costly
        Parameters:
        renderer -
        adapter -
        Returns:
      • isHighlightCandidate

        private boolean isHighlightCandidate​(java.awt.Component renderer,
                                             ComponentAdapter adapter)
        A quick pre-check.
        Parameters:
        renderer -
        adapter -
        Returns:
      • isEnabled

        private boolean isEnabled()