From e808db51a5b71f6ec29ffa9e8f1c437f05b4c370 Mon Sep 17 00:00:00 2001 From: Marc Stammerjohann Date: Wed, 20 Dec 2017 15:50:31 +0100 Subject: [PATCH 1/3] #114: show success message * after creating a vault * after changing password * after upgrade --- .../ui/controllers/MainController.java | 14 +++---- .../ui/controllers/UnlockController.java | 42 ++++++++++++++++++- main/ui/src/main/resources/fxml/unlock.fxml | 3 ++ .../ui/src/main/resources/localization/de.txt | 4 ++ .../ui/src/main/resources/localization/en.txt | 3 ++ 5 files changed, 58 insertions(+), 8 deletions(-) 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 682cd0afb..202267215 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 @@ -396,7 +396,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(); } @@ -446,7 +446,7 @@ public class MainController implements ViewController { } public void didInitialize() { - showUnlockView(); + showUnlockView(UnlockController.State.INITIALIZED); activeController.get().focus(); } @@ -458,13 +458,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); } @@ -486,7 +486,7 @@ public class MainController implements ViewController { public void didLock(UnlockedController ctrl) { unlockedVaults.remove(ctrl.getVault()); - showUnlockView(); + showUnlockView(UnlockController.State.UNLOCKING); activeController.get().focus(); } @@ -499,7 +499,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 6d30a7e2f..9369632f7 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 @@ -94,6 +94,9 @@ public class UnlockController implements ViewController { @FXML private Button unlockButton; + @FXML + private Label successMessage; + @FXML private CheckBox savePassword; @@ -160,7 +163,7 @@ public class UnlockController implements ViewController { passwordField.requestFocus(); } - void setVault(Vault vault) { + void setVault(Vault vault, State state) { vaultSubs.unsubscribe(); vaultSubs = Subscription.EMPTY; @@ -175,6 +178,10 @@ public class UnlockController implements ViewController { advancedOptions.setVisible(false); advancedOptionsButton.setText(localization.getString("unlock.button.advancedOptions.show")); progressIndicator.setVisible(false); + successMessage.setVisible(didChange(state)); + if (successMessage.isVisible()) { + successMessage.setText(localization.getString(state.successMessage())); + } if (SystemUtils.IS_OS_WINDOWS) { winDriveLetter.valueProperty().removeListener(driveLetterChangeListener); winDriveLetter.getItems().clear(); @@ -225,6 +232,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")); @@ -389,6 +397,15 @@ public class UnlockController implements ViewController { }).run(); } + private boolean didChange(State state) { + switch (state) { + case UNLOCKING: + return false; + default: + return true; + } + } + /* callback */ public void setListener(UnlockListener listener) { @@ -400,4 +417,27 @@ public class UnlockController implements ViewController { void didUnlock(Vault vault); } + /* state */ + + public enum State { + UNLOCKING(empty()), + INITIALIZED("unlock.successLabel.vaultCreated"), + PASSWORD_CHANGED("unlock.successLabel.passwordChanged"), + UPGRADED("unlock.successLabel.upgraded"); + + private static String empty() { + return ""; + } + + private String successMessage; + + State(String successMessage) { + this.successMessage = successMessage; + } + + public String successMessage() { + return successMessage; + } + } + } diff --git a/main/ui/src/main/resources/fxml/unlock.fxml b/main/ui/src/main/resources/fxml/unlock.fxml index 3d5872bf4..399aaf2fc 100644 --- a/main/ui/src/main/resources/fxml/unlock.fxml +++ b/main/ui/src/main/resources/fxml/unlock.fxml @@ -46,6 +46,9 @@