Search in sources :

Example 1 with JFXKeyFrame

use of com.jfoenix.transitions.JFXKeyFrame in project JFoenix by jfoenixadmin.

the class JFXDrawer method addAnimatedKeyValue.

public void addAnimatedKeyValue(Node node, List<JFXDrawerKeyValue<?>> values) {
    Collection<JFXKeyValue<?>> modifiedValues = new ArrayList<>();
    for (JFXDrawerKeyValue value : values) {
        JFXKeyValue modifiedValue = JFXKeyValue.builder().setEndValueSupplier(() -> currentValue.get(value.getTarget()).get()).setAnimateCondition(() -> node.getScene() != null && value.isValid()).setTargetSupplier(() -> value.getTarget()).setInterpolator(value.getInterpolator()).build();
        modifiedValues.add(modifiedValue);
        currentValue.put(value.getTarget(), isClosed() ? value.getCloseValueSupplier() : value.getOpenValueSupplier());
        initValues.put(value.getTarget(), value);
    }
    animatedValues.addAll(modifiedValues);
    final JFXKeyFrame keyFrame = new JFXKeyFrame(duration, modifiedValues.toArray(new JFXKeyValue[0]));
    try {
        translateTimer.addKeyFrame(keyFrame);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Also used : JFXDrawerKeyValue(com.jfoenix.transitions.JFXDrawerKeyValue) JFXKeyFrame(com.jfoenix.transitions.JFXKeyFrame) JFXKeyValue(com.jfoenix.transitions.JFXKeyValue) ArrayList(java.util.ArrayList)

Example 2 with JFXKeyFrame

use of com.jfoenix.transitions.JFXKeyFrame in project JFoenix by jfoenixadmin.

the class PromptLinesWrapper method init.

public void init(Runnable createPromptNodeRunnable, Node... cachedNodes) {
    animatedPromptTextFill = new SimpleObjectProperty<>(promptTextFill.get());
    usePromptText = Bindings.createBooleanBinding(this::usePromptText, valueProperty, promptTextProperty, control.labelFloatProperty(), promptTextFill);
    // draw lines
    line.setManaged(false);
    line.getStyleClass().add("input-line");
    line.setBackground(new Background(new BackgroundFill(control.getUnFocusColor(), CornerRadii.EMPTY, Insets.EMPTY)));
    // focused line
    focusedLine.setManaged(false);
    focusedLine.getStyleClass().add("input-focused-line");
    focusedLine.setBackground(new Background(new BackgroundFill(control.getFocusColor(), CornerRadii.EMPTY, Insets.EMPTY)));
    focusedLine.setOpacity(0);
    focusedLine.getTransforms().add(scale);
    if (usePromptText.get()) {
        createPromptNodeRunnable.run();
    }
    usePromptText.addListener(observable -> {
        createPromptNodeRunnable.run();
        control.requestLayout();
    });
    final Supplier<WritableValue<Number>> promptTargetYSupplier = () -> promptTextSupplier.get() == null ? null : promptTextSupplier.get().translateYProperty();
    final Supplier<WritableValue<Number>> promptTargetXSupplier = () -> promptTextSupplier.get() == null ? null : promptTextSupplier.get().translateXProperty();
    focusTimer = new JFXAnimationTimer(new JFXKeyFrame(Duration.millis(1), JFXKeyValue.builder().setTarget(focusedLine.opacityProperty()).setEndValue(1).setInterpolator(Interpolator.EASE_BOTH).setAnimateCondition(() -> control.isFocused()).build()), new JFXKeyFrame(Duration.millis(160), JFXKeyValue.builder().setTarget(scale.xProperty()).setEndValue(1).setInterpolator(Interpolator.EASE_BOTH).setAnimateCondition(() -> control.isFocused()).build(), JFXKeyValue.builder().setTarget(animatedPromptTextFill).setEndValueSupplier(() -> control.getFocusColor()).setInterpolator(Interpolator.EASE_BOTH).setAnimateCondition(() -> control.isFocused() && control.isLabelFloat()).build(), JFXKeyValue.builder().setTargetSupplier(promptTargetXSupplier).setEndValueSupplier(() -> clip.getX()).setAnimateCondition(() -> control.isLabelFloat()).setInterpolator(Interpolator.EASE_BOTH).build(), JFXKeyValue.builder().setTargetSupplier(promptTargetYSupplier).setEndValueSupplier(() -> -contentHeight).setAnimateCondition(() -> control.isLabelFloat()).setInterpolator(Interpolator.EASE_BOTH).build(), JFXKeyValue.builder().setTarget(promptTextScale.xProperty()).setEndValue(0.85).setAnimateCondition(() -> control.isLabelFloat()).setInterpolator(Interpolator.EASE_BOTH).build(), JFXKeyValue.builder().setTarget(promptTextScale.yProperty()).setEndValue(0.85).setAnimateCondition(() -> control.isLabelFloat()).setInterpolator(Interpolator.EASE_BOTH).build()));
    unfocusTimer = new JFXAnimationTimer(new JFXKeyFrame(Duration.millis(160), JFXKeyValue.builder().setTargetSupplier(promptTargetXSupplier).setEndValue(0).setInterpolator(Interpolator.EASE_BOTH).build(), JFXKeyValue.builder().setTargetSupplier(promptTargetYSupplier).setEndValue(0).setInterpolator(Interpolator.EASE_BOTH).build(), JFXKeyValue.builder().setTarget(promptTextScale.xProperty()).setEndValue(1).setInterpolator(Interpolator.EASE_BOTH).build(), JFXKeyValue.builder().setTarget(promptTextScale.yProperty()).setEndValue(1).setInterpolator(Interpolator.EASE_BOTH).build()));
    promptContainer.getStyleClass().add("prompt-container");
    promptContainer.setManaged(false);
    promptContainer.setMouseTransparent(true);
    // clip prompt container
    clip.setSmooth(false);
    clip.setX(0);
    if (control instanceof JFXTextField) {
        final InvalidationListener leadingListener = obs -> {
            final Node leading = ((JFXTextField) control).getLeadingGraphic();
            if (leading == null) {
                clip.xProperty().unbind();
                clip.setX(0);
            } else {
                clip.xProperty().bind(((Region) leading).widthProperty().negate());
            }
        };
        ((JFXTextField) control).leadingGraphicProperty().addListener(leadingListener);
        leadingListener.invalidated(null);
    }
    clip.widthProperty().bind(promptContainer.widthProperty().add(clip.xProperty().negate()));
    promptContainer.setClip(clip);
    focusTimer.setOnFinished(() -> animating = false);
    unfocusTimer.setOnFinished(() -> animating = false);
    focusTimer.setCacheNodes(cachedNodes);
    unfocusTimer.setCacheNodes(cachedNodes);
    // handle animation on focus gained/lost event
    control.focusedProperty().addListener(observable -> {
        if (control.isFocused()) {
            focus();
        } else {
            unFocus();
        }
    });
    promptTextFill.addListener(observable -> {
        if (!control.isLabelFloat() || !control.isFocused()) {
            animatedPromptTextFill.set(promptTextFill.get());
        }
    });
    updateDisabled();
}
Also used : BooleanBinding(javafx.beans.binding.BooleanBinding) Control(javafx.scene.control.Control) StackPane(javafx.scene.layout.StackPane) Bindings(javafx.beans.binding.Bindings) Supplier(java.util.function.Supplier) JFXKeyFrame(com.jfoenix.transitions.JFXKeyFrame) InvalidationListener(javafx.beans.InvalidationListener) JFXKeyValue(com.jfoenix.transitions.JFXKeyValue) Insets(javafx.geometry.Insets) ComboBox(javafx.scene.control.ComboBox) BorderWidths(javafx.scene.layout.BorderWidths) BackgroundFill(javafx.scene.layout.BackgroundFill) Color(javafx.scene.paint.Color) ObjectProperty(javafx.beans.property.ObjectProperty) Node(javafx.scene.Node) Border(javafx.scene.layout.Border) Rectangle(javafx.scene.shape.Rectangle) JFXAnimationTimer(com.jfoenix.transitions.JFXAnimationTimer) Background(javafx.scene.layout.Background) BorderStrokeStyle(javafx.scene.layout.BorderStrokeStyle) BorderStroke(javafx.scene.layout.BorderStroke) Text(javafx.scene.text.Text) Duration(javafx.util.Duration) Region(javafx.scene.layout.Region) Interpolator(javafx.animation.Interpolator) SimpleObjectProperty(javafx.beans.property.SimpleObjectProperty) Paint(javafx.scene.paint.Paint) IFXLabelFloatControl(com.jfoenix.controls.base.IFXLabelFloatControl) Scale(javafx.scene.transform.Scale) ObservableValue(javafx.beans.value.ObservableValue) WritableValue(javafx.beans.value.WritableValue) JFXTextField(com.jfoenix.controls.JFXTextField) CornerRadii(javafx.scene.layout.CornerRadii) JFXAnimationTimer(com.jfoenix.transitions.JFXAnimationTimer) Background(javafx.scene.layout.Background) JFXKeyFrame(com.jfoenix.transitions.JFXKeyFrame) BackgroundFill(javafx.scene.layout.BackgroundFill) JFXTextField(com.jfoenix.controls.JFXTextField) Node(javafx.scene.Node) InvalidationListener(javafx.beans.InvalidationListener) WritableValue(javafx.beans.value.WritableValue)

Aggregations

JFXKeyFrame (com.jfoenix.transitions.JFXKeyFrame)2 JFXKeyValue (com.jfoenix.transitions.JFXKeyValue)2 JFXTextField (com.jfoenix.controls.JFXTextField)1 IFXLabelFloatControl (com.jfoenix.controls.base.IFXLabelFloatControl)1 JFXAnimationTimer (com.jfoenix.transitions.JFXAnimationTimer)1 JFXDrawerKeyValue (com.jfoenix.transitions.JFXDrawerKeyValue)1 ArrayList (java.util.ArrayList)1 Supplier (java.util.function.Supplier)1 Interpolator (javafx.animation.Interpolator)1 InvalidationListener (javafx.beans.InvalidationListener)1 Bindings (javafx.beans.binding.Bindings)1 BooleanBinding (javafx.beans.binding.BooleanBinding)1 ObjectProperty (javafx.beans.property.ObjectProperty)1 SimpleObjectProperty (javafx.beans.property.SimpleObjectProperty)1 ObservableValue (javafx.beans.value.ObservableValue)1 WritableValue (javafx.beans.value.WritableValue)1 Insets (javafx.geometry.Insets)1 Node (javafx.scene.Node)1 ComboBox (javafx.scene.control.ComboBox)1 Control (javafx.scene.control.Control)1