diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultModule.java b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultModule.java index 8ec04383f..2e92a5345 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultModule.java @@ -19,6 +19,7 @@ import javafx.stage.Modality; import javafx.stage.Stage; import org.apache.commons.lang3.SystemUtils; import org.cryptomator.common.vaults.Vault; +import org.cryptomator.ui.common.DefaultSceneFactory; import org.cryptomator.ui.common.FXMLLoaderFactory; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxControllerKey; @@ -40,22 +41,19 @@ public abstract class AddVaultModule { @Provides @AddVaultWizardWindow @AddVaultWizardScoped - static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, ResourceBundle resourceBundle) { - return new FXMLLoaderFactory(factories, resourceBundle); + static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle) { + return new FXMLLoaderFactory(factories, sceneFactory, resourceBundle); } @Provides @AddVaultWizardWindow @AddVaultWizardScoped - static Stage provideStage(@MainWindow Stage owner, ResourceBundle resourceBundle, @Named("windowIcon") Optional windowIcon, @AddVaultWizardWindow Lazy> accelerators) { + static Stage provideStage(@MainWindow Stage owner, ResourceBundle resourceBundle, @Named("windowIcon") Optional windowIcon) { Stage stage = new Stage(); stage.setTitle(resourceBundle.getString("addvaultwizard.title")); stage.setResizable(false); stage.initModality(Modality.WINDOW_MODAL); stage.initOwner(owner); - stage.sceneProperty().addListener(observable -> { - stage.getScene().getAccelerators().putAll(accelerators.get()); - }); windowIcon.ifPresent(stage.getIcons()::add); return stage; } @@ -81,70 +79,45 @@ public abstract class AddVaultModule { // ------------------ - @Provides - @AddVaultWizardWindow - @AddVaultWizardScoped - static Map provideDefaultAccellerators(@AddVaultWizardWindow Set> accelerators) { - return Map.ofEntries(accelerators.toArray(Map.Entry[]::new)); - } - - @Provides - @IntoSet - @AddVaultWizardWindow - static Map.Entry provideCloseWindowShortcut(@AddVaultWizardWindow Stage window) { - if (SystemUtils.IS_OS_WINDOWS) { - return Map.entry(new KeyCodeCombination(KeyCode.F4, KeyCombination.ALT_DOWN), window::close); - } else { - return Map.entry(new KeyCodeCombination(KeyCode.W, KeyCombination.SHORTCUT_DOWN), window::close); - } - } - - // ------------------ - @Provides @FxmlScene(FxmlFile.ADDVAULT_WELCOME) @AddVaultWizardScoped - static Scene provideWelcomeScene(@AddVaultWizardWindow FXMLLoaderFactory fxmlLoaders, @AddVaultWizardWindow Stage window) { - Scene scene = fxmlLoaders.createScene("/fxml/addvault_welcome.fxml"); - - KeyCombination cmdW = new KeyCodeCombination(KeyCode.W, KeyCombination.SHORTCUT_DOWN); - scene.getAccelerators().put(cmdW, window::close); - - return scene; + static Scene provideWelcomeScene(@AddVaultWizardWindow FXMLLoaderFactory fxmlLoaders) { + return fxmlLoaders.createScene("/fxml/addvault_welcome.fxml"); } @Provides @FxmlScene(FxmlFile.ADDVAULT_EXISTING) @AddVaultWizardScoped - static Scene provideChooseExistingVaultScene(@AddVaultWizardWindow FXMLLoaderFactory fxmlLoaders, @AddVaultWizardWindow Stage window) { + static Scene provideChooseExistingVaultScene(@AddVaultWizardWindow FXMLLoaderFactory fxmlLoaders) { return fxmlLoaders.createScene("/fxml/addvault_existing.fxml"); } @Provides @FxmlScene(FxmlFile.ADDVAULT_NEW_NAME) @AddVaultWizardScoped - static Scene provideCreateNewVaultNameScene(@AddVaultWizardWindow FXMLLoaderFactory fxmlLoaders, @AddVaultWizardWindow Stage window) { + static Scene provideCreateNewVaultNameScene(@AddVaultWizardWindow FXMLLoaderFactory fxmlLoaders) { return fxmlLoaders.createScene("/fxml/addvault_new_name.fxml"); } @Provides @FxmlScene(FxmlFile.ADDVAULT_NEW_LOCATION) @AddVaultWizardScoped - static Scene provideCreateNewVaultLocationScene(@AddVaultWizardWindow FXMLLoaderFactory fxmlLoaders, @AddVaultWizardWindow Stage window) { + static Scene provideCreateNewVaultLocationScene(@AddVaultWizardWindow FXMLLoaderFactory fxmlLoaders) { return fxmlLoaders.createScene("/fxml/addvault_new_location.fxml"); } @Provides @FxmlScene(FxmlFile.ADDVAULT_NEW_PASSWORD) @AddVaultWizardScoped - static Scene provideCreateNewVaultPasswordScene(@AddVaultWizardWindow FXMLLoaderFactory fxmlLoaders, @AddVaultWizardWindow Stage window) { + static Scene provideCreateNewVaultPasswordScene(@AddVaultWizardWindow FXMLLoaderFactory fxmlLoaders) { return fxmlLoaders.createScene("/fxml/addvault_new_password.fxml"); } @Provides @FxmlScene(FxmlFile.ADDVAULT_SUCCESS) @AddVaultWizardScoped - static Scene provideCreateNewVaultSuccessScene(@AddVaultWizardWindow FXMLLoaderFactory fxmlLoaders, @AddVaultWizardWindow Stage window) { + static Scene provideCreateNewVaultSuccessScene(@AddVaultWizardWindow FXMLLoaderFactory fxmlLoaders) { return fxmlLoaders.createScene("/fxml/addvault_success.fxml"); } diff --git a/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordModule.java b/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordModule.java index f47e18fcb..7a2262aee 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordModule.java @@ -8,6 +8,7 @@ import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.stage.Modality; import javafx.stage.Stage; +import org.cryptomator.ui.common.DefaultSceneFactory; import org.cryptomator.ui.common.FXMLLoaderFactory; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxControllerKey; @@ -26,8 +27,8 @@ abstract class ChangePasswordModule { @Provides @ChangePasswordWindow @ChangePasswordScoped - static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, ResourceBundle resourceBundle) { - return new FXMLLoaderFactory(factories, resourceBundle); + static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle) { + return new FXMLLoaderFactory(factories, sceneFactory, resourceBundle); } @Provides diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/DefaultSceneFactory.java b/main/ui/src/main/java/org/cryptomator/ui/common/DefaultSceneFactory.java new file mode 100644 index 000000000..14efe8f27 --- /dev/null +++ b/main/ui/src/main/java/org/cryptomator/ui/common/DefaultSceneFactory.java @@ -0,0 +1,49 @@ +package org.cryptomator.ui.common; + +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyCodeCombination; +import javafx.scene.input.KeyCombination; +import javafx.stage.Stage; +import javafx.stage.Window; +import org.apache.commons.lang3.SystemUtils; +import org.cryptomator.ui.fxapp.FxApplicationScoped; + +import javax.inject.Inject; +import java.util.function.Function; + +@FxApplicationScoped +public class DefaultSceneFactory implements Function { + + protected static final KeyCodeCombination ALT_F4 = new KeyCodeCombination(KeyCode.F4, KeyCombination.ALT_DOWN); + protected static final KeyCodeCombination SHORTCUT_W = new KeyCodeCombination(KeyCode.W, KeyCombination.SHORTCUT_DOWN); + + @Inject + public DefaultSceneFactory() {} + + @Override + public Scene apply(Parent root) { + Scene scene = new Scene(root); + configureScene(scene); + return scene; + } + + protected void configureScene(Scene scene) { + scene.windowProperty().addListener(observable -> { + Window window = scene.getWindow(); + if (window instanceof Stage) { + setupDefaultAccelerators(scene, (Stage) window); + } + }); + } + + protected void setupDefaultAccelerators(Scene scene, Stage stage) { + if (SystemUtils.IS_OS_WINDOWS) { + scene.getAccelerators().put(ALT_F4, stage::close); + } else { + scene.getAccelerators().put(SHORTCUT_W, stage::close); + } + } + +} diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/FXMLLoaderFactory.java b/main/ui/src/main/java/org/cryptomator/ui/common/FXMLLoaderFactory.java index 395799f18..1edcc633b 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/common/FXMLLoaderFactory.java +++ b/main/ui/src/main/java/org/cryptomator/ui/common/FXMLLoaderFactory.java @@ -4,24 +4,25 @@ import com.google.common.base.Splitter; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; -import javafx.stage.Stage; import javax.inject.Provider; import java.io.IOException; import java.io.InputStream; import java.io.UncheckedIOException; -import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.ResourceBundle; +import java.util.function.Function; public class FXMLLoaderFactory { - private final Map, Provider> factories; + private final Map, Provider> controllerFactories; + private final Function sceneFactory; private final ResourceBundle resourceBundle; - public FXMLLoaderFactory(Map, Provider> factories, ResourceBundle resourceBundle) { - this.factories = factories; + public FXMLLoaderFactory(Map, Provider> controllerFactories, Function sceneFactory, ResourceBundle resourceBundle) { + this.controllerFactories = controllerFactories; + this.sceneFactory = sceneFactory; this.resourceBundle = resourceBundle; } @@ -66,14 +67,14 @@ public class FXMLLoaderFactory { Parent root = loader.getRoot(); List addtionalStyleSheets = Splitter.on(',').omitEmptyStrings().splitToList(resourceBundle.getString("additionalStyleSheets")); addtionalStyleSheets.forEach(styleSheet -> root.getStylesheets().add("/css/" + styleSheet)); - return new Scene(root); + return sceneFactory.apply(root); } private FxController constructController(Class aClass) { - if (!factories.containsKey(aClass)) { + if (!controllerFactories.containsKey(aClass)) { throw new IllegalArgumentException("ViewController not registered: " + aClass); } else { - return factories.get(aClass).get(); + return controllerFactories.get(aClass).get(); } } } diff --git a/main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordModule.java b/main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordModule.java index f0d055db7..b06f8dec0 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordModule.java @@ -11,6 +11,7 @@ import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.stage.Modality; import javafx.stage.Stage; +import org.cryptomator.ui.common.DefaultSceneFactory; import org.cryptomator.ui.common.FXMLLoaderFactory; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxControllerKey; @@ -29,8 +30,8 @@ abstract class ForgetPasswordModule { @Provides @ForgetPasswordWindow @ForgetPasswordScoped - static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, ResourceBundle resourceBundle) { - return new FXMLLoaderFactory(factories, resourceBundle); + static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle) { + return new FXMLLoaderFactory(factories, sceneFactory, resourceBundle); } @Provides @@ -46,13 +47,6 @@ abstract class ForgetPasswordModule { return stage; } - @Provides - @FxmlScene(FxmlFile.FORGET_PASSWORD) - @ForgetPasswordScoped - static Scene provideForgetPasswordScene(@ForgetPasswordWindow FXMLLoaderFactory fxmlLoaders, @ForgetPasswordWindow Stage window) { - return fxmlLoaders.createScene("/fxml/forget_password.fxml"); - } - @Provides @ForgetPasswordWindow @ForgetPasswordScoped @@ -64,6 +58,15 @@ abstract class ForgetPasswordModule { @ForgetPasswordWindow @ForgetPasswordScoped abstract ReadOnlyBooleanProperty bindReadOnlyConfirmedProperty(@ForgetPasswordWindow BooleanProperty confirmedProperty); + + // ------------------ + + @Provides + @FxmlScene(FxmlFile.FORGET_PASSWORD) + @ForgetPasswordScoped + static Scene provideForgetPasswordScene(@ForgetPasswordWindow FXMLLoaderFactory fxmlLoaders) { + return fxmlLoaders.createScene("/fxml/forget_password.fxml"); + } // ------------------ diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java index f9f479cc6..5ef76c5e0 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java @@ -12,6 +12,7 @@ import javafx.scene.input.KeyCombination; import javafx.stage.Stage; import javafx.stage.StageStyle; import org.cryptomator.ui.addvaultwizard.AddVaultWizardComponent; +import org.cryptomator.ui.common.DefaultSceneFactory; import org.cryptomator.ui.common.FXMLLoaderFactory; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxControllerKey; @@ -34,8 +35,8 @@ abstract class MainWindowModule { @Provides @MainWindow @MainWindowScoped - static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, ResourceBundle resourceBundle) { - return new FXMLLoaderFactory(factories, resourceBundle); + static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, MainWindowSceneFactory sceneFactory, ResourceBundle resourceBundle) { + return new FXMLLoaderFactory(factories, sceneFactory, resourceBundle); } @Provides @@ -57,15 +58,7 @@ abstract class MainWindowModule { @FxmlScene(FxmlFile.MAIN_WINDOW) @MainWindowScoped static Scene provideMainScene(@MainWindow FXMLLoaderFactory fxmlLoaders, MainWindowController mainWindowController, VaultListController vaultListController) { - Scene scene = fxmlLoaders.createScene("/fxml/main_window.fxml"); - - // still not perfect... cant't we have a global menubar via the AWT tray app? - KeyCombination cmdN = new KeyCodeCombination(KeyCode.N, KeyCombination.SHORTCUT_DOWN); - KeyCombination cmdW = new KeyCodeCombination(KeyCode.W, KeyCombination.SHORTCUT_DOWN); - scene.getAccelerators().put(cmdN, vaultListController::didClickAddVault); - scene.getAccelerators().put(cmdW, mainWindowController::close); - - return scene; + return fxmlLoaders.createScene("/fxml/main_window.fxml"); } // ------------------ diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowSceneFactory.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowSceneFactory.java new file mode 100644 index 000000000..8c6486dc6 --- /dev/null +++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowSceneFactory.java @@ -0,0 +1,37 @@ +package org.cryptomator.ui.mainwindow; + +import dagger.Lazy; +import javafx.scene.Scene; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyCodeCombination; +import javafx.scene.input.KeyCombination; +import javafx.stage.Stage; +import org.apache.commons.lang3.SystemUtils; +import org.cryptomator.ui.common.DefaultSceneFactory; + +import javax.inject.Inject; + +@MainWindowScoped +public class MainWindowSceneFactory extends DefaultSceneFactory { + + protected static final KeyCodeCombination SHORTCUT_N = new KeyCodeCombination(KeyCode.N, KeyCombination.SHORTCUT_DOWN); + + private final Lazy mainWindowController; + private final Lazy vaultListController; + + @Inject + public MainWindowSceneFactory(Lazy mainWindowController, Lazy vaultListController) { + this.mainWindowController = mainWindowController; + this.vaultListController = vaultListController; + } + + @Override + protected void setupDefaultAccelerators(Scene scene, Stage stage) { + if (SystemUtils.IS_OS_WINDOWS) { + scene.getAccelerators().put(ALT_F4, mainWindowController.get()::close); + } else { + scene.getAccelerators().put(SHORTCUT_W, mainWindowController.get()::close); + } + scene.getAccelerators().put(SHORTCUT_N, vaultListController.get()::didClickAddVault); + } +} diff --git a/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationModule.java b/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationModule.java index 25cc31206..11d13fa81 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationModule.java @@ -1,19 +1,14 @@ package org.cryptomator.ui.migration; import dagger.Binds; -import dagger.Lazy; import dagger.Module; import dagger.Provides; import dagger.multibindings.IntoMap; -import dagger.multibindings.IntoSet; import javafx.scene.Scene; import javafx.scene.image.Image; -import javafx.scene.input.KeyCode; -import javafx.scene.input.KeyCodeCombination; -import javafx.scene.input.KeyCombination; import javafx.stage.Modality; import javafx.stage.Stage; -import org.apache.commons.lang3.SystemUtils; +import org.cryptomator.ui.common.DefaultSceneFactory; import org.cryptomator.ui.common.FXMLLoaderFactory; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxControllerKey; @@ -26,7 +21,6 @@ import javax.inject.Provider; import java.util.Map; import java.util.Optional; import java.util.ResourceBundle; -import java.util.Set; @Module abstract class MigrationModule { @@ -34,29 +28,19 @@ abstract class MigrationModule { @Provides @MigrationWindow @MigrationScoped - static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, ResourceBundle resourceBundle) { - return new FXMLLoaderFactory(factories, resourceBundle); - } - - @Provides - @MigrationWindow - @MigrationScoped - static Map provideDefaultAccellerators(@MigrationWindow Set> accelerators) { - return Map.ofEntries(accelerators.toArray(Map.Entry[]::new)); + static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle) { + return new FXMLLoaderFactory(factories, sceneFactory, resourceBundle); } @Provides @MigrationWindow @MigrationScoped - static Stage provideStage(@MainWindow Stage owner, ResourceBundle resourceBundle, @Named("windowIcon") Optional windowIcon, @MigrationWindow Lazy> accelerators) { + static Stage provideStage(@MainWindow Stage owner, ResourceBundle resourceBundle, @Named("windowIcon") Optional windowIcon) { Stage stage = new Stage(); stage.setTitle(resourceBundle.getString("migration.title")); stage.setResizable(false); stage.initModality(Modality.WINDOW_MODAL); stage.initOwner(owner); - stage.sceneProperty().addListener(observable -> { - stage.getScene().getAccelerators().putAll(accelerators.get()); - }); windowIcon.ifPresent(stage.getIcons()::add); return stage; } @@ -84,19 +68,6 @@ abstract class MigrationModule { // ------------------ - @Provides - @IntoSet - @MigrationWindow - static Map.Entry provideCloseWindowShortcut(@MigrationWindow Stage window) { - if (SystemUtils.IS_OS_WINDOWS) { - return Map.entry(new KeyCodeCombination(KeyCode.F4, KeyCombination.ALT_DOWN), window::close); - } else { - return Map.entry(new KeyCodeCombination(KeyCode.W, KeyCombination.SHORTCUT_DOWN), window::close); - } - } - - // ------------------ - @Binds @IntoMap @FxControllerKey(MigrationStartController.class) diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java b/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java index 44913e8f4..ae4233cb8 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java @@ -6,10 +6,8 @@ import dagger.Provides; import dagger.multibindings.IntoMap; import javafx.scene.Scene; import javafx.scene.image.Image; -import javafx.scene.input.KeyCode; -import javafx.scene.input.KeyCodeCombination; -import javafx.scene.input.KeyCombination; import javafx.stage.Stage; +import org.cryptomator.ui.common.DefaultSceneFactory; import org.cryptomator.ui.common.FXMLLoaderFactory; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxControllerKey; @@ -28,8 +26,8 @@ abstract class PreferencesModule { @Provides @PreferencesWindow @PreferencesScoped - static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, ResourceBundle resourceBundle) { - return new FXMLLoaderFactory(factories, resourceBundle); + static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle) { + return new FXMLLoaderFactory(factories, sceneFactory, resourceBundle); } @Provides @@ -46,13 +44,8 @@ abstract class PreferencesModule { @Provides @FxmlScene(FxmlFile.PREFERENCES) @PreferencesScoped - static Scene providePreferencesScene(@PreferencesWindow FXMLLoaderFactory fxmlLoaders, @PreferencesWindow Stage window) { - Scene scene = fxmlLoaders.createScene("/fxml/preferences.fxml"); - - KeyCombination cmdW = new KeyCodeCombination(KeyCode.W, KeyCombination.SHORTCUT_DOWN); - scene.getAccelerators().put(cmdW, window::close); - - return scene; + static Scene providePreferencesScene(@PreferencesWindow FXMLLoaderFactory fxmlLoaders) { + return fxmlLoaders.createScene("/fxml/preferences.fxml"); } // ------------------ diff --git a/main/ui/src/main/java/org/cryptomator/ui/quit/QuitModule.java b/main/ui/src/main/java/org/cryptomator/ui/quit/QuitModule.java index 5142d13c1..5383a0f5e 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/quit/QuitModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/quit/QuitModule.java @@ -11,6 +11,7 @@ import javafx.scene.input.KeyCodeCombination; import javafx.scene.input.KeyCombination; import javafx.stage.Modality; import javafx.stage.Stage; +import org.cryptomator.ui.common.DefaultSceneFactory; import org.cryptomator.ui.common.FXMLLoaderFactory; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxControllerKey; @@ -29,8 +30,8 @@ abstract class QuitModule { @Provides @QuitWindow @QuitScoped - static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, ResourceBundle resourceBundle) { - return new FXMLLoaderFactory(factories, resourceBundle); + static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle) { + return new FXMLLoaderFactory(factories, sceneFactory, resourceBundle); } @Provides @@ -48,13 +49,8 @@ abstract class QuitModule { @Provides @FxmlScene(FxmlFile.QUIT) @QuitScoped - static Scene provideUnlockScene(@QuitWindow FXMLLoaderFactory fxmlLoaders, @QuitWindow Stage window) { - Scene scene = fxmlLoaders.createScene("/fxml/quit.fxml"); - - KeyCombination cmdW = new KeyCodeCombination(KeyCode.W, KeyCombination.SHORTCUT_DOWN); - scene.getAccelerators().put(cmdW, window::close); - - return scene; + static Scene provideUnlockScene(@QuitWindow FXMLLoaderFactory fxmlLoaders) { + return fxmlLoaders.createScene("/fxml/quit.fxml"); } // ------------------ diff --git a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyModule.java b/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyModule.java index 44fab7177..118bd87c9 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyModule.java @@ -8,6 +8,7 @@ import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.stage.Modality; import javafx.stage.Stage; +import org.cryptomator.ui.common.DefaultSceneFactory; import org.cryptomator.ui.common.FXMLLoaderFactory; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxControllerKey; @@ -26,8 +27,8 @@ abstract class RecoveryKeyModule { @Provides @RecoveryKeyWindow @RecoveryKeyScoped - static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, ResourceBundle resourceBundle) { - return new FXMLLoaderFactory(factories, resourceBundle); + static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle) { + return new FXMLLoaderFactory(factories, sceneFactory, resourceBundle); } @Provides @@ -46,7 +47,7 @@ abstract class RecoveryKeyModule { @Provides @FxmlScene(FxmlFile.RECOVERYKEY_CREATE) @RecoveryKeyScoped - static Scene provideRecoveryKeyCreationScene(@RecoveryKeyWindow FXMLLoaderFactory fxmlLoaders, @RecoveryKeyWindow Stage window) { + static Scene provideRecoveryKeyCreationScene(@RecoveryKeyWindow FXMLLoaderFactory fxmlLoaders) { return fxmlLoaders.createScene("/fxml/recoverykey_create.fxml"); } diff --git a/main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultModule.java b/main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultModule.java index 60d541704..965b6c6e8 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultModule.java @@ -11,6 +11,7 @@ import javafx.scene.input.KeyCodeCombination; import javafx.scene.input.KeyCombination; import javafx.stage.Modality; import javafx.stage.Stage; +import org.cryptomator.ui.common.DefaultSceneFactory; import org.cryptomator.ui.common.FXMLLoaderFactory; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxControllerKey; @@ -30,8 +31,8 @@ abstract class RemoveVaultModule { @Provides @RemoveVaultWindow @RemoveVaultScoped - static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, ResourceBundle resourceBundle) { - return new FXMLLoaderFactory(factories, resourceBundle); + static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle) { + return new FXMLLoaderFactory(factories, sceneFactory, resourceBundle); } @Provides @@ -50,13 +51,8 @@ abstract class RemoveVaultModule { @Provides @FxmlScene(FxmlFile.REMOVE_VAULT) @RemoveVaultScoped - static Scene provideRemoveVaultScene(@RemoveVaultWindow FXMLLoaderFactory fxmlLoaders, @RemoveVaultWindow Stage window) { - Scene scene = fxmlLoaders.createScene("/fxml/remove_vault.fxml"); - - KeyCombination cmdW = new KeyCodeCombination(KeyCode.W, KeyCombination.SHORTCUT_DOWN); - scene.getAccelerators().put(cmdW, window::close); - - return scene; + static Scene provideRemoveVaultScene(@RemoveVaultWindow FXMLLoaderFactory fxmlLoaders) { + return fxmlLoaders.createScene("/fxml/remove_vault.fxml"); } // ------------------ diff --git a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockModule.java b/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockModule.java index 8dbb7c7b8..488f7cfa8 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockModule.java @@ -6,11 +6,9 @@ import dagger.Provides; import dagger.multibindings.IntoMap; import javafx.scene.Scene; import javafx.scene.image.Image; -import javafx.scene.input.KeyCode; -import javafx.scene.input.KeyCodeCombination; -import javafx.scene.input.KeyCombination; import javafx.stage.Modality; import javafx.stage.Stage; +import org.cryptomator.ui.common.DefaultSceneFactory; import org.cryptomator.ui.common.FXMLLoaderFactory; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxControllerKey; @@ -24,14 +22,14 @@ import java.util.Map; import java.util.Optional; import java.util.ResourceBundle; -@Module(subcomponents={ForgetPasswordComponent.class}) +@Module(subcomponents = {ForgetPasswordComponent.class}) abstract class UnlockModule { @Provides @UnlockWindow @UnlockScoped - static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, ResourceBundle resourceBundle) { - return new FXMLLoaderFactory(factories, resourceBundle); + static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle) { + return new FXMLLoaderFactory(factories, sceneFactory, resourceBundle); } @Provides @@ -49,25 +47,15 @@ abstract class UnlockModule { @Provides @FxmlScene(FxmlFile.UNLOCK) @UnlockScoped - static Scene provideUnlockScene(@UnlockWindow FXMLLoaderFactory fxmlLoaders, @UnlockWindow Stage window) { - Scene scene = fxmlLoaders.createScene("/fxml/unlock.fxml"); - - KeyCombination cmdW = new KeyCodeCombination(KeyCode.W, KeyCombination.SHORTCUT_DOWN); - scene.getAccelerators().put(cmdW, window::close); - - return scene; + static Scene provideUnlockScene(@UnlockWindow FXMLLoaderFactory fxmlLoaders) { + return fxmlLoaders.createScene("/fxml/unlock.fxml"); } @Provides @FxmlScene(FxmlFile.UNLOCK_SUCCESS) @UnlockScoped - static Scene provideUnlockSuccessScene(@UnlockWindow FXMLLoaderFactory fxmlLoaders, @UnlockWindow Stage window) { - Scene scene = fxmlLoaders.createScene("/fxml/unlock_success.fxml"); - - KeyCombination cmdW = new KeyCodeCombination(KeyCode.W, KeyCombination.SHORTCUT_DOWN); - scene.getAccelerators().put(cmdW, window::close); - - return scene; + static Scene provideUnlockSuccessScene(@UnlockWindow FXMLLoaderFactory fxmlLoaders) { + return fxmlLoaders.createScene("/fxml/unlock_success.fxml"); } diff --git a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java b/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java index 130eda0d3..09185729a 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java @@ -6,14 +6,11 @@ import dagger.Provides; import dagger.multibindings.IntoMap; import javafx.scene.Scene; import javafx.scene.image.Image; -import javafx.scene.input.KeyCode; -import javafx.scene.input.KeyCodeCombination; -import javafx.scene.input.KeyCombination; import javafx.stage.Modality; import javafx.stage.Stage; -import javafx.stage.StageStyle; import org.cryptomator.common.vaults.Vault; import org.cryptomator.ui.changepassword.ChangePasswordComponent; +import org.cryptomator.ui.common.DefaultSceneFactory; import org.cryptomator.ui.common.FXMLLoaderFactory; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxControllerKey; @@ -34,8 +31,8 @@ abstract class VaultOptionsModule { @Provides @VaultOptionsWindow @VaultOptionsScoped - static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, ResourceBundle resourceBundle) { - return new FXMLLoaderFactory(factories, resourceBundle); + static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle) { + return new FXMLLoaderFactory(factories, sceneFactory, resourceBundle); } @Provides @@ -54,13 +51,8 @@ abstract class VaultOptionsModule { @Provides @FxmlScene(FxmlFile.VAULT_OPTIONS) @VaultOptionsScoped - static Scene provideVaultOptionsScene(@VaultOptionsWindow FXMLLoaderFactory fxmlLoaders, @VaultOptionsWindow Stage window) { - Scene scene = fxmlLoaders.createScene("/fxml/vault_options.fxml"); - - KeyCombination cmdW = new KeyCodeCombination(KeyCode.W, KeyCombination.SHORTCUT_DOWN); - scene.getAccelerators().put(cmdW, window::close); - - return scene; + static Scene provideVaultOptionsScene(@VaultOptionsWindow FXMLLoaderFactory fxmlLoaders) { + return fxmlLoaders.createScene("/fxml/vault_options.fxml"); } // ------------------ diff --git a/main/ui/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertModule.java b/main/ui/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertModule.java index 174db9805..c0f2786dc 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertModule.java @@ -6,11 +6,9 @@ import dagger.Provides; import dagger.multibindings.IntoMap; import javafx.scene.Scene; import javafx.scene.image.Image; -import javafx.scene.input.KeyCode; -import javafx.scene.input.KeyCodeCombination; -import javafx.scene.input.KeyCombination; import javafx.stage.Modality; import javafx.stage.Stage; +import org.cryptomator.ui.common.DefaultSceneFactory; import org.cryptomator.ui.common.FXMLLoaderFactory; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxControllerKey; @@ -29,8 +27,8 @@ abstract class WrongFileAlertModule { @Provides @WrongFileAlertWindow @WrongFileAlertScoped - static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, ResourceBundle resourceBundle) { - return new FXMLLoaderFactory(factories, resourceBundle); + static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle) { + return new FXMLLoaderFactory(factories, sceneFactory, resourceBundle); } @Provides @@ -48,13 +46,8 @@ abstract class WrongFileAlertModule { @Provides @FxmlScene(FxmlFile.WRONGFILEALERT) @WrongFileAlertScoped - static Scene provideWrongFileAlertScene(@WrongFileAlertWindow FXMLLoaderFactory fxmlLoaders, @WrongFileAlertWindow Stage window) { - Scene scene = fxmlLoaders.createScene("/fxml/wrongfilealert.fxml"); // TODO rename fxml file - - KeyCombination cmdW = new KeyCodeCombination(KeyCode.W, KeyCombination.SHORTCUT_DOWN); - scene.getAccelerators().put(cmdW, window::close); - - return scene; + static Scene provideWrongFileAlertScene(@WrongFileAlertWindow FXMLLoaderFactory fxmlLoaders) { + return fxmlLoaders.createScene("/fxml/wrongfilealert.fxml"); } // ------------------ diff --git a/main/ui/src/main/resources/fxml/vault_list.fxml b/main/ui/src/main/resources/fxml/vault_list.fxml index 49935eb7e..2e7ca3db6 100644 --- a/main/ui/src/main/resources/fxml/vault_list.fxml +++ b/main/ui/src/main/resources/fxml/vault_list.fxml @@ -32,7 +32,7 @@ -