package at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.controller; import static org.mockito.Mockito.mock; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service.EmployeeService; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service.EmployeeServiceImpl; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service.OperationService; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service.OperationServiceImpl; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service.RegistrationService; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service.RegistrationServiceImpl; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service.VehicleService; import at.ac.tuwien.sepm.assignment.groupphase.missioncontrol.service.VehicleServiceImpl; import at.ac.tuwien.sepm.assignment.groupphase.util.SpringFXMLLoader; import java.lang.invoke.MethodHandles; import javafx.application.Application; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component; @Component @ComponentScan("at.ac.tuwien.sepm.assignment.groupphase") public class GuiTestApplication extends Application { private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); public static AnnotationConfigApplicationContext context; @Configuration public static class ContextConfiguration { @Bean @Primary public EmployeeService employeeService() { return mock(EmployeeServiceImpl.class); } @Bean @Primary public VehicleService vehicleService() { return mock(VehicleServiceImpl.class); } @Bean @Primary public OperationService operationService() { return mock(OperationServiceImpl.class); } @Bean @Primary public RegistrationService registrationService() { return mock(RegistrationServiceImpl.class); } } @Override public void start(Stage primaryStage) throws Exception { // setup application primaryStage.setTitle("Test window"); primaryStage.setWidth(1366); primaryStage.setHeight(768); primaryStage.centerOnScreen(); primaryStage.setOnCloseRequest(event -> LOG.debug("Application shutdown initiated")); if (getParameters().getRaw().size() < 1) { throw new UnsupportedOperationException("FXML file not set"); } context = new AnnotationConfigApplicationContext(GuiTestApplication.class); final var fxmlLoader = context.getBean(SpringFXMLLoader.class); primaryStage.setScene( new Scene( (Parent) fxmlLoader.load( getClass() .getResourceAsStream( "/fxml/" + getParameters() .getRaw() .get(0))))); // show application primaryStage.show(); primaryStage.toFront(); LOG.debug("Application startup complete"); } @Override public void stop() { LOG.debug("Stopping application"); context.close(); } }