package com.digiarea.closurefx;
import javafx.animation.FadeTransition;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Node;
import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.util.Duration;
import com.digiarea.closurefx.build.validation.IStatus;
public class TooltipManager {
private VBox parent;
public TooltipManager(VBox parent) {
this.parent = parent;
}
public void addTooltip(IStatus status) {
HBox box = create(status);
if (parent != null) {
parent.getChildren().add(box);
}
}
private HBox create(IStatus status) {
final HBox box = new HBox();
box.setSpacing(5);
box.setAlignment(Pos.CENTER_LEFT);
switch (status.getSeverity()) {
case CANCEL:
break;
case DEFAULT:
break;
case ERROR:
box.getStyleClass().add(IConstants.CSS_ERROR_BOX);
break;
case INFO:
box.getStyleClass().add(IConstants.CSS_INFO_BOX);
break;
case NO:
break;
case OFF:
break;
case OK:
break;
case WARNING:
box.getStyleClass().add(IConstants.CSS_WARNING_BOX);
break;
default:
break;
}
// final Button remove = new Button();
// remove.setGraphic(new ImageView(ResourceUtils.BUTTON_CLOSE));
// remove.getStyleClass().add(IConstants.CSS_INVISIBLE_BUTTON);
final Label msg = new Label(status.getMessage());
// remove.setOnAction(new EventHandler<ActionEvent>() {
// @Override
// public void handle(ActionEvent event) {
// disappear(box);
// }
// });
new java.util.Timer().schedule(new java.util.TimerTask() {
@Override
public void run() {
if (box != null) {
disappear(box);
}
}
}, 2000);
// box.getChildren().add(remove);
box.getChildren().add(msg);
return box;
}
private void disappear(final Node node) {
FadeTransition ft = new FadeTransition(Duration.millis(500), node);
ft.setFromValue(1.0);
ft.setToValue(0.0);
ft.play();
ft.setOnFinished(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
if (parent != null) {
parent.getChildren().remove(node);
}
}
});
}
}