diff --git a/main/ui/src/main/java/org/cryptomator/ui/controllers/MainController.java b/main/ui/src/main/java/org/cryptomator/ui/controllers/MainController.java index dcaa2532d..d473e7019 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/controllers/MainController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/controllers/MainController.java @@ -397,7 +397,7 @@ public class MainController implements ViewController { } else if (newValue.isValidVaultDirectory() && upgradeStrategyForSelectedVault.isPresent()) { this.showUpgradeView(); } else if (newValue.isValidVaultDirectory()) { - this.showUnlockView(); + this.showUnlockView(UnlockController.State.UNLOCKING); } else { this.showInitializeView(); } @@ -447,7 +447,7 @@ public class MainController implements ViewController { } public void didInitialize() { - showUnlockView(); + showUnlockView(UnlockController.State.INITIALIZED); activeController.get().focus(); } @@ -459,13 +459,13 @@ public class MainController implements ViewController { } public void didUpgrade() { - showUnlockView(); + showUnlockView(UnlockController.State.UPGRADED); activeController.get().focus(); } - private void showUnlockView() { + private void showUnlockView(UnlockController.State state) { final UnlockController ctrl = viewControllerLoader.load("/fxml/unlock.fxml"); - ctrl.setVault(selectedVault.get()); + ctrl.setVault(selectedVault.get(), state); ctrl.setListener(this::didUnlock); activeController.set(ctrl); } @@ -487,7 +487,7 @@ public class MainController implements ViewController { public void didLock(UnlockedController ctrl) { unlockedVaults.remove(ctrl.getVault()); - showUnlockView(); + showUnlockView(UnlockController.State.UNLOCKING); activeController.get().focus(); } @@ -500,7 +500,7 @@ public class MainController implements ViewController { } public void didChangePassword() { - showUnlockView(); + showUnlockView(UnlockController.State.PASSWORD_CHANGED); activeController.get().focus(); } diff --git a/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockController.java b/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockController.java index 59017d320..1e2c8f294 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockController.java @@ -101,6 +101,9 @@ public class UnlockController implements ViewController { @FXML private Button unlockButton; + @FXML + private Label successMessage; + @FXML private CheckBox savePassword; @@ -194,7 +197,7 @@ public class UnlockController implements ViewController { passwordField.requestFocus(); } - void setVault(Vault vault) { + void setVault(Vault vault, State state) { vaultSubs.unsubscribe(); vaultSubs = Subscription.EMPTY; @@ -209,6 +212,8 @@ public class UnlockController implements ViewController { advancedOptions.setVisible(false); advancedOptionsButton.setText(localization.getString("unlock.button.advancedOptions.show")); progressIndicator.setVisible(false); + successMessage.setVisible(state.successMessage().isPresent()); + state.successMessage().map(localization::getString).ifPresent(successMessage::setText); if (SystemUtils.IS_OS_WINDOWS) { winDriveLetter.valueProperty().removeListener(driveLetterChangeListener); winDriveLetter.getItems().clear(); @@ -265,6 +270,7 @@ public class UnlockController implements ViewController { @FXML private void didClickAdvancedOptionsButton(ActionEvent event) { + successMessage.setVisible(false); advancedOptions.setVisible(!advancedOptions.isVisible()); if (advancedOptions.isVisible()) { advancedOptionsButton.setText(localization.getString("unlock.button.advancedOptions.hide")); @@ -463,4 +469,24 @@ public class UnlockController implements ViewController { void didUnlock(Vault vault); } + /* state */ + + public enum State { + UNLOCKING(null), + INITIALIZED("unlock.successLabel.vaultCreated"), + PASSWORD_CHANGED("unlock.successLabel.passwordChanged"), + UPGRADED("unlock.successLabel.upgraded"); + + private Optional successMessage; + + State(String successMessage) { + this.successMessage = Optional.ofNullable(successMessage); + } + + public Optional successMessage() { + return successMessage; + } + + } + } diff --git a/main/ui/src/main/resources/fxml/unlock.fxml b/main/ui/src/main/resources/fxml/unlock.fxml index 2c243b540..89516cd92 100644 --- a/main/ui/src/main/resources/fxml/unlock.fxml +++ b/main/ui/src/main/resources/fxml/unlock.fxml @@ -46,6 +46,9 @@