package tk.captainsplexx.JavaFX.Windows;
import java.io.IOException;
import org.lwjgl.opengl.Display;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.TreeCell;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.stage.Stage;
import javafx.stage.WindowEvent;
import javafx.util.Callback;
import tk.captainsplexx.Game.Core;
import tk.captainsplexx.JavaFX.JavaFXHandler;
import tk.captainsplexx.JavaFX.TreeViewConverter;
import tk.captainsplexx.JavaFX.TreeViewEntry;
import tk.captainsplexx.JavaFX.CellFactories.JavaFXebxTCF;
import tk.captainsplexx.JavaFX.Controller.EBXWindowController;
import tk.captainsplexx.Resource.EBX.EBXFile;
public class EBXWindow {
private FXMLLoader ebxWindowLoader = new FXMLLoader(EBXWindow.class.getResource("EBXWindow.fxml"));
private EBXWindowController controller;
private Parent parent;
private Stage stage;
private Scene scene;
private EBXFile ebxFile;
private boolean isOriginalFile;
public EBXWindow(EBXFile ebxFile, String resLinkName, boolean isOriginal){
this.isOriginalFile = isOriginal;
this.ebxFile = ebxFile;
try {
controller = new EBXWindowController();
ebxWindowLoader.setController(controller);
parent = ebxWindowLoader.load();
} catch (IOException e) {
e.printStackTrace();
return;
}
scene = new Scene(parent, 475, 700);
stage = new Stage();
stage.setScene(scene);
if (ebxFile==null){
stage.setTitle("EBX Tools - NO FILE");
}else{
stage.setTitle(resLinkName);
}
/*stage.setX(Display.getDesktopDisplayMode().getWidth()*0.985f-scene.getWidth());
stage.setY(Display.getDesktopDisplayMode().getHeight()/2-(scene.getHeight()/2));*/
controller.setStage(stage);
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().destroyEBXWindow(stage);
}
});
controller.setWindow(this);
controller.getEBXExplorer().setEditable(true);
controller.getEBXExplorer().setPrefWidth(Display.getDesktopDisplayMode().getWidth());
controller.getEBXExplorer().setPrefHeight(Display.getDesktopDisplayMode().getHeight());
controller.getEBXExplorer().setCellFactory(new Callback<TreeView<TreeViewEntry>,TreeCell<TreeViewEntry>>(){
@Override
public TreeCell<TreeViewEntry> call(TreeView<TreeViewEntry> p) {
return new JavaFXebxTCF(ebxFile, isOriginal);
}
});
TreeItem<TreeViewEntry> ebxTreeView = null;
if (ebxFile!=null){
ebxTreeView = TreeViewConverter.getTreeView(ebxFile);
}
controller.getEBXExplorer().setRoot(ebxTreeView);
}
public FXMLLoader getEbxWindowLoader() {
return ebxWindowLoader;
}
public EBXWindowController getController() {
return controller;
}
public Parent getParent() {
return parent;
}
public Stage getStage() {
return stage;
}
public Scene getScene() {
return scene;
}
public EBXFile getEBXFile() {
return ebxFile;
}
public boolean isOriginalFile() {
return isOriginalFile;
}
}