예제 #1
0
  @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)));
  }
예제 #2
0
  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;
  }
예제 #3
0
 @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();
 }
예제 #4
0
 private void initWindowsStatusController(Stage primaryStage) {
   WindowStatusController stageStatusController =
       ApplicationContextHolder.getContext().getBean(WindowStatusController.class);
   stageStatusController.setStage(primaryStage);
 }
예제 #5
0
 private void initOverwriteDialogController(Stage primaryStage) {
   OverwriteConfirmationDialog overwriteDialog =
       ApplicationContextHolder.getContext().getBean(OverwriteConfirmationDialog.class);
   overwriteDialog.setOwner(primaryStage);
 }
예제 #6
0
 private static void requestCheckForUpdateIfNecessary() {
   if (ApplicationContextHolder.getContext().getBean(UserContext.class).isCheckForUpdates()) {
     eventStudio().broadcast(new UpdateCheckRequest());
   }
 }
예제 #7
0
 private void startLogAppender() {
   LogMessageBroadcaster broadcaster =
       ApplicationContextHolder.getContext().getBean(LogMessageBroadcaster.class);
   broadcaster.start();
 }