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 2251903bc..5043fa485 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 @@ -87,6 +87,11 @@ abstract class MainWindowModule { @IntoMap @FxControllerKey(VaultDetailController.class) abstract FxController bindVaultDetailController(VaultDetailController controller); + + @Binds + @IntoMap + @FxControllerKey(WelcomeController.class) + abstract FxController bindWelcomeController(WelcomeController controller); @Binds @IntoMap diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/WelcomeController.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/WelcomeController.java new file mode 100644 index 000000000..6d780032f --- /dev/null +++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/WelcomeController.java @@ -0,0 +1,45 @@ +package org.cryptomator.ui.mainwindow; + +import javafx.application.Application; +import javafx.beans.binding.Bindings; +import javafx.beans.binding.BooleanBinding; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import org.cryptomator.common.vaults.Vault; +import org.cryptomator.ui.common.FxController; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.inject.Inject; + +@MainWindowScoped +public class WelcomeController implements FxController { + + private static final Logger LOG = LoggerFactory.getLogger(WelcomeController.class); + private static final String GETTING_STARTED_URI = "https://docs.cryptomator.org/en/latest/desktop/basic-concepts/"; + + private final Application application; + private final BooleanBinding noVaultPresent; + + @Inject + public WelcomeController(Application application, ObservableList vaults) { + this.application = application; + this.noVaultPresent = Bindings.isEmpty(vaults); + } + + @FXML + public void visitGettingStartedGuide() { + LOG.trace("Opening {}", GETTING_STARTED_URI); + application.getHostServices().showDocument(GETTING_STARTED_URI); + } + + /* Getter/Setter */ + + public BooleanBinding noVaultPresentProperty() { + return noVaultPresent; + } + + public boolean isNoVaultPresent() { + return noVaultPresent.get(); + } +} diff --git a/main/ui/src/main/resources/fxml/main_window.fxml b/main/ui/src/main/resources/fxml/main_window.fxml index 8bae2c6a6..1eb017a75 100644 --- a/main/ui/src/main/resources/fxml/main_window.fxml +++ b/main/ui/src/main/resources/fxml/main_window.fxml @@ -1,10 +1,7 @@ - - - diff --git a/main/ui/src/main/resources/fxml/vault_detail.fxml b/main/ui/src/main/resources/fxml/vault_detail.fxml index 19a590cd6..3c97edb9d 100644 --- a/main/ui/src/main/resources/fxml/vault_detail.fxml +++ b/main/ui/src/main/resources/fxml/vault_detail.fxml @@ -13,14 +13,13 @@ - + @@ -48,6 +47,7 @@ + diff --git a/main/ui/src/main/resources/fxml/vault_detail_welcome.fxml b/main/ui/src/main/resources/fxml/vault_detail_welcome.fxml new file mode 100644 index 000000000..2712354ec --- /dev/null +++ b/main/ui/src/main/resources/fxml/vault_detail_welcome.fxml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/main/ui/src/main/resources/i18n/strings.properties b/main/ui/src/main/resources/i18n/strings.properties index 2032732f2..a6f56a4b6 100644 --- a/main/ui/src/main/resources/i18n/strings.properties +++ b/main/ui/src/main/resources/i18n/strings.properties @@ -160,6 +160,8 @@ main.vaultlist.emptyList.onboardingInstruction=Click here to add a vault main.vaultlist.contextMenu.remove=Remove Vault main.vaultlist.addVaultBtn=Add Vault ## Vault Detail +### Welcome +main.vaultDetail.welcomeOnboarding=Thanks for choosing Cryptomator to protect your files. If you need any assistance, check out our getting started guides: ### Locked main.vaultDetail.lockedStatus=LOCKED main.vaultDetail.unlockBtn=Unlock