package application;
import javafx.animation.TranslateTransition;
import javafx.scene.Parent;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
import javafx.util.Duration;
/**
* Created by tareq on 7/13/15.
*/
public class MaterialRootLayout extends Pane {
private double oldX, startX;
private boolean animationFinished;
private boolean startAnimation;
private Pane firstContent;
private boolean translateAnimFinished = true;
public MaterialRootLayout(ActionBar actionBar, DrawerLayout drawerLayout) {
super(actionBar, drawerLayout);
drawerLayout.actionBar = actionBar;
actionBar.drawerLayout = drawerLayout;
getChildren().addAll(0, actionBar.getContent());
firstContent = actionBar.getContent().get(0);
for (int i = 0; i < actionBar.getContent().size(); i++) {
actionBar.getContent().get(i).prefHeightProperty().bind(heightProperty().subtract(100));
}
addEventHandler(MouseEvent.MOUSE_DRAGGED, e -> {
if (e.getX() < drawerLayout.getPrefWidth() / 2) {
if (!drawerLayout.isDrawerOpen()) {
if (oldX != 0 && e.getX() > oldX && drawerLayout.getTranslateX() <= 0) {
if (e.getX() < drawerLayout.getWidth() / 2) {
startAnimation = true;
animationFinished = true;
}
}
if (oldX == 0)
startX = 0;
oldX = e.getX();
}
}
});
addEventHandler(MouseEvent.MOUSE_RELEASED, e -> {
if (startAnimation) {
TranslateTransition transition = new TranslateTransition();
transition.setNode(drawerLayout);
transition.setDuration(Duration.millis(500));
transition.setOnFinished(ev -> {
drawerLayout.setDrawerOpen(true);
});
if (animationFinished) {
transition.setToX(drawerLayout.getWidth());
transition.setOnFinished(ev -> {
drawerLayout.setDrawerOpen(true);
actionBar.setDrawerOpen(true);
oldX = 0;
startX = 0;
});
} else {
transition.setToX(0);
transition.setOnFinished(ev -> {
drawerLayout.setDrawerOpen(false);
actionBar.setDrawerOpen(false);
oldX = 0;
startX = 0;
});
}
transition.play();
animationFinished = false;
}
});
}
}