package org.lightview.view; import javafx.animation.KeyFrame; import javafx.animation.KeyValue; import javafx.animation.Timeline; import javafx.beans.property.DoubleProperty; import javafx.util.Duration; /** * User: blog.adam-bien.com * Date: 24.11.11 * Time: 20:29 */ public abstract class Collapsible { protected double prefHeight; private boolean minimized = false; public boolean toggleMinimize() { if (minimized) { maximize(); minimized = false; } else { minimize(); minimized = true; } return minimized; } void minimize() { animate(0); } void maximize() { animate(this.prefHeight); } void animate(double toValue){ Timeline timeline = new Timeline(); timeline.getKeyFrames().add( new KeyFrame(Duration.seconds(1), new KeyValue(getMaxHeightProperty(), toValue))); timeline.playFromStart(); } protected abstract DoubleProperty getMaxHeightProperty(); }