Class SearchTextField

java.lang.Object
javafx.scene.Node
javafx.scene.Parent
javafx.scene.layout.Region
javafx.scene.control.Control
javafx.scene.control.TextInputControl
javafx.scene.control.TextField
org.controlsfx.control.textfield.CustomTextField
com.dlsc.gemsfx.SearchTextField
All Implemented Interfaces:
javafx.css.Styleable, javafx.event.EventTarget, javafx.scene.control.Skinnable

public class SearchTextField extends org.controlsfx.control.textfield.CustomTextField
A custom text field specifically designed for search functionality. This class enhances a text field with features such as a history of search terms, an optional history popup, and custom icons for search and clear operations.

The history manager is disabled by default, but it can be enabled using the setHistoryManager(HistoryManager) method. We have implemented a local history manager, StringHistoryManager, which uses the Java Preferences API to store history records. You can enable it via the setHistoryManager(HistoryManager) method.

By default, when the field loses its focus or the user presses the "enter" key (triggering the onAction event), the text is added to the history. This behavior can be disabled by setting the addingItemToHistoryOnEnterProperty() and / or the addingItemToHistoryOnEnterProperty() to false.
Additionally, history can be manually added based on user actions, such as after typing text and selecting an item from a ListView or TableView that displays results, or through other interactions, by calling the getHistoryManager() method to access the StringHistoryManager instance. then calling the HistoryManager.add(Object)} method.

  • Nested Class Summary

    Nested classes/interfaces inherited from class javafx.scene.control.TextInputControl

    javafx.scene.control.TextInputControl.Content
  • Property Summary

    Properties
    Type
    Property
    Description
    final javafx.beans.property.BooleanProperty
    Determines whether the text of the text field should be added to the history when the user presses the Enter key.
    final javafx.beans.property.BooleanProperty
    Determines whether the text of the text field should be added to the history when the field losses its focus.
    final javafx.beans.property.ObjectProperty<HistoryManager<String>>
    The history manager that is used to manage the history of the search text field.
    final javafx.beans.property.ObjectProperty<javafx.scene.Node>
    Returns the property representing the history placeholder node.
    final javafx.beans.property.BooleanProperty
    Determines whether the text field should have round corners.

    Properties inherited from class org.controlsfx.control.textfield.CustomTextField

    left, right

    Properties inherited from class javafx.scene.control.TextField

    alignment, onAction, prefColumnCount

    Properties inherited from class javafx.scene.control.TextInputControl

    anchor, caretPosition, editable, font, length, promptText, redoable, selectedText, selection, textFormatter, text, undoable

    Properties inherited from class javafx.scene.control.Control

    contextMenu, skin, tooltip

    Properties inherited from class javafx.scene.layout.Region

    background, border, cacheShape, centerShape, height, insets, maxHeight, maxWidth, minHeight, minWidth, opaqueInsets, padding, prefHeight, prefWidth, scaleShape, shape, snapToPixel, width

    Properties inherited from class javafx.scene.Parent

    needsLayout

    Properties inherited from class javafx.scene.Node

    accessibleHelp, accessibleRoleDescription, accessibleRole, accessibleText, blendMode, boundsInLocal, boundsInParent, cacheHint, cache, clip, cursor, depthTest, disabled, disable, effectiveNodeOrientation, effect, eventDispatcher, focused, focusTraversable, focusVisible, focusWithin, hover, id, inputMethodRequests, layoutBounds, layoutX, layoutY, localToParentTransform, localToSceneTransform, managed, mouseTransparent, nodeOrientation, onContextMenuRequested, onDragDetected, onDragDone, onDragDropped, onDragEntered, onDragExited, onDragOver, onInputMethodTextChanged, onKeyPressed, onKeyReleased, onKeyTyped, onMouseClicked, onMouseDragEntered, onMouseDragExited, onMouseDragged, onMouseDragOver, onMouseDragReleased, onMouseEntered, onMouseExited, onMouseMoved, onMousePressed, onMouseReleased, onRotate, onRotationFinished, onRotationStarted, onScrollFinished, onScroll, onScrollStarted, onSwipeDown, onSwipeLeft, onSwipeRight, onSwipeUp, onTouchMoved, onTouchPressed, onTouchReleased, onTouchStationary, onZoomFinished, onZoom, onZoomStarted, opacity, parent, pickOnBounds, pressed, rotate, rotationAxis, scaleX, scaleY, scaleZ, scene, style, translateX, translateY, translateZ, viewOrder, visible
  • Field Summary

    Fields inherited from class javafx.scene.control.TextField

    DEFAULT_PREF_COLUMN_COUNT

    Fields inherited from class javafx.scene.layout.Region

    USE_COMPUTED_SIZE, USE_PREF_SIZE

    Fields inherited from class javafx.scene.Node

    BASELINE_OFFSET_SAME_AS_HEIGHT
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructs a new text field customized for search operations.
  • Method Summary

    Modifier and Type
    Method
    Description
    final javafx.beans.property.BooleanProperty
    Determines whether the text of the text field should be added to the history when the user presses the Enter key.
    final javafx.beans.property.BooleanProperty
    Determines whether the text of the text field should be added to the history when the field losses its focus.
    static List<javafx.css.CssMetaData<? extends javafx.css.Styleable, ?>>
     
    List<javafx.css.CssMetaData<? extends javafx.css.Styleable, ?>>
     
    Gets the value of the historyManager property.
    final javafx.scene.Node
    Gets the value of the historyPlaceholder property.
     
    final javafx.beans.property.ObjectProperty<HistoryManager<String>>
    The history manager that is used to manage the history of the search text field.
    final javafx.beans.property.ObjectProperty<javafx.scene.Node>
    Returns the property representing the history placeholder node.
    final boolean
    Gets the value of the addingItemToHistoryOnEnter property.
    final boolean
    Gets the value of the addingItemToHistoryOnFocusLost property.
    final boolean
    Gets the value of the round property.
    final javafx.beans.property.BooleanProperty
    Determines whether the text field should have round corners.
    final void
    setAddingItemToHistoryOnEnter(boolean addingItemToHistoryOnEnter)
    Sets the value of the addingItemToHistoryOnEnter property.
    final void
    setAddingItemToHistoryOnFocusLost(boolean addingItemToHistoryOnFocusLost)
    Sets the value of the addingItemToHistoryOnFocusLost property.
    final void
    Sets the value of the historyManager property.
    final void
    setHistoryPlaceholder(javafx.scene.Node historyPlaceholder)
    Sets the value of the historyPlaceholder property.
    final void
    setRound(boolean round)
    Sets the value of the round property.

    Methods inherited from class org.controlsfx.control.textfield.CustomTextField

    createDefaultSkin, getLeft, getRight, leftProperty, rightProperty, setLeft, setRight

    Methods inherited from class javafx.scene.control.TextField

    alignmentProperty, getAlignment, getCharacters, getOnAction, getPrefColumnCount, onActionProperty, prefColumnCountProperty, setAlignment, setOnAction, setPrefColumnCount

    Methods inherited from class javafx.scene.control.TextInputControl

    anchorProperty, appendText, backward, cancelEdit, caretPositionProperty, clear, commitValue, copy, cut, deleteNextChar, deletePreviousChar, deleteText, deleteText, deselect, editableProperty, end, endOfNextWord, executeAccessibleAction, extendSelection, fontProperty, forward, getAnchor, getCaretPosition, getContent, getFont, getLength, getPromptText, getSelectedText, getSelection, getText, getText, getTextFormatter, home, insertText, isEditable, isRedoable, isUndoable, lengthProperty, nextWord, paste, positionCaret, previousWord, promptTextProperty, queryAccessibleAttribute, redo, redoableProperty, replaceSelection, replaceText, replaceText, selectAll, selectBackward, selectedTextProperty, selectEnd, selectEndOfNextWord, selectForward, selectHome, selectionProperty, selectNextWord, selectPositionCaret, selectPreviousWord, selectRange, setEditable, setFont, setPromptText, setText, setTextFormatter, textFormatterProperty, textProperty, undo, undoableProperty

    Methods inherited from class javafx.scene.control.Control

    computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, contextMenuProperty, getBaselineOffset, getContextMenu, getCssMetaData, getInitialFocusTraversable, getSkin, getTooltip, isResizable, layoutChildren, setContextMenu, setSkin, setTooltip, skinProperty, tooltipProperty

    Methods inherited from class javafx.scene.layout.Region

    backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, getBackground, getBorder, getHeight, getInsets, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getOpaqueInsets, getPadding, getPrefHeight, getPrefWidth, getShape, getWidth, heightProperty, insetsProperty, isCacheShape, isCenterShape, isScaleShape, isSnapToPixel, layoutInArea, layoutInArea, layoutInArea, layoutInArea, maxHeight, maxHeightProperty, maxWidth, maxWidthProperty, minHeight, minHeightProperty, minWidth, minWidthProperty, opaqueInsetsProperty, paddingProperty, positionInArea, positionInArea, prefHeight, prefHeightProperty, prefWidth, prefWidthProperty, resize, scaleShapeProperty, setBackground, setBorder, setCacheShape, setCenterShape, setHeight, setMaxHeight, setMaxSize, setMaxWidth, setMinHeight, setMinSize, setMinWidth, setOpaqueInsets, setPadding, setPrefHeight, setPrefSize, setPrefWidth, setScaleShape, setShape, setSnapToPixel, setWidth, shapeProperty, snappedBottomInset, snappedLeftInset, snappedRightInset, snappedTopInset, snapPosition, snapPositionX, snapPositionY, snapSize, snapSizeX, snapSizeY, snapSpace, snapSpaceX, snapSpaceY, snapToPixelProperty, widthProperty

    Methods inherited from class javafx.scene.Parent

    getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, lookup, needsLayoutProperty, requestLayout, requestParentLayout, setNeedsLayout, updateBounds

    Methods inherited from class javafx.scene.Node

    accessibleHelpProperty, accessibleRoleDescriptionProperty, accessibleRoleProperty, accessibleTextProperty, addEventFilter, addEventHandler, applyCss, autosize, blendModeProperty, boundsInLocalProperty, boundsInParentProperty, buildEventDispatchChain, cacheHintProperty, cacheProperty, clipProperty, computeAreaInScreen, contains, contains, cursorProperty, depthTestProperty, disabledProperty, disableProperty, effectiveNodeOrientationProperty, effectProperty, eventDispatcherProperty, fireEvent, focusedProperty, focusTraversableProperty, focusVisibleProperty, focusWithinProperty, getAccessibleHelp, getAccessibleRole, getAccessibleRoleDescription, getAccessibleText, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClip, getContentBias, getCursor, getDepthTest, getEffect, getEffectiveNodeOrientation, getEventDispatcher, getId, getInitialCursor, getInputMethodRequests, getLayoutBounds, getLayoutX, getLayoutY, getLocalToParentTransform, getLocalToSceneTransform, getNodeOrientation, getOnContextMenuRequested, getOnDragDetected, getOnDragDone, getOnDragDropped, getOnDragEntered, getOnDragExited, getOnDragOver, getOnInputMethodTextChanged, getOnKeyPressed, getOnKeyReleased, getOnKeyTyped, getOnMouseClicked, getOnMouseDragEntered, getOnMouseDragExited, getOnMouseDragged, getOnMouseDragOver, getOnMouseDragReleased, getOnMouseEntered, getOnMouseExited, getOnMouseMoved, getOnMousePressed, getOnMouseReleased, getOnRotate, getOnRotationFinished, getOnRotationStarted, getOnScroll, getOnScrollFinished, getOnScrollStarted, getOnSwipeDown, getOnSwipeLeft, getOnSwipeRight, getOnSwipeUp, getOnTouchMoved, getOnTouchPressed, getOnTouchReleased, getOnTouchStationary, getOnZoom, getOnZoomFinished, getOnZoomStarted, getOpacity, getParent, getProperties, getPseudoClassStates, getRotate, getRotationAxis, getScaleX, getScaleY, getScaleZ, getScene, getStyle, getStyleableParent, getStyleClass, getTransforms, getTranslateX, getTranslateY, getTranslateZ, getTypeSelector, getUserData, getViewOrder, hasProperties, hoverProperty, idProperty, inputMethodRequestsProperty, intersects, intersects, isCache, isDisable, isDisabled, isFocused, isFocusTraversable, isFocusVisible, isFocusWithin, isHover, isManaged, isMouseTransparent, isPickOnBounds, isPressed, isVisible, layoutBoundsProperty, layoutXProperty, layoutYProperty, localToParent, localToParent, localToParent, localToParent, localToParent, localToParentTransformProperty, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToSceneTransformProperty, localToScreen, localToScreen, localToScreen, localToScreen, localToScreen, lookupAll, managedProperty, mouseTransparentProperty, nodeOrientationProperty, notifyAccessibleAttributeChanged, onContextMenuRequestedProperty, onDragDetectedProperty, onDragDoneProperty, onDragDroppedProperty, onDragEnteredProperty, onDragExitedProperty, onDragOverProperty, onInputMethodTextChangedProperty, onKeyPressedProperty, onKeyReleasedProperty, onKeyTypedProperty, onMouseClickedProperty, onMouseDragEnteredProperty, onMouseDragExitedProperty, onMouseDraggedProperty, onMouseDragOverProperty, onMouseDragReleasedProperty, onMouseEnteredProperty, onMouseExitedProperty, onMouseMovedProperty, onMousePressedProperty, onMouseReleasedProperty, onRotateProperty, onRotationFinishedProperty, onRotationStartedProperty, onScrollFinishedProperty, onScrollProperty, onScrollStartedProperty, onSwipeDownProperty, onSwipeLeftProperty, onSwipeRightProperty, onSwipeUpProperty, onTouchMovedProperty, onTouchPressedProperty, onTouchReleasedProperty, onTouchStationaryProperty, onZoomFinishedProperty, onZoomProperty, onZoomStartedProperty, opacityProperty, parentProperty, parentToLocal, parentToLocal, parentToLocal, parentToLocal, parentToLocal, pickOnBoundsProperty, pressedProperty, pseudoClassStateChanged, relocate, removeEventFilter, removeEventHandler, requestFocus, requestFocusTraversal, resizeRelocate, rotateProperty, rotationAxisProperty, scaleXProperty, scaleYProperty, scaleZProperty, sceneProperty, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, screenToLocal, screenToLocal, screenToLocal, setAccessibleHelp, setAccessibleRole, setAccessibleRoleDescription, setAccessibleText, setBlendMode, setCache, setCacheHint, setClip, setCursor, setDepthTest, setDisable, setDisabled, setEffect, setEventDispatcher, setEventHandler, setFocused, setFocusTraversable, setHover, setId, setInputMethodRequests, setLayoutX, setLayoutY, setManaged, setMouseTransparent, setNodeOrientation, setOnContextMenuRequested, setOnDragDetected, setOnDragDone, setOnDragDropped, setOnDragEntered, setOnDragExited, setOnDragOver, setOnInputMethodTextChanged, setOnKeyPressed, setOnKeyReleased, setOnKeyTyped, setOnMouseClicked, setOnMouseDragEntered, setOnMouseDragExited, setOnMouseDragged, setOnMouseDragOver, setOnMouseDragReleased, setOnMouseEntered, setOnMouseExited, setOnMouseMoved, setOnMousePressed, setOnMouseReleased, setOnRotate, setOnRotationFinished, setOnRotationStarted, setOnScroll, setOnScrollFinished, setOnScrollStarted, setOnSwipeDown, setOnSwipeLeft, setOnSwipeRight, setOnSwipeUp, setOnTouchMoved, setOnTouchPressed, setOnTouchReleased, setOnTouchStationary, setOnZoom, setOnZoomFinished, setOnZoomStarted, setOpacity, setPickOnBounds, setPressed, setRotate, setRotationAxis, setScaleX, setScaleY, setScaleZ, setStyle, setTranslateX, setTranslateY, setTranslateZ, setUserData, setViewOrder, setVisible, snapshot, snapshot, startDragAndDrop, startFullDrag, styleProperty, toBack, toFront, toString, translateXProperty, translateYProperty, translateZProperty, usesMirroring, viewOrderProperty, visibleProperty

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface javafx.css.Styleable

    getStyleableNode
  • Property Details

  • Constructor Details

    • SearchTextField

      public SearchTextField()
      Constructs a new text field customized for search operations.

      The history manager is initialized with default values.

  • Method Details

    • getUserAgentStylesheet

      public String getUserAgentStylesheet()
      Overrides:
      getUserAgentStylesheet in class org.controlsfx.control.textfield.CustomTextField
    • historyPlaceholderProperty

      public final javafx.beans.property.ObjectProperty<javafx.scene.Node> historyPlaceholderProperty()
      Returns the property representing the history placeholder node.
      Returns:
      the property representing the history placeholder node
      See Also:
    • getHistoryPlaceholder

      public final javafx.scene.Node getHistoryPlaceholder()
      Gets the value of the historyPlaceholder property.
      Property description:
      Returns the property representing the history placeholder node.
      Returns:
      the value of the historyPlaceholder property
      See Also:
    • setHistoryPlaceholder

      public final void setHistoryPlaceholder(javafx.scene.Node historyPlaceholder)
      Sets the value of the historyPlaceholder property.
      Property description:
      Returns the property representing the history placeholder node.
      Parameters:
      historyPlaceholder - the value for the historyPlaceholder property
      See Also:
    • addingItemToHistoryOnEnterProperty

      public final javafx.beans.property.BooleanProperty addingItemToHistoryOnEnterProperty()
      Determines whether the text of the text field should be added to the history when the user presses the Enter key.
      Returns:
      true if the text should be added to the history on Enter, false otherwise
      See Also:
    • isAddingItemToHistoryOnEnter

      public final boolean isAddingItemToHistoryOnEnter()
      Gets the value of the addingItemToHistoryOnEnter property.
      Property description:
      Determines whether the text of the text field should be added to the history when the user presses the Enter key.
      Returns:
      the value of the addingItemToHistoryOnEnter property
      See Also:
    • setAddingItemToHistoryOnEnter

      public final void setAddingItemToHistoryOnEnter(boolean addingItemToHistoryOnEnter)
      Sets the value of the addingItemToHistoryOnEnter property.
      Property description:
      Determines whether the text of the text field should be added to the history when the user presses the Enter key.
      Parameters:
      addingItemToHistoryOnEnter - the value for the addingItemToHistoryOnEnter property
      See Also:
    • addingItemToHistoryOnFocusLostProperty

      public final javafx.beans.property.BooleanProperty addingItemToHistoryOnFocusLostProperty()
      Determines whether the text of the text field should be added to the history when the field losses its focus.
      Returns:
      true if the text should be added to the history on focus lost, false otherwise
      See Also:
    • isAddingItemToHistoryOnFocusLost

      public final boolean isAddingItemToHistoryOnFocusLost()
      Gets the value of the addingItemToHistoryOnFocusLost property.
      Property description:
      Determines whether the text of the text field should be added to the history when the field losses its focus.
      Returns:
      the value of the addingItemToHistoryOnFocusLost property
      See Also:
    • setAddingItemToHistoryOnFocusLost

      public final void setAddingItemToHistoryOnFocusLost(boolean addingItemToHistoryOnFocusLost)
      Sets the value of the addingItemToHistoryOnFocusLost property.
      Property description:
      Determines whether the text of the text field should be added to the history when the field losses its focus.
      Parameters:
      addingItemToHistoryOnFocusLost - the value for the addingItemToHistoryOnFocusLost property
      See Also:
    • roundProperty

      public final javafx.beans.property.BooleanProperty roundProperty()
      Determines whether the text field should have round corners.

      CSS: -fx-round: true|false — default: false

      Returns:
      true if the text field should have round corners, false otherwise
      See Also:
    • isRound

      public final boolean isRound()
      Gets the value of the round property.
      Property description:
      Determines whether the text field should have round corners.

      CSS: -fx-round: true|false — default: false

      Returns:
      the value of the round property
      See Also:
    • setRound

      public final void setRound(boolean round)
      Sets the value of the round property.
      Property description:
      Determines whether the text field should have round corners.

      CSS: -fx-round: true|false — default: false

      Parameters:
      round - the value for the round property
      See Also:
    • historyManagerProperty

      public final javafx.beans.property.ObjectProperty<HistoryManager<String>> historyManagerProperty()
      The history manager that is used to manage the history of the search text field.

      If its value is null, the history feature will not be enabled, which means only the magnifying glass icon will be displayed, and the dropdown arrow next to the magnifying glass will not be shown.

      If its value is not null, the history feature will be enabled, meaning that both the magnifying glass icon and the dropdown arrow will be displayed. Clicking the magnifying glass icon button will display the history popup.

      To enable the history feature, you need to set an instance of HistoryManager. Typically, you would use an instance of StringHistoryManager, which is an implementation of HistoryManager that manages string-type history records.

      Returns:
      the property representing the history manager
      See Also:
    • getHistoryManager

      public final HistoryManager<String> getHistoryManager()
      Gets the value of the historyManager property.
      Property description:
      The history manager that is used to manage the history of the search text field.

      If its value is null, the history feature will not be enabled, which means only the magnifying glass icon will be displayed, and the dropdown arrow next to the magnifying glass will not be shown.

      If its value is not null, the history feature will be enabled, meaning that both the magnifying glass icon and the dropdown arrow will be displayed. Clicking the magnifying glass icon button will display the history popup.

      To enable the history feature, you need to set an instance of HistoryManager. Typically, you would use an instance of StringHistoryManager, which is an implementation of HistoryManager that manages string-type history records.

      Returns:
      the value of the historyManager property
      See Also:
    • setHistoryManager

      public final void setHistoryManager(HistoryManager<String> historyManager)
      Sets the value of the historyManager property.
      Property description:
      The history manager that is used to manage the history of the search text field.

      If its value is null, the history feature will not be enabled, which means only the magnifying glass icon will be displayed, and the dropdown arrow next to the magnifying glass will not be shown.

      If its value is not null, the history feature will be enabled, meaning that both the magnifying glass icon and the dropdown arrow will be displayed. Clicking the magnifying glass icon button will display the history popup.

      To enable the history feature, you need to set an instance of HistoryManager. Typically, you would use an instance of StringHistoryManager, which is an implementation of HistoryManager that manages string-type history records.

      Parameters:
      historyManager - the value for the historyManager property
      See Also:
    • getControlCssMetaData

      public List<javafx.css.CssMetaData<? extends javafx.css.Styleable, ?>> getControlCssMetaData()
      Overrides:
      getControlCssMetaData in class javafx.scene.control.TextField
    • getClassCssMetaData

      public static List<javafx.css.CssMetaData<? extends javafx.css.Styleable, ?>> getClassCssMetaData()