package application.users; import java.io.File; import application.Main; import application.tools.ActionTool; import application.tools.InfoTool; import application.tools.NotificationType; import javafx.animation.Interpolator; import javafx.animation.KeyFrame; import javafx.animation.KeyValue; import javafx.animation.Timeline; import javafx.beans.property.DoubleProperty; import javafx.beans.property.SimpleDoubleProperty; import javafx.scene.control.ContextMenu; import javafx.scene.control.Menu; import javafx.scene.control.MenuItem; import javafx.stage.Window; import javafx.util.Duration; import smartcontroller.TitleMenuItem; /** * This is the Context Menu for every Library in the LibraryMode * * @author GOXR3PLUS * */ public class UserContextMenu extends ContextMenu { /** The Login. */ MenuItem login = new MenuItem("Login"); /** The rename. */ MenuItem rename = new MenuItem("Rename(R)"); /** The delete. */ MenuItem delete = new MenuItem("Delete(D)"); /** The image. */ Menu image = new Menu("Image"); /** The set image. */ Menu setImage = new Menu("change..."); /** The local image. */ MenuItem localImage = new MenuItem("local"); /** The internet image. */ MenuItem internetImage = new MenuItem("internet"); /** The export image. */ MenuItem exportImage = new MenuItem("export...(E)"); /** The reset image. */ MenuItem resetImage = new MenuItem("default"); /** The library. */ private User user; private LoginMode loginMode; /** * Instantiates a new library context menu. * * @param loginMode */ // Constructor public UserContextMenu(LoginMode loginMode) { this.loginMode = loginMode; login.setOnAction(a -> Main.startAppWithUser(user)); rename.setOnAction(ac -> user.renameUser(user)); localImage.setOnAction(ac -> user.changeUserImage()); resetImage.setOnAction(ac -> user.setDefaultImage()); exportImage.setOnAction(a -> user.exportImage()); delete.setOnAction(ac -> loginMode.deleteUser(user)); internetImage.setDisable(true); // exportImage.setDisable(true) setImage.getItems().addAll(localImage, internetImage); image.getItems().addAll(setImage, exportImage, resetImage); getItems().addAll(new TitleMenuItem("Common"), login, rename, new TitleMenuItem("Other"), image, delete); } /** * Shows the LibraryContextMenu. * * @param window * the window * @param x * the x * @param y * the y * @param user * the user */ public void show(Window window , double x , double y , User user) { this.user = user; // customize the menu accordingly exportImage.setDisable(user.getImageView().getImage() == null); resetImage.setDisable(exportImage.isDisable()); // Show it show(window, x - 15 - super.getWidth() + super.getWidth() * 14 / 100, y - 1); //Y axis double yIni = y - 50; double yEnd = super.getY(); super.setY(yIni); final DoubleProperty yProperty = new SimpleDoubleProperty(yIni); yProperty.addListener((ob , n , n1) -> super.setY(n1.doubleValue())); //X axis // double xIni = screenX - super.getWidth() + super.getWidth() * 14 / 100 + 30; // double xEnd = screenX - super.getWidth() + super.getWidth() * 14 / 100; // super.setX(xIni); // final DoubleProperty xProperty = new SimpleDoubleProperty(xIni); // xProperty.addListener((ob, n, n1) -> super.setY(n1.doubleValue())); //Timeline Timeline timeIn = new Timeline(); timeIn.getKeyFrames().addAll(new KeyFrame(Duration.seconds(0.35), new KeyValue(yProperty, yEnd, Interpolator.EASE_BOTH))); //new KeyFrame(Duration.seconds(0.5), new KeyValue(xProperty, xEnd, Interpolator.EASE_BOTH))) timeIn.play(); } }