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();
}
}
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();
}
Aggregations