use of javafx.animation.Timeline in project trex-stateless-gui by cisco-system-traffic-generator.
the class TrexApp method speedupTooltip.
/**
* Speeding up displaying tootlip for JDK 8 ref:
* http://stackoverflow.com/questions/26854301/control-javafx-tooltip-delay
*/
private void speedupTooltip() {
try {
Tooltip tooltip = new Tooltip();
Field fieldBehavior = tooltip.getClass().getDeclaredField("BEHAVIOR");
fieldBehavior.setAccessible(true);
Object objBehavior = fieldBehavior.get(tooltip);
Field fieldTimer = objBehavior.getClass().getDeclaredField("activationTimer");
fieldTimer.setAccessible(true);
Timeline objTimer = (Timeline) fieldTimer.get(objBehavior);
objTimer.getKeyFrames().clear();
objTimer.getKeyFrames().add(new KeyFrame(new Duration(250)));
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
LOG.error(e);
}
}
use of javafx.animation.Timeline in project Gargoyle by callakrsos.
the class DockTabPaneSkin method removeTabs.
private void removeTabs(List<? extends DockTab> removedList) {
for (final DockTab tab : removedList) {
stopCurrentAnimation(tab);
// Animate the tab removal
final TabHeaderSkin tabRegion = tabHeaderArea.getTabHeaderSkin(tab);
if (tabRegion != null) {
tabRegion.isClosing = true;
tabRegion.removeListeners(tab);
removeTabContent(tab);
// remove the menu item from the popup menu
ContextMenu popupMenu = tabHeaderArea.controlButtons.popup;
TabMenuItem tabItem = null;
if (popupMenu != null) {
for (MenuItem item : popupMenu.getItems()) {
tabItem = (TabMenuItem) item;
if (tab == tabItem.getTab()) {
break;
}
tabItem = null;
}
}
if (tabItem != null) {
tabItem.dispose();
popupMenu.getItems().remove(tabItem);
}
// end of removing menu item
EventHandler<ActionEvent> cleanup = ae -> {
tabRegion.animationState = TabAnimationState.NONE;
tabHeaderArea.removeTab(tab);
tabHeaderArea.requestLayout();
if (getSkinnable().getTabs().isEmpty()) {
tabHeaderArea.setVisible(false);
}
};
if (closeTabAnimation.get() == TabAnimation.GROW) {
tabRegion.animationState = TabAnimationState.HIDING;
Timeline closedTabTimeline = tabRegion.currentAnimation = createTimeline(tabRegion, Duration.millis(ANIMATION_SPEED), 0.0F, cleanup);
closedTabTimeline.play();
} else {
cleanup.handle(null);
}
}
}
}
use of javafx.animation.Timeline in project Gargoyle by callakrsos.
the class DockTabPaneSkin method stopCurrentAnimation.
private void stopCurrentAnimation(DockTab tab) {
final TabHeaderSkin tabRegion = tabHeaderArea.getTabHeaderSkin(tab);
if (tabRegion != null) {
// Execute the code immediately, don't wait for the animation to finish.
Timeline timeline = tabRegion.currentAnimation;
if (timeline != null && timeline.getStatus() == Animation.Status.RUNNING) {
timeline.getOnFinished().handle(null);
timeline.stop();
tabRegion.currentAnimation = null;
}
}
}
use of javafx.animation.Timeline in project fx2048 by brunoborges.
the class Board method animateScore.
public void animateScore() {
if (gameMovePoints.get() == 0) {
return;
}
final Timeline timeline = new Timeline();
lblPoints.setText("+" + gameMovePoints.getValue().toString());
lblPoints.setOpacity(1);
double posX = vScore.localToScene(vScore.getWidth() / 2d, 0).getX();
lblPoints.setTranslateX(0);
lblPoints.setTranslateX(lblPoints.sceneToLocal(posX, 0).getX() - lblPoints.getWidth() / 2d);
lblPoints.setLayoutY(20);
final KeyValue kvO = new KeyValue(lblPoints.opacityProperty(), 0);
final KeyValue kvY = new KeyValue(lblPoints.layoutYProperty(), 100);
Duration animationDuration = Duration.millis(600);
final KeyFrame kfO = new KeyFrame(animationDuration, kvO);
final KeyFrame kfY = new KeyFrame(animationDuration, kvY);
timeline.getKeyFrames().add(kfO);
timeline.getKeyFrames().add(kfY);
timeline.play();
}
use of javafx.animation.Timeline in project fx2048 by brunoborges.
the class Board method createScore.
private void createScore() {
Label lblTitle = new Label("2048");
lblTitle.getStyleClass().addAll("game-label", "game-title");
Label lblSubtitle = new Label("FX");
lblSubtitle.getStyleClass().addAll("game-label", "game-subtitle");
HBox hFill = new HBox();
HBox.setHgrow(hFill, Priority.ALWAYS);
hFill.setAlignment(Pos.CENTER);
VBox vScores = new VBox();
HBox hScores = new HBox(5);
vScore.setAlignment(Pos.CENTER);
vScore.getStyleClass().add("game-vbox");
Label lblTit = new Label("SCORE");
lblTit.getStyleClass().addAll("game-label", "game-titScore");
lblScore.getStyleClass().addAll("game-label", "game-score");
lblScore.textProperty().bind(gameScoreProperty.asString());
vScore.getChildren().addAll(lblTit, lblScore);
VBox vRecord = new VBox(-5);
vRecord.setAlignment(Pos.CENTER);
vRecord.getStyleClass().add("game-vbox");
Label lblTitBest = new Label("BEST");
lblTitBest.getStyleClass().addAll("game-label", "game-titScore");
lblBest.getStyleClass().addAll("game-label", "game-score");
lblBest.textProperty().bind(gameBestProperty.asString());
vRecord.getChildren().addAll(lblTitBest, lblBest);
hScores.getChildren().addAll(vScore, vRecord);
VBox vFill = new VBox();
VBox.setVgrow(vFill, Priority.ALWAYS);
vScores.getChildren().addAll(hScores, vFill);
hTop.getChildren().addAll(lblTitle, lblSubtitle, hFill, vScores);
hTop.setMinSize(gridWidth, TOP_HEIGHT);
hTop.setPrefSize(gridWidth, TOP_HEIGHT);
hTop.setMaxSize(gridWidth, TOP_HEIGHT);
vGame.getChildren().add(hTop);
HBox hTime = new HBox();
hTime.setMinSize(gridWidth, GAP_HEIGHT);
hTime.setAlignment(Pos.BOTTOM_RIGHT);
lblTime.getStyleClass().addAll("game-label", "game-time");
lblTime.textProperty().bind(clock);
timer = new Timeline(new KeyFrame(Duration.ZERO, e -> {
clock.set(LocalTime.now().minusNanos(time.toNanoOfDay()).format(fmt));
}), new KeyFrame(Duration.seconds(1)));
timer.setCycleCount(Animation.INDEFINITE);
hTime.getChildren().add(lblTime);
vGame.getChildren().add(hTime);
getChildren().add(vGame);
lblPoints.getStyleClass().addAll("game-label", "game-points");
lblPoints.setAlignment(Pos.CENTER);
lblPoints.setMinWidth(100);
getChildren().add(lblPoints);
}
Aggregations