From b76e1d416774258fef4c0017996fefc735369a15 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Fri, 19 Jul 2019 12:46:34 +0200 Subject: [PATCH] Each window is now a separate @Subcomponent of the FxApplicationComponent --- .../org/cryptomator/ui/FxApplication.java | 41 +++++--------- .../cryptomator/ui/FxApplicationModule.java | 19 ++++++- .../java/org/cryptomator/ui/UiModule.java | 11 ++-- .../ui/{ => common}/FXMLLoaderFactory.java | 7 ++- .../ui/{ => common}/FxController.java | 2 +- .../ui/{ => common}/FxControllerKey.java | 2 +- .../ui/mainwindow/MainWindowComponent.java | 43 +++++++++++++++ .../ui/mainwindow/MainWindowController.java | 15 +++--- .../ui/mainwindow/MainWindowModule.java | 54 +++++++++---------- ...{MainWindow.java => MainWindowScoped.java} | 6 +-- .../ui/mainwindow/VaultDetailController.java | 5 +- .../ui/mainwindow/VaultListController.java | 7 ++- .../ui/preferences/PreferencesComponent.java | 43 +++++++++++++++ .../ui/preferences/PreferencesController.java | 4 +- .../ui/preferences/PreferencesModule.java | 39 ++++++++------ ...ncesWindow.java => PreferencesScoped.java} | 6 +-- 16 files changed, 194 insertions(+), 110 deletions(-) rename main/ui/src/main/java/org/cryptomator/ui/{ => common}/FXMLLoaderFactory.java (86%) rename main/ui/src/main/java/org/cryptomator/ui/{ => common}/FxController.java (91%) rename main/ui/src/main/java/org/cryptomator/ui/{ => common}/FxControllerKey.java (95%) create mode 100644 main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowComponent.java rename main/ui/src/main/java/org/cryptomator/ui/mainwindow/{MainWindow.java => MainWindowScoped.java} (74%) create mode 100644 main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesComponent.java rename main/ui/src/main/java/org/cryptomator/ui/preferences/{PreferencesWindow.java => PreferencesScoped.java} (73%) diff --git a/main/ui/src/main/java/org/cryptomator/ui/FxApplication.java b/main/ui/src/main/java/org/cryptomator/ui/FxApplication.java index 41973dc57..a3c960dcf 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/FxApplication.java +++ b/main/ui/src/main/java/org/cryptomator/ui/FxApplication.java @@ -2,34 +2,28 @@ package org.cryptomator.ui; import javafx.application.Application; import javafx.application.Platform; -import javafx.scene.Parent; -import javafx.scene.Scene; import javafx.stage.Stage; -import org.cryptomator.ui.mainwindow.MainWindow; -import org.cryptomator.ui.preferences.PreferencesWindow; +import org.cryptomator.ui.mainwindow.MainWindowComponent; +import org.cryptomator.ui.preferences.PreferencesComponent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.inject.Inject; import java.awt.Desktop; import java.awt.desktop.PreferencesEvent; -import java.io.IOException; -import java.io.UncheckedIOException; @FxApplicationScoped public class FxApplication extends Application { private static final Logger LOG = LoggerFactory.getLogger(FxApplication.class); - private final Stage mainWindow; - private final Stage preferencesWindow; - private final FXMLLoaderFactory fxmlLoaders; + private final MainWindowComponent.Builder mainWindow; + private final PreferencesComponent.Builder preferencesWindow; @Inject - FxApplication(@MainWindow Stage mainWindow, @PreferencesWindow Stage preferencesWindow, FXMLLoaderFactory fxmlLoaders) { + FxApplication(MainWindowComponent.Builder mainWindow, PreferencesComponent.Builder preferencesWindow) { this.mainWindow = mainWindow; this.preferencesWindow = preferencesWindow; - this.fxmlLoaders = fxmlLoaders; } public void start() { @@ -37,36 +31,25 @@ public class FxApplication extends Application { if (Desktop.getDesktop().isSupported(Desktop.Action.APP_PREFERENCES)) { Desktop.getDesktop().setPreferencesHandler(this::handlePreferences); } - - start(mainWindow); + + start(null); } @Override public void start(Stage stage) { - assert stage == mainWindow; - showMainWindow(); + assert stage == null; + + mainWindow.build().showMainWindow(); } private void handlePreferences(PreferencesEvent preferencesEvent) { Platform.runLater(this::showPreferencesWindow); } - public void showMainWindow() { - showViewInWindow("/fxml/main_window.fxml", mainWindow); - } public void showPreferencesWindow() { - showViewInWindow("/fxml/preferences.fxml", preferencesWindow); - } - - private void showViewInWindow(String fxmlResourceName, Stage window) { - try { - Parent root = fxmlLoaders.load(fxmlResourceName).getRoot(); - window.setScene(new Scene(root)); - window.show(); - } catch (IOException e) { - LOG.error("Failed to load " + fxmlResourceName, e); - } + preferencesWindow.build().showPreferencesWindow(); } + } diff --git a/main/ui/src/main/java/org/cryptomator/ui/FxApplicationModule.java b/main/ui/src/main/java/org/cryptomator/ui/FxApplicationModule.java index 9a997ed9a..a9d24bba1 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/FxApplicationModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/FxApplicationModule.java @@ -7,13 +7,30 @@ package org.cryptomator.ui; import dagger.Binds; import dagger.Module; +import dagger.Provides; import javafx.application.Application; +import javafx.beans.property.ObjectProperty; +import javafx.beans.property.SimpleObjectProperty; +import javafx.collections.ObservableList; +import org.cryptomator.ui.mainwindow.MainWindowComponent; +import org.cryptomator.ui.model.Vault; +import org.cryptomator.ui.model.VaultList; +import org.cryptomator.ui.preferences.PreferencesComponent; -@Module(includes = {UiModule.class}) +@Module(includes = {UiModule.class}, subcomponents = {MainWindowComponent.class, PreferencesComponent.class}) abstract class FxApplicationModule { @Binds @FxApplicationScoped abstract Application provideApplication(FxApplication application); + @Binds + abstract ObservableList bindVaultList(VaultList vaultList); + + @Provides + @FxApplicationScoped + static ObjectProperty provideSelectedVault() { + return new SimpleObjectProperty<>(); + } + } diff --git a/main/ui/src/main/java/org/cryptomator/ui/UiModule.java b/main/ui/src/main/java/org/cryptomator/ui/UiModule.java index 9b9922061..f5df4628e 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/UiModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/UiModule.java @@ -11,13 +11,12 @@ package org.cryptomator.ui; import dagger.Module; import dagger.Provides; import javafx.beans.binding.Binding; +import javafx.beans.binding.Bindings; import org.apache.commons.lang3.SystemUtils; import org.cryptomator.common.settings.Settings; import org.cryptomator.frontend.webdav.WebDavServer; import org.cryptomator.keychain.KeychainModule; -import org.cryptomator.ui.mainwindow.MainWindowModule; import org.cryptomator.ui.model.VaultComponent; -import org.cryptomator.ui.preferences.PreferencesModule; import org.fxmisc.easybind.EasyBind; import javax.inject.Named; @@ -28,7 +27,7 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; -@Module(includes = {KeychainModule.class, MainWindowModule.class, PreferencesModule.class}, subcomponents = {VaultComponent.class}) +@Module(includes = {KeychainModule.class}, subcomponents = {VaultComponent.class}) public class UiModule { private static final int NUM_SCHEDULER_THREADS = 4; @@ -64,10 +63,10 @@ public class UiModule { @Provides @FxApplicationScoped Binding provideServerSocketAddressBinding(Settings settings) { - return EasyBind.map(settings.port(), (Number port) -> { + return Bindings.createObjectBinding(() -> { String host = SystemUtils.IS_OS_WINDOWS ? "127.0.0.1" : "localhost"; - return InetSocketAddress.createUnresolved(host, port.intValue()); - }); + return InetSocketAddress.createUnresolved(host, settings.port().intValue()); + }, settings.port()); } @Provides diff --git a/main/ui/src/main/java/org/cryptomator/ui/FXMLLoaderFactory.java b/main/ui/src/main/java/org/cryptomator/ui/common/FXMLLoaderFactory.java similarity index 86% rename from main/ui/src/main/java/org/cryptomator/ui/FXMLLoaderFactory.java rename to main/ui/src/main/java/org/cryptomator/ui/common/FXMLLoaderFactory.java index 146d16ae4..ef157b50c 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/FXMLLoaderFactory.java +++ b/main/ui/src/main/java/org/cryptomator/ui/common/FXMLLoaderFactory.java @@ -1,6 +1,7 @@ -package org.cryptomator.ui; +package org.cryptomator.ui.common; import javafx.fxml.FXMLLoader; +import org.cryptomator.ui.FxApplicationScoped; import javax.inject.Inject; import javax.inject.Provider; @@ -9,14 +10,12 @@ import java.io.InputStream; import java.util.Map; import java.util.ResourceBundle; -@FxApplicationScoped public class FXMLLoaderFactory { private final Map, Provider> factories; private final ResourceBundle resourceBundle; - @Inject - FXMLLoaderFactory(Map, Provider> factories) { + public FXMLLoaderFactory(Map, Provider> factories) { this.factories = factories; this.resourceBundle = ResourceBundle.getBundle("i18n.strings"); } diff --git a/main/ui/src/main/java/org/cryptomator/ui/FxController.java b/main/ui/src/main/java/org/cryptomator/ui/common/FxController.java similarity index 91% rename from main/ui/src/main/java/org/cryptomator/ui/FxController.java rename to main/ui/src/main/java/org/cryptomator/ui/common/FxController.java index df717a5b2..779b3f7e9 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/FxController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/common/FxController.java @@ -3,7 +3,7 @@ * All rights reserved. This program and the accompanying materials * are made available under the terms of the accompanying LICENSE file. *******************************************************************************/ -package org.cryptomator.ui; +package org.cryptomator.ui.common; public interface FxController { } diff --git a/main/ui/src/main/java/org/cryptomator/ui/FxControllerKey.java b/main/ui/src/main/java/org/cryptomator/ui/common/FxControllerKey.java similarity index 95% rename from main/ui/src/main/java/org/cryptomator/ui/FxControllerKey.java rename to main/ui/src/main/java/org/cryptomator/ui/common/FxControllerKey.java index a9cfbf739..d4f87c60b 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/FxControllerKey.java +++ b/main/ui/src/main/java/org/cryptomator/ui/common/FxControllerKey.java @@ -3,7 +3,7 @@ * All rights reserved. This program and the accompanying materials * are made available under the terms of the accompanying LICENSE file. *******************************************************************************/ -package org.cryptomator.ui; +package org.cryptomator.ui.common; import dagger.MapKey; diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowComponent.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowComponent.java new file mode 100644 index 000000000..14e36563d --- /dev/null +++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowComponent.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * Copyright (c) 2017 Skymatic UG (haftungsbeschränkt). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the accompanying LICENSE file. + *******************************************************************************/ +package org.cryptomator.ui.mainwindow; + +import dagger.Subcomponent; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.stage.Stage; +import javafx.stage.Window; +import org.cryptomator.ui.common.FXMLLoaderFactory; +import org.cryptomator.ui.model.Vault; + +import java.io.IOException; +import java.io.UncheckedIOException; + +@MainWindowScoped +@Subcomponent(modules = {MainWindowModule.class}) +public interface MainWindowComponent { + + Stage mainWindow(); + + FXMLLoaderFactory fxmlLoaders(); + + default void showMainWindow() { + try { + Parent root = fxmlLoaders().load("/fxml/main_window.fxml").getRoot(); + Stage stage = mainWindow(); + stage.setScene(new Scene(root)); + stage.show(); + } catch (IOException e) { + throw new UncheckedIOException("Failed to load main_window.fxml", e); + } + } + + @Subcomponent.Builder + interface Builder { + MainWindowComponent build(); + } + +} diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java index 6712f0f34..02206174a 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java @@ -1,12 +1,11 @@ package org.cryptomator.ui.mainwindow; -import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.layout.HBox; import javafx.stage.Stage; import org.cryptomator.ui.FxApplication; import org.cryptomator.ui.FxApplicationScoped; -import org.cryptomator.ui.FxController; +import org.cryptomator.ui.common.FxController; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -14,13 +13,13 @@ import javax.inject.Inject; import javax.inject.Named; import java.util.concurrent.CountDownLatch; -@FxApplicationScoped +@MainWindowScoped public class MainWindowController implements FxController { - + private static final Logger LOG = LoggerFactory.getLogger(MainWindowController.class); private final CountDownLatch shutdownLatch; - private final Stage mainWindow; + private final Stage window; private final FxApplication application; @FXML @@ -30,9 +29,9 @@ public class MainWindowController implements FxController { private double yOffset; @Inject - public MainWindowController(@Named("shutdownLatch") CountDownLatch shutdownLatch, @MainWindow Stage mainWindow, FxApplication application) { + public MainWindowController(@Named("shutdownLatch") CountDownLatch shutdownLatch, Stage window, FxApplication application) { this.shutdownLatch = shutdownLatch; - this.mainWindow = mainWindow; + this.window = window; this.application = application; } @@ -51,7 +50,7 @@ public class MainWindowController implements FxController { @FXML public void close() { - mainWindow.close(); + window.close(); LOG.info("closed..."); shutdownLatch.countDown(); } 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 1f6bf0907..492f6455f 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 @@ -4,20 +4,36 @@ import dagger.Binds; import dagger.Module; import dagger.Provides; import dagger.multibindings.IntoMap; -import javafx.beans.property.ObjectProperty; -import javafx.beans.property.SimpleObjectProperty; -import javafx.collections.ObservableList; import javafx.stage.Stage; import javafx.stage.StageStyle; -import org.cryptomator.ui.FxApplicationScoped; -import org.cryptomator.ui.FxController; -import org.cryptomator.ui.FxControllerKey; -import org.cryptomator.ui.model.Vault; -import org.cryptomator.ui.model.VaultList; +import org.cryptomator.ui.common.FXMLLoaderFactory; +import org.cryptomator.ui.common.FxController; +import org.cryptomator.ui.common.FxControllerKey; + +import javax.inject.Provider; +import java.util.Map; @Module public abstract class MainWindowModule { + @Provides + @MainWindowScoped + static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories) { + return new FXMLLoaderFactory(factories); + } + + @Provides + @MainWindowScoped + static Stage provideStage() { + Stage stage = new Stage(); + stage.setMinWidth(652.0); + stage.setMinHeight(440.0); + stage.initStyle(StageStyle.UNDECORATED); + return stage; + } + + // ------------------ + @Binds @IntoMap @FxControllerKey(MainWindowController.class) @@ -32,27 +48,5 @@ public abstract class MainWindowModule { @IntoMap @FxControllerKey(VaultDetailController.class) abstract FxController bindVaultDetailController(VaultDetailController controller); - - // ------------------ - - @Provides - @FxApplicationScoped - @MainWindow - static Stage providePrimaryStage() { - Stage stage = new Stage(); - stage.setMinWidth(652.0); - stage.setMinHeight(440.0); - stage.initStyle(StageStyle.UNDECORATED); - return stage; - } - - @Binds - abstract ObservableList bindVaultList(VaultList vaultList); - - @Provides - @FxApplicationScoped - static ObjectProperty provideSelectedVault() { - return new SimpleObjectProperty<>(); - } } diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindow.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowScoped.java similarity index 74% rename from main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindow.java rename to main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowScoped.java index 33c534139..69be1d76f 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindow.java +++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowScoped.java @@ -1,13 +1,13 @@ package org.cryptomator.ui.mainwindow; -import javax.inject.Qualifier; +import javax.inject.Scope; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -@Qualifier +@Scope @Documented @Retention(RetentionPolicy.RUNTIME) -public @interface MainWindow { +@interface MainWindowScoped { } diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailController.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailController.java index 9f4b7590e..87ecd363c 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailController.java @@ -2,13 +2,12 @@ package org.cryptomator.ui.mainwindow; import javafx.beans.property.ObjectProperty; import javafx.beans.property.ReadOnlyObjectProperty; -import org.cryptomator.ui.FxApplicationScoped; -import org.cryptomator.ui.FxController; +import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.model.Vault; import javax.inject.Inject; -@FxApplicationScoped +@MainWindowScoped public class VaultDetailController implements FxController { private final ReadOnlyObjectProperty vault; diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java index 6ad08016a..11ecf6073 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java @@ -6,15 +6,14 @@ import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.scene.control.ListView; import javafx.scene.layout.AnchorPane; -import org.cryptomator.ui.FxApplicationScoped; -import org.cryptomator.ui.FxController; +import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.model.Vault; import javax.inject.Inject; -@FxApplicationScoped +@MainWindowScoped public class VaultListController implements FxController { - + private final ObservableList vaults; private final ObjectProperty selectedVault; public ListView vaultList; diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesComponent.java b/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesComponent.java new file mode 100644 index 000000000..60ec75dcf --- /dev/null +++ b/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesComponent.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * Copyright (c) 2017 Skymatic UG (haftungsbeschränkt). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the accompanying LICENSE file. + *******************************************************************************/ +package org.cryptomator.ui.preferences; + +import dagger.Subcomponent; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.stage.Stage; +import org.cryptomator.ui.common.FXMLLoaderFactory; +import org.cryptomator.ui.mainwindow.MainWindowModule; + +import java.io.IOException; +import java.io.UncheckedIOException; + +@PreferencesScoped +@Subcomponent(modules = {PreferencesModule.class}) +public interface PreferencesComponent { + + Stage preferencesWindow(); + + FXMLLoaderFactory fxmlLoaders(); + + default void showPreferencesWindow() { + try { + Parent root = fxmlLoaders().load("/fxml/preferences.fxml").getRoot(); + Stage stage = preferencesWindow(); + stage.setScene(new Scene(root)); + stage.show(); + } catch (IOException e) { + throw new UncheckedIOException("Failed to load main_window.fxml", e); + } + } + + @Subcomponent.Builder + interface Builder { + + PreferencesComponent build(); + } + +} diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesController.java b/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesController.java index 82b6798c1..a48e7d584 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesController.java @@ -10,12 +10,12 @@ import javafx.util.StringConverter; import org.cryptomator.common.settings.Settings; import org.cryptomator.common.settings.VolumeImpl; import org.cryptomator.common.settings.WebDavUrlScheme; -import org.cryptomator.ui.FxController; +import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.model.Volume; import javax.inject.Inject; -@PreferencesWindow +@PreferencesScoped public class PreferencesController implements FxController { private final Settings settings; 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 11896f034..619f13f37 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,29 +6,38 @@ import dagger.Provides; import dagger.multibindings.IntoMap; import javafx.stage.Modality; import javafx.stage.Stage; -import org.cryptomator.ui.FxApplicationScoped; -import org.cryptomator.ui.FxController; -import org.cryptomator.ui.FxControllerKey; -import org.cryptomator.ui.mainwindow.MainWindow; +import org.cryptomator.ui.common.FXMLLoaderFactory; +import org.cryptomator.ui.common.FxController; +import org.cryptomator.ui.common.FxControllerKey; + +import javax.inject.Provider; +import java.util.Map; @Module public abstract class PreferencesModule { + @Provides + @PreferencesScoped + static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories) { + return new FXMLLoaderFactory(factories); + } + + @Provides + @PreferencesScoped + static Stage provideStage() { + Stage stage = new Stage(); + stage.setMinWidth(400); + stage.setMinHeight(300); + stage.initModality(Modality.APPLICATION_MODAL); + return stage; + } + + // ------------------ + @Binds @IntoMap @FxControllerKey(PreferencesController.class) abstract FxController bindPreferencesController(PreferencesController controller); - @Provides - @FxApplicationScoped - @PreferencesWindow - static Stage providePreferencesStage(@MainWindow Stage mainWindow) { - Stage stage = new Stage(); - stage.setMinWidth(400); - stage.setMinHeight(300); - stage.initModality(Modality.APPLICATION_MODAL); - stage.initOwner(mainWindow); - return stage; - } } diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesWindow.java b/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesScoped.java similarity index 73% rename from main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesWindow.java rename to main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesScoped.java index a2bc2b81d..0015ee362 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesWindow.java +++ b/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesScoped.java @@ -1,13 +1,13 @@ package org.cryptomator.ui.preferences; -import javax.inject.Qualifier; +import javax.inject.Scope; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -@Qualifier +@Scope @Documented @Retention(RetentionPolicy.RUNTIME) -public @interface PreferencesWindow { +@interface PreferencesScoped { }