mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-18 08:16:58 -04:00
Fix blank page of add authlib-injector server dialog
This commit is contained in:
parent
a853374a88
commit
e9db183d54
@ -18,11 +18,12 @@
|
|||||||
package org.jackhuang.hmcl.ui.animation;
|
package org.jackhuang.hmcl.ui.animation;
|
||||||
|
|
||||||
import javafx.animation.KeyFrame;
|
import javafx.animation.KeyFrame;
|
||||||
|
import javafx.util.Duration;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@FunctionalInterface
|
|
||||||
public interface AnimationProducer {
|
public interface AnimationProducer {
|
||||||
|
void init(AnimationHandler handler);
|
||||||
|
|
||||||
List<KeyFrame> animate(AnimationHandler handler);
|
List<KeyFrame> animate(AnimationHandler handler);
|
||||||
}
|
}
|
||||||
|
@ -20,17 +20,43 @@ package org.jackhuang.hmcl.ui.animation;
|
|||||||
import javafx.animation.Interpolator;
|
import javafx.animation.Interpolator;
|
||||||
import javafx.animation.KeyFrame;
|
import javafx.animation.KeyFrame;
|
||||||
import javafx.animation.KeyValue;
|
import javafx.animation.KeyValue;
|
||||||
|
import javafx.scene.Node;
|
||||||
import javafx.util.Duration;
|
import javafx.util.Duration;
|
||||||
|
import org.jackhuang.hmcl.util.Lang;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.function.BiFunction;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
public enum ContainerAnimations {
|
public enum ContainerAnimations {
|
||||||
NONE(c -> Collections.emptyList()),
|
NONE(c -> {
|
||||||
|
c.getPreviousNode().setTranslateX(0);
|
||||||
|
c.getPreviousNode().setTranslateY(0);
|
||||||
|
c.getPreviousNode().setScaleX(1);
|
||||||
|
c.getPreviousNode().setScaleY(1);
|
||||||
|
c.getPreviousNode().setOpacity(1);
|
||||||
|
c.getCurrentNode().setTranslateX(0);
|
||||||
|
c.getCurrentNode().setTranslateY(0);
|
||||||
|
c.getCurrentNode().setScaleX(1);
|
||||||
|
c.getCurrentNode().setScaleY(1);
|
||||||
|
c.getCurrentNode().setOpacity(1);
|
||||||
|
}, c -> Collections.emptyList()),
|
||||||
/**
|
/**
|
||||||
* A fade between the old and new view
|
* A fade between the old and new view
|
||||||
*/
|
*/
|
||||||
FADE(c ->
|
FADE(c -> {
|
||||||
|
c.getPreviousNode().setTranslateX(0);
|
||||||
|
c.getPreviousNode().setTranslateY(0);
|
||||||
|
c.getPreviousNode().setScaleX(1);
|
||||||
|
c.getPreviousNode().setScaleY(1);
|
||||||
|
c.getCurrentNode().setTranslateX(0);
|
||||||
|
c.getCurrentNode().setTranslateY(0);
|
||||||
|
c.getCurrentNode().setScaleX(1);
|
||||||
|
c.getCurrentNode().setScaleY(1);
|
||||||
|
}, c ->
|
||||||
Arrays.asList(new KeyFrame(Duration.ZERO,
|
Arrays.asList(new KeyFrame(Duration.ZERO,
|
||||||
new KeyValue(c.getPreviousNode().opacityProperty(), 1.0D, Interpolator.EASE_BOTH),
|
new KeyValue(c.getPreviousNode().opacityProperty(), 1.0D, Interpolator.EASE_BOTH),
|
||||||
new KeyValue(c.getCurrentNode().opacityProperty(), 0.0D, Interpolator.EASE_BOTH)),
|
new KeyValue(c.getCurrentNode().opacityProperty(), 0.0D, Interpolator.EASE_BOTH)),
|
||||||
@ -40,7 +66,12 @@ public enum ContainerAnimations {
|
|||||||
/**
|
/**
|
||||||
* A zoom effect
|
* A zoom effect
|
||||||
*/
|
*/
|
||||||
ZOOM_IN(c ->
|
ZOOM_IN(c -> {
|
||||||
|
c.getPreviousNode().setTranslateX(0);
|
||||||
|
c.getPreviousNode().setTranslateY(0);
|
||||||
|
c.getCurrentNode().setTranslateX(0);
|
||||||
|
c.getCurrentNode().setTranslateY(0);
|
||||||
|
}, c ->
|
||||||
Arrays.asList(new KeyFrame(Duration.ZERO,
|
Arrays.asList(new KeyFrame(Duration.ZERO,
|
||||||
new KeyValue(c.getPreviousNode().scaleXProperty(), 1, Interpolator.EASE_BOTH),
|
new KeyValue(c.getPreviousNode().scaleXProperty(), 1, Interpolator.EASE_BOTH),
|
||||||
new KeyValue(c.getPreviousNode().scaleYProperty(), 1, Interpolator.EASE_BOTH),
|
new KeyValue(c.getPreviousNode().scaleYProperty(), 1, Interpolator.EASE_BOTH),
|
||||||
@ -52,7 +83,12 @@ public enum ContainerAnimations {
|
|||||||
/**
|
/**
|
||||||
* A zoom effect
|
* A zoom effect
|
||||||
*/
|
*/
|
||||||
ZOOM_OUT(c ->
|
ZOOM_OUT(c -> {
|
||||||
|
c.getPreviousNode().setTranslateX(0);
|
||||||
|
c.getPreviousNode().setTranslateY(0);
|
||||||
|
c.getCurrentNode().setTranslateX(0);
|
||||||
|
c.getCurrentNode().setTranslateY(0);
|
||||||
|
}, c ->
|
||||||
(Arrays.asList(new KeyFrame(Duration.ZERO,
|
(Arrays.asList(new KeyFrame(Duration.ZERO,
|
||||||
new KeyValue(c.getPreviousNode().scaleXProperty(), 1, Interpolator.EASE_BOTH),
|
new KeyValue(c.getPreviousNode().scaleXProperty(), 1, Interpolator.EASE_BOTH),
|
||||||
new KeyValue(c.getPreviousNode().scaleYProperty(), 1, Interpolator.EASE_BOTH),
|
new KeyValue(c.getPreviousNode().scaleYProperty(), 1, Interpolator.EASE_BOTH),
|
||||||
@ -64,7 +100,14 @@ public enum ContainerAnimations {
|
|||||||
/**
|
/**
|
||||||
* A swipe effect
|
* A swipe effect
|
||||||
*/
|
*/
|
||||||
SWIPE_LEFT(c ->
|
SWIPE_LEFT(c -> {
|
||||||
|
c.getPreviousNode().setScaleX(1);
|
||||||
|
c.getPreviousNode().setScaleY(1);
|
||||||
|
c.getPreviousNode().setOpacity(0);
|
||||||
|
c.getCurrentNode().setScaleX(1);
|
||||||
|
c.getCurrentNode().setScaleY(1);
|
||||||
|
c.getCurrentNode().setOpacity(1);
|
||||||
|
}, c ->
|
||||||
Arrays.asList(new KeyFrame(Duration.ZERO,
|
Arrays.asList(new KeyFrame(Duration.ZERO,
|
||||||
new KeyValue(c.getCurrentNode().translateXProperty(), c.getCurrentRoot().getWidth(), Interpolator.EASE_BOTH),
|
new KeyValue(c.getCurrentNode().translateXProperty(), c.getCurrentRoot().getWidth(), Interpolator.EASE_BOTH),
|
||||||
new KeyValue(c.getPreviousNode().translateXProperty(), 0, Interpolator.EASE_BOTH)),
|
new KeyValue(c.getPreviousNode().translateXProperty(), 0, Interpolator.EASE_BOTH)),
|
||||||
@ -75,7 +118,14 @@ public enum ContainerAnimations {
|
|||||||
/**
|
/**
|
||||||
* A swipe effect
|
* A swipe effect
|
||||||
*/
|
*/
|
||||||
SWIPE_RIGHT(c ->
|
SWIPE_RIGHT(c -> {
|
||||||
|
c.getPreviousNode().setScaleX(1);
|
||||||
|
c.getPreviousNode().setScaleY(1);
|
||||||
|
c.getPreviousNode().setOpacity(0);
|
||||||
|
c.getCurrentNode().setScaleX(1);
|
||||||
|
c.getCurrentNode().setScaleY(1);
|
||||||
|
c.getCurrentNode().setOpacity(1);
|
||||||
|
}, c ->
|
||||||
Arrays.asList(new KeyFrame(Duration.ZERO,
|
Arrays.asList(new KeyFrame(Duration.ZERO,
|
||||||
new KeyValue(c.getCurrentNode().translateXProperty(), -c.getCurrentRoot().getWidth(), Interpolator.EASE_BOTH),
|
new KeyValue(c.getCurrentNode().translateXProperty(), -c.getCurrentRoot().getWidth(), Interpolator.EASE_BOTH),
|
||||||
new KeyValue(c.getPreviousNode().translateXProperty(), 0, Interpolator.EASE_BOTH)),
|
new KeyValue(c.getPreviousNode().translateXProperty(), 0, Interpolator.EASE_BOTH)),
|
||||||
@ -85,8 +135,18 @@ public enum ContainerAnimations {
|
|||||||
|
|
||||||
private final AnimationProducer animationProducer;
|
private final AnimationProducer animationProducer;
|
||||||
|
|
||||||
ContainerAnimations(AnimationProducer animationProducer) {
|
ContainerAnimations(Consumer<AnimationHandler> init, Function<AnimationHandler, List<KeyFrame>> animationProducer) {
|
||||||
this.animationProducer = animationProducer;
|
this.animationProducer = new AnimationProducer() {
|
||||||
|
@Override
|
||||||
|
public void init(AnimationHandler handler) {
|
||||||
|
init.accept(handler);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<KeyFrame> animate(AnimationHandler handler) {
|
||||||
|
return animationProducer.apply(handler);
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public AnimationProducer getAnimationProducer() {
|
public AnimationProducer getAnimationProducer() {
|
||||||
|
@ -19,6 +19,7 @@ package org.jackhuang.hmcl.ui.animation;
|
|||||||
|
|
||||||
import javafx.animation.KeyFrame;
|
import javafx.animation.KeyFrame;
|
||||||
import javafx.animation.Timeline;
|
import javafx.animation.Timeline;
|
||||||
|
import javafx.application.Platform;
|
||||||
import javafx.scene.Node;
|
import javafx.scene.Node;
|
||||||
import javafx.scene.Parent;
|
import javafx.scene.Parent;
|
||||||
import javafx.scene.layout.StackPane;
|
import javafx.scene.layout.StackPane;
|
||||||
@ -78,6 +79,10 @@ public final class TransitionHandler implements AnimationHandler {
|
|||||||
|
|
||||||
updateContent(newView);
|
updateContent(newView);
|
||||||
|
|
||||||
|
transition.init(this);
|
||||||
|
|
||||||
|
// runLater or "init" will not work
|
||||||
|
Platform.runLater(() -> {
|
||||||
Timeline nowAnimation = new Timeline();
|
Timeline nowAnimation = new Timeline();
|
||||||
nowAnimation.getKeyFrames().addAll(transition.animate(this));
|
nowAnimation.getKeyFrames().addAll(transition.animate(this));
|
||||||
nowAnimation.getKeyFrames().add(new KeyFrame(duration, e -> {
|
nowAnimation.getKeyFrames().add(new KeyFrame(duration, e -> {
|
||||||
@ -86,6 +91,7 @@ public final class TransitionHandler implements AnimationHandler {
|
|||||||
}));
|
}));
|
||||||
nowAnimation.play();
|
nowAnimation.play();
|
||||||
animation = nowAnimation;
|
animation = nowAnimation;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateContent(Node newView) {
|
private void updateContent(Node newView) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user