package com.kritsit.casetracker.client.domain.ui; import com.kritsit.casetracker.client.domain.factory.ServiceFactory; import com.kritsit.casetracker.client.domain.services.IEditorService; import com.kritsit.casetracker.client.domain.services.IMenuService; import com.kritsit.casetracker.client.domain.ui.controller.EditorController; import com.kritsit.casetracker.shared.domain.model.Staff; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; import java.io.IOException; public final class EditorFrame implements IUserInterface { private final Logger logger = LoggerFactory.getLogger(EditorFrame.class); private EditorController controller; private Staff user; private Stage stage; public void run(Staff user, Stage stage) throws IOException { this.user = user; this.stage = stage; logger.info("Starting the editor's user interface"); LoadingDialog splashScreen = new LoadingDialog(); splashScreen.run(); Parent root = loadFXML("/ui/fxml/EditorFrame.fxml"); setUpController(); this.stage.setTitle("CaseTracker"); this.stage.setScene(new Scene(root, 1200, 600)); splashScreen.exit(); this.stage.showAndWait(); } private Parent loadFXML(String resourceURL) throws IOException { logger.debug("Loading FXML"); FXMLLoader loader = new FXMLLoader(getClass().getResource(resourceURL)); Parent root = loader.load(); controller = (EditorController) loader.getController(); logger.debug("FXML loaded"); return root; } private void setUpController() { logger.debug("Setting up controller"); IEditorService editorService = ServiceFactory.getEditorService(user); IMenuService menuService = ServiceFactory.getMenuService(user); controller.setEditorService(editorService); controller.setMenuService(menuService); controller.setStage(stage); controller.initFrame(); logger.debug("Controller set up"); } }