java.lang.Object
- Type Parameters:
T- the type of the items contained in the ComboBox
- All Implemented Interfaces:
InputControl<T>,Styleable,EventTarget,Skinnable
A custom ComboBox control that supports additional features like editing, adding, and removing items.
-
Property Summary
PropertiesTypePropertyDescriptionProvides a read-only property representing the error message for this input control.Returns the property containing the selected item in the ComboBoxEx.Provides a read-only property representing the validity of the input.Provides the property representing the value of this input control.Properties inherited from class javafx.scene.control.Control
contextMenu, skin, tooltipProperties inherited from class javafx.scene.layout.Region
background, border, cacheShape, centerShape, height, insets, maxHeight, maxWidth, minHeight, minWidth, opaqueInsets, padding, prefHeight, prefWidth, scaleShape, shape, snapToPixel, widthProperties inherited from class javafx.scene.Parent
needsLayoutProperties 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, 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 interface com.dua3.utility.fx.controls.InputControl
InputControl.State<R> -
Field Summary
Fields inherited from class com.dua3.utility.fx.controls.CustomControl
containerFields inherited from class javafx.scene.layout.Region
USE_COMPUTED_SIZE, USE_PREF_SIZEFields inherited from class javafx.scene.Node
BASELINE_OFFSET_SAME_AS_HEIGHT -
Constructor Summary
ConstructorsConstructorDescriptionComboBoxEx(@Nullable UnaryOperator<T> edit, @Nullable Supplier<T> add, @Nullable BiPredicate<ComboBoxEx<T>, T> remove, Function<T, String> format, Collection<T> items) Constructs a ComboBoxEx with the specified edit, add, remove, format, and items.ComboBoxEx(@Nullable UnaryOperator<T> edit, @Nullable Supplier<T> add, @Nullable BiPredicate<ComboBoxEx<T>, T> remove, Function<T, String> format, T... items) Constructs a ComboBoxEx with the specified edit, add, remove, format, and items. -
Method Summary
Modifier and TypeMethodDescriptionstatic <T> booleanalwaysRemoveSelectedItem(ComboBoxEx<T> cb, T item) Remove the selected item without showing a confirmation dialog.booleanaskBeforeRemoveSelectedItem(T item) Prompts the user with a confirmation dialogue to verify whether to remove the selected item.Provides a read-only property representing the error message for this input control.getItems()Retrieves a copy of the items in the ComboBoxEx.Retrieves the currently selected item from the ComboBoxEx.node()Get theNodefor this input element.voidreset()Reset value to defaultReturns the property containing the selected item in the ComboBoxEx.voidsetComparator(Comparator<? super T> comparator) Sets the comparator for the ComboBoxEx and sorts the items accordingly.voidSorts the items in the ComboBoxEx using the defined comparator.Provides a read-only property representing the validity of the input.Provides the property representing the value of this input control.Methods inherited from class com.dua3.utility.fx.controls.CustomControl
computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, createDefaultSkinMethods inherited from class javafx.scene.control.Control
contextMenuProperty, executeAccessibleAction, getBaselineOffset, getClassCssMetaData, getContextMenu, getControlCssMetaData, getCssMetaData, getInitialFocusTraversable, getSkin, getTooltip, isResizable, layoutChildren, queryAccessibleAttribute, setContextMenu, setSkin, setTooltip, skinProperty, tooltipPropertyMethods inherited from class javafx.scene.layout.Region
backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, getBackground, getBorder, getHeight, getInsets, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getOpaqueInsets, getPadding, getPrefHeight, getPrefWidth, getShape, getUserAgentStylesheet, 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, widthPropertyMethods inherited from class javafx.scene.Parent
getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, lookup, needsLayoutProperty, requestLayout, requestParentLayout, setNeedsLayout, updateBoundsMethods 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, 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, 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, visiblePropertyMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface com.dua3.utility.fx.controls.InputControl
get, init, isValid, setMethods inherited from interface javafx.css.Styleable
getStyleableNode
-
Property Details
-
selectedItem
Returns the property containing the selected item in the ComboBoxEx.- See Also:
-
value
- Specified by:
valuePropertyin interfaceInputControl<T>- Returns:
- the property containing the current value
-
valid
- Specified by:
validPropertyin interfaceInputControl<T>- Returns:
- a ReadOnlyBooleanProperty that is true if the input is valid and false otherwise
-
error
- Specified by:
errorPropertyin interfaceInputControl<T>- Returns:
- a ReadOnlyStringProperty containing the error message if there is a validation error, otherwise empty
-
-
Constructor Details
-
ComboBoxEx
@SafeVarargs public ComboBoxEx(@Nullable UnaryOperator<T> edit, @Nullable Supplier<T> add, @Nullable BiPredicate<ComboBoxEx<T>, T> remove, Function<T, String> format, T... items) Constructs a ComboBoxEx with the specified edit, add, remove, format, and items.- Parameters:
edit- the unary operator to perform editing on the selected item (nullable)add- the supplier to provide a new item to add (nullable)remove- the bi-predicate to determine if an item should be removed (nullable)format- the function to format the items as stringsitems- the initial items to populate the ComboBox (variadic parameter)
-
ComboBoxEx
public ComboBoxEx(@Nullable UnaryOperator<T> edit, @Nullable Supplier<T> add, @Nullable BiPredicate<ComboBoxEx<T>, T> remove, Function<T, String> format, Collection<T> items) Constructs a ComboBoxEx with the specified edit, add, remove, format, and items.- Parameters:
edit- the unary operator to perform editing on the selected item (nullable)add- the supplier to provide a new item to add (nullable)remove- the bi-predicate to determine if an item should be removed (nullable)format- the function to format the items as stringsitems- the initial items to populate the ComboBox (variadic parameter)
-
-
Method Details
-
askBeforeRemoveSelectedItem
Prompts the user with a confirmation dialogue to verify whether to remove the selected item.Pass this as the
removeparameter to the constructor to show a confirmation dialog when the user wants to remove an item.- Parameters:
item- the item to be removed- Returns:
- true if the user confirms the removal, false otherwise
-
alwaysRemoveSelectedItem
Remove the selected item without showing a confirmation dialog.Pass this as the
removeparameter to the constructor to remove items without showing a confirmation dialog.- Type Parameters:
T- the type of items contained in theComboBoxEx- Parameters:
cb- theComboBoxExto remove the item fromitem- the item to be removed- Returns:
- true if the user confirms the removal, false otherwise
-
getSelectedItem
Retrieves the currently selected item from the ComboBoxEx.- Returns:
- an Optional containing the selected item if one is selected, or an empty Optional if no item is selected
-
getItems
Retrieves a copy of the items in the ComboBoxEx.- Returns:
- an immutable list containing the current items in the ComboBoxEx
-
selectedItemProperty
Returns the property containing the selected item in the ComboBoxEx.- See Also:
-
setComparator
Sets the comparator for the ComboBoxEx and sorts the items accordingly. If the comparator is null, the items will not be sorted.- Parameters:
comparator- the comparator to set, which is used for sorting the items
-
sortItems
public void sortItems()Sorts the items in the ComboBoxEx using the defined comparator. If the comparator is null, the method returns without performing any action. The currently selected item, if any, will remain selected after sorting. -
node
Description copied from interface:InputControlGet theNodefor this input element.- Specified by:
nodein interfaceInputControl<T>- Returns:
- the node
-
valueProperty
Description copied from interface:InputControlProvides the property representing the value of this input control.- Specified by:
valuePropertyin interfaceInputControl<T>- Returns:
- the property containing the current value
-
reset
public void reset()Description copied from interface:InputControlReset value to default- Specified by:
resetin interfaceInputControl<T>
-
validProperty
Description copied from interface:InputControlProvides a read-only property representing the validity of the input.- Specified by:
validPropertyin interfaceInputControl<T>- Returns:
- a ReadOnlyBooleanProperty that is true if the input is valid and false otherwise
-
errorProperty
Description copied from interface:InputControlProvides a read-only property representing the error message for this input control.This property contains an error message if the input is invalid, otherwise it is empty.
- Specified by:
errorPropertyin interfaceInputControl<T>- Returns:
- a ReadOnlyStringProperty containing the error message if there is a validation error, otherwise empty
-