diff --git a/src/main/java/org/cryptomator/ui/keyloading/hub/HubKeyLoadingStrategy.java b/src/main/java/org/cryptomator/ui/keyloading/hub/HubKeyLoadingStrategy.java index d1a3742ae..cc5edfcb4 100644 --- a/src/main/java/org/cryptomator/ui/keyloading/hub/HubKeyLoadingStrategy.java +++ b/src/main/java/org/cryptomator/ui/keyloading/hub/HubKeyLoadingStrategy.java @@ -29,8 +29,8 @@ import java.util.concurrent.ExecutionException; public class HubKeyLoadingStrategy implements KeyLoadingStrategy { private static final String SCHEME_PREFIX = "hub+"; - static final String SCHEME_HUB_HTTP = SCHEME_PREFIX + "http"; - static final String SCHEME_HUB_HTTPS = SCHEME_PREFIX + "https"; + public static final String SCHEME_HUB_HTTP = SCHEME_PREFIX + "http"; + public static final String SCHEME_HUB_HTTPS = SCHEME_PREFIX + "https"; private final Stage window; private final KeychainManager keychainManager; diff --git a/src/main/java/org/cryptomator/ui/vaultoptions/HubOptionsController.java b/src/main/java/org/cryptomator/ui/vaultoptions/HubOptionsController.java new file mode 100644 index 000000000..04863bfb5 --- /dev/null +++ b/src/main/java/org/cryptomator/ui/vaultoptions/HubOptionsController.java @@ -0,0 +1,20 @@ +package org.cryptomator.ui.vaultoptions; + +import org.cryptomator.common.vaults.Vault; +import org.cryptomator.ui.common.FxController; + +import javax.inject.Inject; +import javafx.stage.Stage; + +public class HubOptionsController implements FxController { + + private final Vault vault; + private final Stage window; + + + @Inject + public HubOptionsController(@VaultOptionsWindow Vault vault, @VaultOptionsWindow Stage window) { + this.vault = vault; + this.window = window; + } +} diff --git a/src/main/java/org/cryptomator/ui/vaultoptions/SelectedVaultOptionsTab.java b/src/main/java/org/cryptomator/ui/vaultoptions/SelectedVaultOptionsTab.java index 3fc738fb0..f9470af96 100644 --- a/src/main/java/org/cryptomator/ui/vaultoptions/SelectedVaultOptionsTab.java +++ b/src/main/java/org/cryptomator/ui/vaultoptions/SelectedVaultOptionsTab.java @@ -21,4 +21,9 @@ public enum SelectedVaultOptionsTab { */ KEY, + /** + * Show hub tab + */ + HUB + } diff --git a/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsController.java b/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsController.java index c0023acb8..3abc23e9e 100644 --- a/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsController.java +++ b/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsController.java @@ -2,6 +2,8 @@ package org.cryptomator.ui.vaultoptions; import org.cryptomator.common.vaults.Vault; import org.cryptomator.ui.common.FxController; +import org.cryptomator.ui.keyloading.hub.HubKeyLoadingStrategy; +import org.cryptomator.ui.keyloading.masterkeyfile.MasterkeyFileLoadingStrategy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,6 +27,7 @@ public class VaultOptionsController implements FxController { public Tab generalTab; public Tab mountTab; public Tab keyTab; + public Tab hubTab; @Inject VaultOptionsController(@VaultOptionsWindow Stage window, @VaultOptionsWindow Vault vault, ObjectProperty selectedTabProperty) { @@ -38,9 +41,13 @@ public class VaultOptionsController implements FxController { window.setOnShowing(this::windowWillAppear); selectedTabProperty.addListener(observable -> this.selectChosenTab()); tabPane.getSelectionModel().selectedItemProperty().addListener(observable -> this.selectedTabChanged()); - if(!vault.getVaultConfigCache().getUnchecked().getKeyId().getScheme().equals("masterkeyfile")){ + var vaultScheme = vault.getVaultConfigCache().getUnchecked().getKeyId().getScheme(); + if(!vaultScheme.equals(MasterkeyFileLoadingStrategy.SCHEME)){ tabPane.getTabs().remove(keyTab); } + if(!(vaultScheme.equals(HubKeyLoadingStrategy.SCHEME_HUB_HTTP) || vaultScheme.equals(HubKeyLoadingStrategy.SCHEME_HUB_HTTPS))){ + tabPane.getTabs().remove(hubTab); + } } private void selectChosenTab() { @@ -53,6 +60,7 @@ public class VaultOptionsController implements FxController { case ANY, GENERAL -> generalTab; case MOUNT -> mountTab; case KEY -> keyTab; + case HUB -> hubTab; }; } diff --git a/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java b/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java index a9014cc54..50df38e71 100644 --- a/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java +++ b/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java @@ -84,4 +84,9 @@ abstract class VaultOptionsModule { @IntoMap @FxControllerKey(MasterkeyOptionsController.class) abstract FxController bindMasterkeyOptionsController(MasterkeyOptionsController controller); + + @Binds + @IntoMap + @FxControllerKey(HubOptionsController.class) + abstract FxController bindHubOptionsController(HubOptionsController controller); } diff --git a/src/main/resources/fxml/vault_options.fxml b/src/main/resources/fxml/vault_options.fxml index 6ecc2af9b..46babe41c 100644 --- a/src/main/resources/fxml/vault_options.fxml +++ b/src/main/resources/fxml/vault_options.fxml @@ -36,5 +36,13 @@ + + + + + + + + diff --git a/src/main/resources/fxml/vault_options_hub.fxml b/src/main/resources/fxml/vault_options_hub.fxml new file mode 100644 index 000000000..c5ff8e53c --- /dev/null +++ b/src/main/resources/fxml/vault_options_hub.fxml @@ -0,0 +1,17 @@ + + + + + + + + + + + + +