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.

  • 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
  • Nested Class Summary

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

    javafx.scene.control.TextInputControl.Content
  • 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.
    Gets the value of the property historyManager.
    final javafx.scene.Node
    Gets the value of the property historyPlaceholder.
     
    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 property addingItemToHistoryOnEnter.
    final boolean
    Gets the value of the property addingItemToHistoryOnFocusLost.
    final boolean
    Gets the value of the property round.
    final javafx.beans.property.BooleanProperty
    Determines whether the text field should have round corners.
    final void
    setAddingItemToHistoryOnEnter(boolean addingItemToHistoryOnEnter)
    Sets the value of the property addingItemToHistoryOnEnter.
    final void
    setAddingItemToHistoryOnFocusLost(boolean addingItemToHistoryOnFocusLost)
    Sets the value of the property addingItemToHistoryOnFocusLost.
    final void
    Sets the value of the property historyManager.
    final void
    setHistoryPlaceholder(javafx.scene.Node historyPlaceholder)
    Sets the value of the property historyPlaceholder.
    final void
    setRound(boolean round)
    Sets the value of the property round.

    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, getClassCssMetaData, getControlCssMetaData, 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, 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 java.lang.Object

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

    Methods inherited from interface javafx.css.Styleable

    getStyleableNode
  • Property Details

    • historyPlaceholder

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

      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.
      See Also:
    • addingItemToHistoryOnFocusLost

      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.
      See Also:
    • round

      public final javafx.beans.property.BooleanProperty roundProperty
      Determines whether the text field should have round corners.
      See Also:
    • historyManager

      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.

      See Also:
  • 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.
      See Also:
    • getHistoryPlaceholder

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

      public final void setHistoryPlaceholder(javafx.scene.Node historyPlaceholder)
      Sets the value of the property historyPlaceholder.
      Property description:
      Returns the property representing the history placeholder node.
    • 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.
      See Also:
    • isAddingItemToHistoryOnEnter

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

      public final void setAddingItemToHistoryOnEnter(boolean addingItemToHistoryOnEnter)
      Sets the value of the property addingItemToHistoryOnEnter.
      Property description:
      Determines whether the text of the text field should be added to the history when the user presses the Enter key.
    • 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.
      See Also:
    • isAddingItemToHistoryOnFocusLost

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

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

      public final javafx.beans.property.BooleanProperty roundProperty()
      Determines whether the text field should have round corners.
      See Also:
    • isRound

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

      public final void setRound(boolean round)
      Sets the value of the property round.
      Property description:
      Determines whether the text field should have round corners.
    • 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.

      See Also:
    • getHistoryManager

      public final HistoryManager<String> getHistoryManager()
      Gets the value of the property historyManager.
      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.

    • setHistoryManager

      public final void setHistoryManager(HistoryManager<String> historyManager)
      Sets the value of the property historyManager.
      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.