package tk.captainsplexx.JavaFX.Windows; import java.io.File; import java.io.IOException; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.event.EventHandler; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.stage.Stage; import javafx.stage.WindowEvent; import tk.captainsplexx.Game.Core; import tk.captainsplexx.JavaFX.JavaFXHandler; import tk.captainsplexx.JavaFX.Controller.ImagePreviewWindowController; import tk.captainsplexx.Resource.FileHandler; import tk.captainsplexx.Resource.TOC.ResourceLink; public class ImagePreviewWindow { private Stage stage; private FXMLLoader loader; private Parent parent; private Scene scene; private ImagePreviewWindowController controller; public ImagePreviewWindow(File file, File ddsFile, ResourceLink resourceLink, String title) { try { loader = new FXMLLoader(getClass().getResource("ImagePreviewWindow.fxml")); controller = new ImagePreviewWindowController(); loader.setController(controller); parent = loader.load(); } catch (IOException e) { e.printStackTrace(); } controller.setResourceLink(resourceLink); controller.setDdsFile(ddsFile); stage = new Stage(); scene = new Scene(parent, 800, 800); stage.setTitle("Preview: "+title); stage.setScene(scene); stage.getIcons().add(JavaFXHandler.applicationIcon16); stage.getIcons().add(JavaFXHandler.applicationIcon32); stage.show(); stage.setOnCloseRequest(new EventHandler<WindowEvent>() { @Override public void handle(WindowEvent e) { Core.getJavaFXHandler().getMainWindow().destroyImagePreviewWindow(stage); } }); if (file!=null){ controller.getImageView().setImage(new Image(FileHandler.getStream(file.getAbsolutePath()))); controller.getImageView().setFitHeight(stage.getHeight()); controller.getImageView().setFitWidth(stage.getWidth()); } scene.widthProperty().addListener(new ChangeListener<Number>() { @Override public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneWidth, Number newSceneWidth) { controller.getImageView().setFitWidth((double) newSceneWidth); } }); scene.heightProperty().addListener(new ChangeListener<Number>() { @Override public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneHeight, Number newSceneHeight) { controller.getImageView().setFitHeight((double) newSceneHeight); } }); } public Stage getStage() { return stage; } public FXMLLoader getLoader() { return loader; } public Parent getParent() { return parent; } public Scene getScene() { return scene; } public ImagePreviewWindowController getController() { return controller; } }