@Override public void start(Stage primaryStage) { this.primaryStage = primaryStage; ApplicationContextHolder.getContext(); startLogAppender(); Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionLogger()); primaryStage.setScene(initScene()); primaryStage .getIcons() .addAll(ApplicationContextHolder.getContext().getBeansOfType(Image.class).values()); primaryStage.setTitle(ApplicationContextHolder.getContext().getBean(Pdfsam.class).name()); primaryStage.setOnCloseRequest(e -> Platform.exit()); initWindowsStatusController(primaryStage); initOverwriteDialogController(primaryStage); initActiveModule(); primaryStage.show(); requestCheckForUpdateIfNecessary(); requestLatestNewsPanelDisplay(); eventStudio().addAnnotatedListeners(this); closeSplash(); STOPWATCH.stop(); LOG.info( DefaultI18nContext.getInstance() .i18n( "Started in {0}", DurationFormatUtils.formatDurationWords(STOPWATCH.getTime(), true, true))); }
private Scene initScene() { MainPane mainPane = ApplicationContextHolder.getContext().getBean(MainPane.class); NotificationsContainer notifications = ApplicationContextHolder.getContext().getBean(NotificationsContainer.class); StackPane main = new StackPane(); StackPane.setAlignment(notifications, Pos.BOTTOM_RIGHT); StackPane.setAlignment(mainPane, Pos.TOP_LEFT); main.getChildren().addAll(mainPane, notifications); StylesConfig styles = ApplicationContextHolder.getContext().getBean(StylesConfig.class); Scene mainScene = new Scene(main); mainScene.getStylesheets().addAll(styles.styles()); mainScene .getAccelerators() .put( new KeyCodeCombination(KeyCode.L, KeyCombination.SHORTCUT_DOWN), () -> eventStudio().broadcast(new ShowStageRequest(), "LogStage")); return mainScene; }
@Override public void stop() { LOG.info(DefaultI18nContext.getInstance().i18n("Closing PDFsam...")); if (nonNull(primaryStage)) { StageStatus status = new StageStatus( this.primaryStage.getX(), this.primaryStage.getY(), this.primaryStage.getWidth(), this.primaryStage.getHeight()); status.setMode(StageMode.valueFor(this.primaryStage)); eventStudio().broadcast(new SetLatestStageStatusRequest(status)); } ApplicationContextHolder.getContext().close(); }
private void initWindowsStatusController(Stage primaryStage) { WindowStatusController stageStatusController = ApplicationContextHolder.getContext().getBean(WindowStatusController.class); stageStatusController.setStage(primaryStage); }
private void initOverwriteDialogController(Stage primaryStage) { OverwriteConfirmationDialog overwriteDialog = ApplicationContextHolder.getContext().getBean(OverwriteConfirmationDialog.class); overwriteDialog.setOwner(primaryStage); }
private static void requestCheckForUpdateIfNecessary() { if (ApplicationContextHolder.getContext().getBean(UserContext.class).isCheckForUpdates()) { eventStudio().broadcast(new UpdateCheckRequest()); } }
private void startLogAppender() { LogMessageBroadcaster broadcaster = ApplicationContextHolder.getContext().getBean(LogMessageBroadcaster.class); broadcaster.start(); }