diff --git a/src/main/java/org/cryptomator/launcher/Cryptomator.java b/src/main/java/org/cryptomator/launcher/Cryptomator.java index 1a9d0b79b..a358126d4 100644 --- a/src/main/java/org/cryptomator/launcher/Cryptomator.java +++ b/src/main/java/org/cryptomator/launcher/Cryptomator.java @@ -99,7 +99,7 @@ public class Cryptomator { Application.launch(MainApp.class); LOG.info("UI shut down"); return 0; - } catch (Throwable e) { + } catch (Exception e) { LOG.error("Terminating due to error", e); return 1; } diff --git a/src/main/java/org/cryptomator/launcher/CryptomatorModule.java b/src/main/java/org/cryptomator/launcher/CryptomatorModule.java index 414ba208e..e6aab0309 100644 --- a/src/main/java/org/cryptomator/launcher/CryptomatorModule.java +++ b/src/main/java/org/cryptomator/launcher/CryptomatorModule.java @@ -7,7 +7,6 @@ import org.cryptomator.integrations.autostart.AutoStartProvider; import org.cryptomator.integrations.tray.TrayIntegrationProvider; import org.cryptomator.integrations.uiappearance.UiAppearanceProvider; import org.cryptomator.ui.fxapp.FxApplicationComponent; -import org.cryptomator.ui.traymenu.TrayMenuComponent; import javax.inject.Named; import javax.inject.Singleton; @@ -16,7 +15,6 @@ import java.util.ResourceBundle; import java.util.ServiceLoader; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; -import java.util.concurrent.CountDownLatch; @Module(subcomponents = {FxApplicationComponent.class}) class CryptomatorModule { diff --git a/src/main/java/org/cryptomator/ui/addvaultwizard/ChooseExistingVaultController.java b/src/main/java/org/cryptomator/ui/addvaultwizard/ChooseExistingVaultController.java index deaa9fdde..01a8a6758 100644 --- a/src/main/java/org/cryptomator/ui/addvaultwizard/ChooseExistingVaultController.java +++ b/src/main/java/org/cryptomator/ui/addvaultwizard/ChooseExistingVaultController.java @@ -4,7 +4,6 @@ import dagger.Lazy; import org.apache.commons.lang3.SystemUtils; import org.cryptomator.common.vaults.Vault; import org.cryptomator.common.vaults.VaultListManager; -import org.cryptomator.ui.common.ErrorComponent; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxmlFile; import org.cryptomator.ui.common.FxmlScene; @@ -21,9 +20,6 @@ import javafx.stage.FileChooser; import javafx.stage.Stage; import java.io.File; import java.io.IOException; -import java.io.InputStream; -import java.io.UncheckedIOException; -import java.nio.file.NoSuchFileException; import java.nio.file.Path; import java.util.ResourceBundle; diff --git a/src/main/java/org/cryptomator/ui/common/ErrorComponent.java b/src/main/java/org/cryptomator/ui/common/ErrorComponent.java index 2f449ec4b..8cb430584 100644 --- a/src/main/java/org/cryptomator/ui/common/ErrorComponent.java +++ b/src/main/java/org/cryptomator/ui/common/ErrorComponent.java @@ -4,7 +4,6 @@ import dagger.BindsInstance; import dagger.Subcomponent; import org.cryptomator.common.Nullable; -import javafx.application.Platform; import javafx.scene.Scene; import javafx.stage.Stage; diff --git a/src/main/java/org/cryptomator/ui/fxapp/FxApplicationStyle.java b/src/main/java/org/cryptomator/ui/fxapp/FxApplicationStyle.java index 902576715..da2a4a800 100644 --- a/src/main/java/org/cryptomator/ui/fxapp/FxApplicationStyle.java +++ b/src/main/java/org/cryptomator/ui/fxapp/FxApplicationStyle.java @@ -54,9 +54,9 @@ public class FxApplicationStyle { case LIGHT -> applyLightTheme(); case DARK -> applyDarkTheme(); case AUTOMATIC -> { - appearanceProvider.ifPresent(appearanceProvider -> { + appearanceProvider.ifPresent(provider -> { try { - appearanceProvider.addListener(systemInterfaceThemeListener); + provider.addListener(systemInterfaceThemeListener); } catch (UiAppearanceException e) { LOG.error("Failed to enable automatic theme switching."); } @@ -84,15 +84,11 @@ public class FxApplicationStyle { private void applyLightTheme() { Application.setUserAgentStylesheet(getClass().getResource("/css/light_theme.css").toString()); - appearanceProvider.ifPresent(appearanceProvider -> { - appearanceProvider.adjustToTheme(Theme.LIGHT); - }); + appearanceProvider.ifPresent(provider -> provider.adjustToTheme(Theme.LIGHT)); } private void applyDarkTheme() { Application.setUserAgentStylesheet(getClass().getResource("/css/dark_theme.css").toString()); - appearanceProvider.ifPresent(appearanceProvider -> { - appearanceProvider.adjustToTheme(Theme.DARK); - }); + appearanceProvider.ifPresent(provider -> provider.adjustToTheme(Theme.DARK)); } } diff --git a/src/main/java/org/cryptomator/ui/fxapp/FxApplicationTerminator.java b/src/main/java/org/cryptomator/ui/fxapp/FxApplicationTerminator.java index 7e471bd11..fac4bb75d 100644 --- a/src/main/java/org/cryptomator/ui/fxapp/FxApplicationTerminator.java +++ b/src/main/java/org/cryptomator/ui/fxapp/FxApplicationTerminator.java @@ -26,8 +26,7 @@ import static org.cryptomator.common.vaults.VaultState.Value.*; @FxApplicationScoped public class FxApplicationTerminator { - public static final Set STATES_ALLOWING_TERMINATION = EnumSet.of(LOCKED, NEEDS_MIGRATION, MISSING, ERROR); - + private static final Set STATES_ALLOWING_TERMINATION = EnumSet.of(LOCKED, NEEDS_MIGRATION, MISSING, ERROR); private static final Logger LOG = LoggerFactory.getLogger(FxApplicationTerminator.class); private final ObservableList vaults; diff --git a/src/main/java/org/cryptomator/ui/fxapp/FxApplicationWindows.java b/src/main/java/org/cryptomator/ui/fxapp/FxApplicationWindows.java index fae7b1b9b..7236ea56b 100644 --- a/src/main/java/org/cryptomator/ui/fxapp/FxApplicationWindows.java +++ b/src/main/java/org/cryptomator/ui/fxapp/FxApplicationWindows.java @@ -30,6 +30,7 @@ import java.awt.desktop.QuitResponse; import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; +import java.util.concurrent.ExecutorService; @FxApplicationScoped public class FxApplicationWindows { @@ -44,10 +45,11 @@ public class FxApplicationWindows { private final UnlockComponent.Factory unlockWorkflowFactory; private final LockComponent.Factory lockWorkflowFactory; private final ErrorComponent.Factory errorWindowFactory; + private final ExecutorService executor; private final FilteredList visibleWindows; @Inject - public FxApplicationWindows(@PrimaryStage Stage primaryStage, Optional trayIntegration, Lazy mainWindow, Lazy preferencesWindow, Lazy quitWindow, UnlockComponent.Factory unlockWorkflowFactory, LockComponent.Factory lockWorkflowFactory, ErrorComponent.Factory errorWindowFactory) { + public FxApplicationWindows(@PrimaryStage Stage primaryStage, Optional trayIntegration, Lazy mainWindow, Lazy preferencesWindow, Lazy quitWindow, UnlockComponent.Factory unlockWorkflowFactory, LockComponent.Factory lockWorkflowFactory, ErrorComponent.Factory errorWindowFactory, ExecutorService executor) { this.primaryStage = primaryStage; this.trayIntegration = trayIntegration; this.mainWindow = mainWindow; @@ -56,7 +58,8 @@ public class FxApplicationWindows { this.unlockWorkflowFactory = unlockWorkflowFactory; this.lockWorkflowFactory = lockWorkflowFactory; this.errorWindowFactory = errorWindowFactory; - this.visibleWindows = Stage.getWindows().filtered(Window::isShowing); + this.executor = executor; + this.visibleWindows = Window.getWindows().filtered(Window::isShowing); } public void initialize() { @@ -111,7 +114,7 @@ public class FxApplicationWindows { LOG.debug("Start unlock workflow for {}", vault.getDisplayName()); return unlockWorkflowFactory.create(vault, owner).unlockWorkflow(); }, Platform::runLater) // - .thenCompose(CompletableFuture::runAsync) // run unlock in forkjoin pool TODO: use executorservice + .thenCompose(unlockWorkflow -> CompletableFuture.runAsync(unlockWorkflow, executor)) // .exceptionally(e -> { showErrorWindow(e, owner == null ? primaryStage : owner, null); return null; @@ -124,7 +127,7 @@ public class FxApplicationWindows { LOG.debug("Start lock workflow for {}", vault.getDisplayName()); return lockWorkflowFactory.create(vault, owner).lockWorkflow(); }, Platform::runLater) // - .thenCompose(CompletableFuture::runAsync) // run lock in forkjoin pool TODO: use executorservice + .thenCompose(lockWorkflow -> CompletableFuture.runAsync(lockWorkflow, executor)) // .exceptionally(e -> { showErrorWindow(e, owner == null ? primaryStage : owner, null); return null; diff --git a/src/main/java/org/cryptomator/ui/lock/LockModule.java b/src/main/java/org/cryptomator/ui/lock/LockModule.java index 6a82f2bab..c5657a488 100644 --- a/src/main/java/org/cryptomator/ui/lock/LockModule.java +++ b/src/main/java/org/cryptomator/ui/lock/LockModule.java @@ -20,7 +20,6 @@ import javafx.scene.Scene; import javafx.stage.Modality; import javafx.stage.Stage; import java.util.Map; -import java.util.Optional; import java.util.ResourceBundle; import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicReference; diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java index c13e4417c..76eee0cb4 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java @@ -3,7 +3,6 @@ package org.cryptomator.ui.mainwindow; import org.cryptomator.common.LicenseHolder; import org.cryptomator.common.settings.Settings; import org.cryptomator.ui.common.FxController; -import org.cryptomator.ui.fxapp.FxApplication; import org.cryptomator.ui.fxapp.FxApplicationTerminator; import org.cryptomator.ui.fxapp.FxApplicationWindows; import org.cryptomator.ui.fxapp.UpdateChecker; diff --git a/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailController.java index cf585de39..b38710023 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailController.java @@ -1,7 +1,6 @@ package org.cryptomator.ui.mainwindow; import com.tobiasdiez.easybind.EasyBind; -import com.tobiasdiez.easybind.Subscription; import org.cryptomator.common.vaults.Vault; import org.cryptomator.common.vaults.VaultState; import org.cryptomator.ui.common.Animations; @@ -9,7 +8,6 @@ import org.cryptomator.ui.common.AutoAnimator; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.controls.FontAwesome5Icon; import org.cryptomator.ui.controls.FontAwesome5IconView; -import org.cryptomator.ui.fxapp.FxApplication; import javax.inject.Inject; import javafx.application.Application; diff --git a/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailLockedController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailLockedController.java index af550b73e..dab1f7a54 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailLockedController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailLockedController.java @@ -4,9 +4,7 @@ import com.tobiasdiez.easybind.EasyBind; import org.cryptomator.common.keychain.KeychainManager; import org.cryptomator.common.vaults.Vault; import org.cryptomator.ui.common.FxController; -import org.cryptomator.ui.fxapp.FxApplication; import org.cryptomator.ui.fxapp.FxApplicationWindows; -import org.cryptomator.ui.health.HealthCheckComponent; import org.cryptomator.ui.vaultoptions.SelectedVaultOptionsTab; import org.cryptomator.ui.vaultoptions.VaultOptionsComponent; @@ -15,10 +13,8 @@ import javafx.beans.binding.BooleanExpression; import javafx.beans.property.ObjectProperty; import javafx.beans.property.ReadOnlyObjectProperty; import javafx.beans.property.SimpleBooleanProperty; -import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.stage.Stage; -import java.util.Optional; @MainWindowScoped public class VaultDetailLockedController implements FxController { diff --git a/src/main/java/org/cryptomator/ui/migration/MigrationImpossibleController.java b/src/main/java/org/cryptomator/ui/migration/MigrationImpossibleController.java index e861d6438..4799d0325 100644 --- a/src/main/java/org/cryptomator/ui/migration/MigrationImpossibleController.java +++ b/src/main/java/org/cryptomator/ui/migration/MigrationImpossibleController.java @@ -2,7 +2,6 @@ package org.cryptomator.ui.migration; import org.cryptomator.common.vaults.Vault; import org.cryptomator.ui.common.FxController; -import org.cryptomator.ui.fxapp.FxApplication; import javax.inject.Inject; import javafx.application.Application; diff --git a/src/main/java/org/cryptomator/ui/unlock/UnlockModule.java b/src/main/java/org/cryptomator/ui/unlock/UnlockModule.java index 348d34832..b14286698 100644 --- a/src/main/java/org/cryptomator/ui/unlock/UnlockModule.java +++ b/src/main/java/org/cryptomator/ui/unlock/UnlockModule.java @@ -22,7 +22,6 @@ import javafx.scene.Scene; import javafx.stage.Modality; import javafx.stage.Stage; import java.util.Map; -import java.util.Optional; import java.util.ResourceBundle; @Module(subcomponents = {KeyLoadingComponent.class})