├── .gitignore ├── src ├── test │ ├── resources │ │ ├── themes │ │ │ ├── button.css │ │ │ ├── global.css │ │ │ ├── dark.css │ │ │ └── light.css │ │ └── fxml │ │ │ ├── AnimatedValueLabel.fxml │ │ │ ├── AnimatedContainer.fxml │ │ │ ├── AnimatedSwitcher.fxml │ │ │ └── Animated.fxml │ └── java │ │ └── eu │ │ └── iamgio │ │ └── animatedtest │ │ ├── fxml │ │ ├── FxmlAnimatedContainerTest.java │ │ ├── FxmlAnimatedTest.java │ │ ├── FxmlAnimatedValueLabelTest.java │ │ └── FxmlAnimatedSwitcherTest.java │ │ ├── AnimatedCurrencyTest.java │ │ ├── AnimatedSwitcherTest.java │ │ ├── TestUtil.java │ │ ├── AnimatedLayoutTest.java │ │ ├── AnimatedRootSwitchTest.java │ │ ├── AnimatedThemeTest.java │ │ ├── AnimatedButtonTest.java │ │ ├── AnimatedShadowTest.java │ │ ├── AnimatedContainerTest.java │ │ └── AnimatedTest.java └── main │ ├── java │ └── eu │ │ └── iamgio │ │ └── animated │ │ ├── transition │ │ ├── EntranceAndExitAnimationCompatible.java │ │ ├── animations │ │ │ ├── RequiresScene.java │ │ │ ├── None.java │ │ │ └── clip │ │ │ │ ├── CircleClipOut.java │ │ │ │ ├── CircleClipIn.java │ │ │ │ ├── RectangleClipOut.java │ │ │ │ ├── RectangleClipIn.java │ │ │ │ ├── CircleClip.java │ │ │ │ ├── RectangleClip.java │ │ │ │ └── ClipAnimation.java │ │ ├── ExitAnimationCompatible.java │ │ ├── EntranceAnimationCompatible.java │ │ ├── container │ │ │ ├── AnimatedContainer.java │ │ │ ├── AnimatedVBox.java │ │ │ ├── AnimatedHBox.java │ │ │ └── AnimatedContainerHandler.java │ │ ├── AnimatedSwitcher.java │ │ ├── AnimationPair.java │ │ ├── AnimatedThemeSwitcher.java │ │ ├── Animation.java │ │ └── AnimatedLabel.java │ │ ├── binding │ │ ├── property │ │ │ ├── animation │ │ │ │ ├── BindableContextNode.java │ │ │ │ ├── OnDemandAnimationPropertyGroup.java │ │ │ │ ├── OnDemandAnimationProperty.java │ │ │ │ ├── SimpleAnimationProperty.java │ │ │ │ └── AnimationProperty.java │ │ │ └── wrapper │ │ │ │ ├── ObjectPropertyWrapper.java │ │ │ │ ├── DoublePropertyWrapper.java │ │ │ │ ├── IntegerPropertyWrapper.java │ │ │ │ └── PropertyWrapper.java │ │ ├── value │ │ │ ├── AnimatedIntValueLabel.java │ │ │ ├── AnimatedDoubleValueLabel.java │ │ │ ├── AnimatedValue.java │ │ │ ├── AnimatedValueImpl.java │ │ │ └── AnimatedValueLabel.java │ │ ├── presets │ │ │ ├── AnimatedOpacity.java │ │ │ ├── AnimatedRotation.java │ │ │ ├── AnimatedColor.java │ │ │ ├── AnimatedPrefSize.java │ │ │ ├── AnimatedScale.java │ │ │ ├── AnimatedTranslatePosition.java │ │ │ ├── AnimatedBlur.java │ │ │ ├── AnimatedDropShadow.java │ │ │ └── AnimatedLayout.java │ │ ├── event │ │ │ ├── ListenableAnimation.java │ │ │ └── AnimationEvent.java │ │ ├── CustomizableAnimation.java │ │ ├── SingleChildParent.java │ │ ├── AnimationSettings.java │ │ ├── misc │ │ │ └── AnimatedSlider.java │ │ └── Animated.java │ │ ├── util │ │ ├── ReflectionUtils.java │ │ └── PositionUtils.java │ │ └── common │ │ ├── Pausable.java │ │ └── Curve.java │ └── kotlin │ └── eu │ └── iamgio │ └── animated │ └── AnimatedExtensions.kt ├── LICENSE ├── pom.xml └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | .idea/ 3 | *.iml -------------------------------------------------------------------------------- /src/test/resources/themes/button.css: -------------------------------------------------------------------------------- 1 | .root { 2 | -fx-background-color: #1A1A1A; 3 | } 4 | 5 | .button { 6 | -fx-background-color: transparent; 7 | -fx-border-color: white; 8 | -fx-border-width: 4; 9 | -fx-text-fill: white; 10 | -fx-font-weight: bold; 11 | -fx-font-size: 16; 12 | -fx-padding: 16 32 16 32; 13 | } -------------------------------------------------------------------------------- /src/main/java/eu/iamgio/animated/transition/EntranceAndExitAnimationCompatible.java: -------------------------------------------------------------------------------- 1 | package eu.iamgio.animated.transition; 2 | 3 | /** 4 | * Represents an element that features both entrance and exit animations. 5 | */ 6 | public interface EntranceAndExitAnimationCompatible extends EntranceAnimationCompatible, 7 | ExitAnimationCompatible { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /src/test/resources/themes/global.css: -------------------------------------------------------------------------------- 1 | .central-box { 2 | -fx-padding: 32; 3 | -fx-spacing: 12; 4 | -fx-alignment: center; 5 | -fx-background-radius: 24; 6 | } 7 | 8 | .icon { 9 | -fx-background-color: #FF7373; 10 | -fx-pref-height: 50; 11 | } 12 | 13 | .title { 14 | -fx-font-size: 18; 15 | -fx-font-weight: bold; 16 | } 17 | 18 | .subtitle { 19 | -fx-font-size: 14; 20 | -fx-opacity: .8; 21 | -fx-text-alignment: center; 22 | } -------------------------------------------------------------------------------- /src/main/java/eu/iamgio/animated/binding/property/animation/BindableContextNode.java: -------------------------------------------------------------------------------- 1 | package eu.iamgio.animated.binding.property.animation; 2 | 3 | import javafx.beans.property.ObjectProperty; 4 | import javafx.scene.Node; 5 | 6 | /** 7 | * A container for a writable node property. 8 | */ 9 | public interface BindableContextNode { 10 | 11 | /** 12 | * @return the target node for the context 13 | */ 14 | ObjectProperty targetNodeProperty(); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/eu/iamgio/animated/transition/animations/RequiresScene.java: -------------------------------------------------------------------------------- 1 | package eu.iamgio.animated.transition.animations; 2 | 3 | /** 4 | * A tag interface that, when implemented by {@link animatefx.animation.AnimationFX} subclasses, 5 | * lets animations play after adding the target node to the scene. 6 | * This is required when the animation needs to access information about the scene, 7 | * but doing so may alter the visual results. 8 | */ 9 | public interface RequiresScene { 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/eu/iamgio/animated/binding/value/AnimatedIntValueLabel.java: -------------------------------------------------------------------------------- 1 | package eu.iamgio.animated.binding.value; 2 | 3 | import javafx.beans.NamedArg; 4 | 5 | /** 6 | * An {@link AnimatedValueLabel} that wraps an integer value. 7 | */ 8 | public class AnimatedIntValueLabel extends AnimatedValueLabel { 9 | 10 | /** 11 | * Instantiates an {@link AnimatedIntValueLabel}. 12 | * @param value initial wrapped value 13 | */ 14 | public AnimatedIntValueLabel(@NamedArg("value") int value) { 15 | super(value); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/test/resources/themes/dark.css: -------------------------------------------------------------------------------- 1 | .root { 2 | -fx-background-color: #1A1A1A; 3 | } 4 | 5 | .central-box { 6 | -fx-background-color: rgba(255, 255, 255, .1); 7 | } 8 | 9 | .icon { 10 | -fx-max-width: 40; 11 | -fx-shape: "M15.5,22c1.05,0,2.05-0.16,3-0.46c-4.06-1.27-7-5.06-7-9.54s2.94-8.27,7-9.54C17.55,2.16,16.55,2,15.5,2 c-5.52,0-10,4.48-10,10S9.98,22,15.5,22L15.5,22z"; 12 | } 13 | 14 | .label { 15 | -fx-text-fill: white; 16 | } 17 | 18 | .layout-test .label { 19 | -fx-font-size: 16; 20 | -fx-font-weight: bold; 21 | -fx-padding: 12; 22 | } -------------------------------------------------------------------------------- /src/main/java/eu/iamgio/animated/binding/value/AnimatedDoubleValueLabel.java: -------------------------------------------------------------------------------- 1 | package eu.iamgio.animated.binding.value; 2 | 3 | import javafx.beans.NamedArg; 4 | 5 | /** 6 | * An {@link AnimatedValueLabel} that wraps a double value. 7 | */ 8 | public class AnimatedDoubleValueLabel extends AnimatedValueLabel { 9 | 10 | /** 11 | * Instantiates an {@link AnimatedDoubleValueLabel}. 12 | * @param value initial wrapped value 13 | */ 14 | public AnimatedDoubleValueLabel(@NamedArg("value") double value) { 15 | super(value); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/test/resources/fxml/AnimatedValueLabel.fxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |