/** * {@inheritDoc} */ public JFXToggleButton() { initialize(); // init in scene builder workaround ( TODO : remove when JFoenix is well integrated in scenebuilder by gluon ) StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace(); for (int i = 0; i < stackTraceElements.length && i < 15; i++) { if (stackTraceElements[i].getClassName().toLowerCase().contains(".scenebuilder.kit.fxom.")) { this.setText("ToggleButton"); break; } } }
@Override public StyleableBooleanProperty getStyleableProperty(JFXToggleButton control) { return control.disableAnimationProperty(); } };
@Override public StyleableBooleanProperty getStyleableProperty(JFXToggleButton control) { return control.disableVisualFocusProperty(); } };
double circleRadius = toggleButton.getSize(); line.setStroke(getSkinnable().isSelected() ? toggleButton.getToggleLineColor() : toggleButton.getUnToggleLineColor()); line.setStartX(0); line.setStartY(0); circle.setFill(getSkinnable().isSelected() ? toggleButton.getToggleColor() : toggleButton.getUnToggleColor()); circle.setCenterX(-circleRadius); circle.setCenterY(0); toggleButton.focusedProperty().addListener((o, oldVal, newVal) -> { if (!toggleButton.isDisableVisualFocus()) { if (newVal) { if (!getSkinnable().isPressed()) { toggleButton.pressedProperty().addListener(observable -> rippler.setOverlayVisible(false)); if (!toggleButton.isDisableAnimation()) { timer.reverseAndContinue(); } else { .setEndValueSupplier(() -> computeTranslation(circleRadius, line)) .setInterpolator(Interpolator.EASE_BOTH) .setAnimateCondition(() -> !((JFXToggleButton) getSkinnable()).isDisableAnimation()) .build(), .setTarget(line.strokeProperty()) .setEndValueSupplier(() -> getSkinnable().isSelected() ? ((JFXToggleButton) getSkinnable()).getToggleLineColor()
@Override protected void handleControlPropertyChanged(String p) { if ("TOGGLE_COLOR".equals(p)) { if (getSkinnable().isSelected()) { circle.setFill(((JFXToggleButton) getSkinnable()).getToggleColor()); } } else if ("UNTOGGLE_COLOR".equals(p)) { if (!getSkinnable().isSelected()) { circle.setFill(((JFXToggleButton) getSkinnable()).getUnToggleColor()); } } else if ("TOGGLE_LINE_COLOR".equals(p)) { if (getSkinnable().isSelected()) { line.setStroke(((JFXToggleButton) getSkinnable()).getToggleLineColor()); } } else if ("UNTOGGLE_LINE_COLOR".equals(p)) { if (!getSkinnable().isSelected()) { line.setStroke(((JFXToggleButton) getSkinnable()).getUnToggleLineColor()); } } else { super.handleControlPropertyChanged(p); } }
@Override public void start(Stage stage) throws Exception { final VBox pane = new VBox(); pane.setSpacing(30); pane.setStyle("-fx-background-color:#EEE; -fx-padding: 40;"); ToggleButton button = new ToggleButton("JavaFx Toggle"); pane.getChildren().add(button); JFXToggleButton toggleButton = new JFXToggleButton(); toggleButton.setText("New Skin"); pane.getChildren().add(toggleButton); JFXToggleNode node = new JFXToggleNode(); final GlyphIcon heartIcon = GlyphsBuilder.create(FontAwesomeIconView.class) .glyph(FontAwesomeIcon.HEART) .build(); heartIcon.setStyle("-fx-padding: 10"); node.setGraphic(heartIcon); pane.getChildren().add(node); final Scene scene = new Scene(pane, 600, 400, Color.valueOf("#EEE")); stage.setTitle("JFX Toggle Button Demo "); scene.getStylesheets() .add(ToggleButtonDemo.class.getResource("/css/jfoenix-components.css").toExternalForm()); stage.setScene(scene); stage.setResizable(false); stage.show(); }
private void initialize() { this.getStyleClass().add(DEFAULT_STYLE_CLASS); // it's up for the user to add this behavior // toggleColor.addListener((o, oldVal, newVal) -> { // // update line color in case not set by the user // if(newVal instanceof Color) // toggleLineColor.set(((Color)newVal).desaturate().desaturate().brighter()); // }); }
@Override public List<CssMetaData<? extends Styleable, ?>> getControlCssMetaData() { if (STYLEABLES == null) { final List<CssMetaData<? extends Styleable, ?>> styleables = new ArrayList<>(Control.getClassCssMetaData()); styleables.addAll(getClassCssMetaData()); styleables.addAll(Labeled.getClassCssMetaData()); STYLEABLES = Collections.unmodifiableList(styleables); } return STYLEABLES; }
double circleRadius = toggleButton.getSize(); line.setStroke(getSkinnable().isSelected() ? toggleButton.getToggleLineColor() : toggleButton.getUnToggleLineColor()); line.setStartX(0); line.setStartY(0); circle.setFill(getSkinnable().isSelected() ? toggleButton.getToggleColor() : toggleButton.getUnToggleColor()); circle.setCenterX(-circleRadius); circle.setCenterY(0); toggleButton.focusedProperty().addListener((o, oldVal, newVal) -> { if (!toggleButton.isDisableVisualFocus()) { if (newVal) { if (!getSkinnable().isPressed()) { toggleButton.pressedProperty().addListener(observable -> rippler.setOverlayVisible(false)); if (!toggleButton.isDisableAnimation()) { timer.reverseAndContinue(); } else { .setEndValueSupplier(() -> computeTranslation(circleRadius, line)) .setInterpolator(Interpolator.EASE_BOTH) .setAnimateCondition(() -> !((JFXToggleButton) getSkinnable()).isDisableAnimation()) .build(), .setTarget(line.strokeProperty()) .setEndValueSupplier(() -> getSkinnable().isSelected() ? ((JFXToggleButton) getSkinnable()).getToggleLineColor()
private void initialize() { this.getStyleClass().add(DEFAULT_STYLE_CLASS); // it's up for the user to add this behavior // toggleColor.addListener((o, oldVal, newVal) -> { // // update line color in case not set by the user // if(newVal instanceof Color) // toggleLineColor.set(((Color)newVal).desaturate().desaturate().brighter()); // }); }
@Override public List<CssMetaData<? extends Styleable, ?>> getControlCssMetaData() { if (STYLEABLES == null) { final List<CssMetaData<? extends Styleable, ?>> styleables = new ArrayList<>(Control.getClassCssMetaData()); styleables.addAll(getClassCssMetaData()); styleables.addAll(Labeled.getClassCssMetaData()); STYLEABLES = Collections.unmodifiableList(styleables); } return STYLEABLES; }
/** * {@inheritDoc} */ public JFXToggleButton() { initialize(); // init in scene builder workaround ( TODO : remove when JFoenix is well integrated in scenebuilder by gluon ) StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace(); for (int i = 0; i < stackTraceElements.length && i < 15; i++) { if (stackTraceElements[i].getClassName().toLowerCase().contains(".scenebuilder.kit.fxom.")) { this.setText("ToggleButton"); break; } } }
public final Boolean isDisableAnimation() { return disableAnimation != null && this.disableAnimationProperty().get(); }
public final void setDisableVisualFocus(final Boolean disabled) { this.disableVisualFocusProperty().set(disabled); }
public final void setDisableAnimation(final Boolean disabled) { this.disableAnimationProperty().set(disabled); }
public final Boolean isDisableVisualFocus() { return disableVisualFocus != null && this.disableVisualFocusProperty().get(); }
@Override public StyleableBooleanProperty getStyleableProperty(JFXToggleButton control) { return control.disableAnimationProperty(); } };
@Override public StyleableBooleanProperty getStyleableProperty(JFXToggleButton control) { return control.disableVisualFocusProperty(); } };
public final Boolean isDisableAnimation() { return disableAnimation != null && this.disableAnimationProperty().get(); }
public final Boolean isDisableVisualFocus() { return disableVisualFocus != null && this.disableVisualFocusProperty().get(); }