From 50aa392db20de22251a264895ca44fb8e6ba1440 Mon Sep 17 00:00:00 2001 From: Tom Schindl Date: Wed, 23 Oct 2013 16:10:00 +0200 Subject: Bug 420181 - [mobile] Add a fade transition --- .../org/eclipse/fx/ui/mobile/TransitionType.java | 3 +- .../ui/mobile/animations/TransitionDelegate.java | 67 ++++++++++++++++++++++ 2 files changed, 69 insertions(+), 1 deletion(-) (limited to 'bundles/runtime/org.eclipse.fx.ui.mobile') diff --git a/bundles/runtime/org.eclipse.fx.ui.mobile/src/org/eclipse/fx/ui/mobile/TransitionType.java b/bundles/runtime/org.eclipse.fx.ui.mobile/src/org/eclipse/fx/ui/mobile/TransitionType.java index feb77eff7..584f56782 100644 --- a/bundles/runtime/org.eclipse.fx.ui.mobile/src/org/eclipse/fx/ui/mobile/TransitionType.java +++ b/bundles/runtime/org.eclipse.fx.ui.mobile/src/org/eclipse/fx/ui/mobile/TransitionType.java @@ -16,7 +16,8 @@ public enum TransitionType { NONE(null), SLIDE_LEFT(TransitionDelegate.slideLeft()), SLIDE_RIGHT(TransitionDelegate.slideRight()), - FADE(TransitionDelegate.fade()); + FADE(TransitionDelegate.fade()), + ZOOM_SLIDE(TransitionDelegate.zoomSlide()); private final TransitionDelegate delegate; diff --git a/bundles/runtime/org.eclipse.fx.ui.mobile/src/org/eclipse/fx/ui/mobile/animations/TransitionDelegate.java b/bundles/runtime/org.eclipse.fx.ui.mobile/src/org/eclipse/fx/ui/mobile/animations/TransitionDelegate.java index a7467e30b..e045e8bb0 100644 --- a/bundles/runtime/org.eclipse.fx.ui.mobile/src/org/eclipse/fx/ui/mobile/animations/TransitionDelegate.java +++ b/bundles/runtime/org.eclipse.fx.ui.mobile/src/org/eclipse/fx/ui/mobile/animations/TransitionDelegate.java @@ -4,10 +4,17 @@ import javafx.animation.Animation; import javafx.animation.FadeTransition; import javafx.animation.Interpolator; import javafx.animation.ParallelTransition; +import javafx.animation.ParallelTransitionBuilder; +import javafx.animation.ScaleTransition; +import javafx.animation.ScaleTransitionBuilder; +import javafx.animation.SequentialTransition; +import javafx.animation.SequentialTransitionBuilder; import javafx.animation.TranslateTransition; +import javafx.animation.TranslateTransitionBuilder; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Bounds; +import javafx.scene.Node; import javafx.scene.layout.BorderPane; import javafx.util.Duration; @@ -120,4 +127,64 @@ public abstract class TransitionDelegate { } }; } + + public static TransitionDelegate zoomSlide() { + return new TransitionDelegate() { + + @Override + protected void resetProperties(Card from, Card to) { + to.setTranslateX(0); + to.setScaleX(1); + to.setScaleY(1); + + from.setTranslateX(0); + from.setScaleX(1); + from.setScaleY(1); + + to.setEffect(null); + from.setEffect(null); + } + + @Override + protected Animation createAndPrepareAnimation(Card from, Card to) { + double deltaX = -from.getBoundsInLocal().getWidth(); + to.setTranslateX(-deltaX); + +// curNode.setEffect(new DropShadow(2, 2, 2, Color.RED)); +// newNode.setEffect(new DropShadow(2, 2, 2, Color.RED)); + + TranslateTransition slideFrom = translateTransition(from,deltaX); + TranslateTransition slideTo = translateTransition(to,deltaX); + + ScaleTransition zoomOutFrom = scaleTransition(from, 0.7); + ScaleTransition zoomOutTo = scaleTransition(from, 0.7); + + ScaleTransition zoomInFrom = scaleTransition(from, 1); + ScaleTransition zoomInTo = scaleTransition(from, 1); + + return new SequentialTransition( + new ParallelTransition(zoomOutFrom, zoomOutTo), + new ParallelTransition(slideFrom, slideTo), + new ParallelTransition(zoomInFrom, zoomInTo) + ); + } + + private TranslateTransition translateTransition(Node node, double deltaX) { + TranslateTransition t = new TranslateTransition(Duration.millis(300)); + t.setNode(node); + t.setInterpolator(Interpolator.EASE_BOTH); + t.setByX(deltaX); + return t; + } + + private ScaleTransition scaleTransition(Node node, double to) { + ScaleTransition t = new ScaleTransition(Duration.millis(300)); + t.setNode(node); + t.setToX(to); + t.setToY(to); + t.setInterpolator(Interpolator.EASE_BOTH); + return t; + } + }; + } } -- cgit v1.2.3