private void createPromptNode() { if (promptText != null || !linesWrapper.usePromptText.get()) { return; } promptText = new Text(); StackPane.setAlignment(promptText, Pos.CENTER_LEFT); // create my custom pane for the prompt node promptText.textProperty().bind(getSkinnable().promptTextProperty()); promptText.fillProperty().bind(linesWrapper.animatedPromptTextFill); promptText.getStyleClass().addAll("text"); promptText.getTransforms().add(linesWrapper.promptTextScale); promptText.visibleProperty().bind(linesWrapper.usePromptText); promptText.setTranslateX(1); linesWrapper.promptContainer.getChildren().add(promptText); if (getSkinnable().isFocused() && ((JFXComboBox<T>) getSkinnable()).isLabelFloat()) { promptText.setTranslateY(-snapPosition(promptText.getBaselineOffset() + promptText.getLayoutBounds().getHeight() * .36)); linesWrapper.promptTextScale.setX(0.85); linesWrapper.promptTextScale.setY(0.85); } }
private void evalComboBoxField() { ComboBoxBase comboField = (ComboBoxBase) srcControl.get(); Object value = comboField.getValue(); hasErrors.set(value == null || value.toString().isEmpty()); } }
getChildren().setAll(rippler); JFXDepthManager.setDepth(getSkinnable(), 1); getSkinnable().setPickOnBounds(false); if (!getSkinnable().isPressed()) { rippler.setOverlayVisible(true); if (displayNode != null) { if (colorLabelVisible.get()) { displayNode.setText(JFXNodeUtils.colorToHex(getSkinnable().getValue())); } else { displayNode.setText("");
public AquaComboBoxListViewSkin(ComboBox<T> comboBox) { super(comboBox); registerChangeListener(comboBox.disabledProperty(), "DISABLED"); if (getSkinnable().isFocused()) { setFocusBorder(); } else if (!getSkinnable().isFocused() && !getSkinnable().isDisabled()) { setDropShadow(); } for (Object child : getChildren()) { ((Node) child).focusedProperty().addListener(focusListener); } if (comboBox.isEditable()) { getDisplayNode().focusedProperty().addListener(focusListener); } getSkinnable().focusedProperty().addListener(focusListener); }
@Override protected void filterKeys(T control) { super.filterKeys(control); if (control instanceof FxComponent) { control.addEventFilter(KeyEvent.ANY, event -> { if (!control.isEditable() && ((FxComponent) control).getTableCell() != null) { // don't allow to navigate within the cells of a table if combobox is used as an editor // @todo: verify if still necessary in newer versions than java 9 switch (event.getCode()) { case PAGE_DOWN: case PAGE_UP: case HOME: case END: case LEFT: case RIGHT: event.consume(); } } }); } }
public AquaColorPickerSkin(ColorPicker colorPicker) { super(colorPicker); registerChangeListener(colorPicker.focusedProperty(), "FOCUSED"); if (getSkinnable().isFocused()) { setFocusBorder(); } else { setDropShadow(); } }
/*************************************************************************** * * * Public API * * * **************************************************************************/ @Override protected void layoutChildren(final double x, final double y, final double w, final double h) { super.layoutChildren(x, y, w, h); final double height = getSkinnable().getHeight(); linesWrapper.layoutLines(x, y, w, h, height, promptText == null ? 0 : snapPosition(promptText.getBaselineOffset() + promptText.getLayoutBounds().getHeight() * .36)); errorContainer.layoutPane(x, height + linesWrapper.focusedLine.getHeight(), w, h); linesWrapper.updateLabelFloatLayout(); if (invalid) { invalid = false; // update validation container errorContainer.invalid(w); // focus linesWrapper.invalid(); } }
@Override protected void handleControlPropertyChanged(String p) { super.handleControlPropertyChanged(p); if ("SHOWING".equals(p)) { if (getSkinnable().isShowing()) { show(); } else if (!popupContent.isCustomColorDialogShowing()) { hide(); } } else if ("VALUE".equals(p)) { // change the selected color updateColor(); } }
private void removeParentFakeFocusListener(ComboBoxBase<T> comboBoxBase) { // handle FakeFocusField cast exception try { final ReadOnlyBooleanProperty focusedProperty = comboBoxBase.focusedProperty(); ExpressionHelper value = ReflectionHelper.getFieldContent(focusedProperty.getClass().getSuperclass(), focusedProperty, "helper"); ChangeListener[] changeListeners = ReflectionHelper.getFieldContent(value.getClass(), value, "changeListeners"); // remove parent focus listener to prevent editor class cast exception for(int i = changeListeners.length - 1; i > 0; i--) { if (changeListeners[i] != null && changeListeners[i].getClass().getName().contains("ComboBoxPopupControl")) { focusedProperty.removeListener(changeListeners[i]); break; } } } catch (Exception e) { e.printStackTrace(); } }
private void updateArrowButtonListeners() { if (getSkinnable().isEditable()) { arrowButton.addEventHandler(MouseEvent.MOUSE_ENTERED, mouseEnteredEventHandler); arrowButton.addEventHandler(MouseEvent.MOUSE_PRESSED, mousePressedEventHandler); arrowButton.addEventHandler(MouseEvent.MOUSE_RELEASED, mouseReleasedEventHandler); arrowButton.addEventHandler(MouseEvent.MOUSE_EXITED, mouseExitedEventHandler); } else { arrowButton.removeEventHandler(MouseEvent.MOUSE_ENTERED, mouseEnteredEventHandler); arrowButton.removeEventHandler(MouseEvent.MOUSE_PRESSED, mousePressedEventHandler); arrowButton.removeEventHandler(MouseEvent.MOUSE_RELEASED, mouseReleasedEventHandler); arrowButton.removeEventHandler(MouseEvent.MOUSE_EXITED, mouseExitedEventHandler); } }
getChildren().setAll(rippler); JFXDepthManager.setDepth(getSkinnable(), 1); getSkinnable().setPickOnBounds(false); if (!getSkinnable().isPressed()) { rippler.setOverlayVisible(true); if (displayNode != null) { if (colorLabelVisible.get()) { displayNode.setText(JFXNodeUtils.colorToHex(getSkinnable().getValue())); } else { displayNode.setText("");
/*************************************************************************** * * * Public API * * * **************************************************************************/ @Override protected void layoutChildren(final double x, final double y, final double w, final double h) { super.layoutChildren(x, y, w, h); final double height = getSkinnable().getHeight(); linesWrapper.layoutLines(x, y, w, h, height, promptText == null ? 0 : snapPositionX(promptText.getBaselineOffset() + promptText.getLayoutBounds().getHeight() * .36)); errorContainer.layoutPane(x, height + linesWrapper.focusedLine.getHeight(), w, h); linesWrapper.updateLabelFloatLayout(); if (invalid) { invalid = false; // update validation container errorContainer.invalid(w); // focus linesWrapper.invalid(); } }
private void createPromptNode() { if (promptText != null || !linesWrapper.usePromptText.get()) { return; } promptText = new Text(); StackPane.setAlignment(promptText, Pos.CENTER_LEFT); // create my custom pane for the prompt node promptText.textProperty().bind(getSkinnable().promptTextProperty()); promptText.fillProperty().bind(linesWrapper.animatedPromptTextFill); promptText.getStyleClass().addAll("text"); promptText.getTransforms().add(linesWrapper.promptTextScale); promptText.visibleProperty().bind(linesWrapper.usePromptText); promptText.setTranslateX(1); linesWrapper.promptContainer.getChildren().add(promptText); if (getSkinnable().isFocused() && ((JFXComboBox<T>) getSkinnable()).isLabelFloat()) { promptText.setTranslateY(-snapPositionY(promptText.getBaselineOffset() + promptText.getLayoutBounds().getHeight() * .36)); linesWrapper.promptTextScale.setX(0.85); linesWrapper.promptTextScale.setY(0.85); } }
private void evalComboBoxField() { ComboBoxBase comboField = (ComboBoxBase) srcControl.get(); Object value = comboField.getValue(); hasErrors.set(value == null || value.toString().isEmpty()); } }