فهرست منبع

new onboarding dialog
remove is hub vault dialog

Jan-Peter Klein 2 هفته پیش
والد
کامیت
968e8f51e4

+ 1 - 1
src/main/java/org/cryptomator/ui/addvaultwizard/ChooseExistingVaultController.java

@@ -151,7 +151,7 @@ public class ChooseExistingVaultController implements FxController {
 		//TODO: optional raus, und mit error dialog arbeiten (UI kram in UI package!) hier nur fehler werfen
 		optionalVault.ifPresent(vault -> {
 			ObjectProperty<RecoveryActionType> recoverTypeProperty = new SimpleObjectProperty<>(RecoveryActionType.RESTORE_VAULT_CONFIG);
-			recoveryKeyWindow.create(vault, window, recoverTypeProperty).showIsHubVaultDialogWindow();
+			recoveryKeyWindow.create(vault, window, recoverTypeProperty).showOnboardingDialogWindow();
 		});
 	}
 

+ 1 - 1
src/main/java/org/cryptomator/ui/common/FxmlFile.java

@@ -40,8 +40,8 @@ public enum FxmlFile {
 	QUIT("/fxml/quit.fxml"), //
 	QUIT_FORCED("/fxml/quit_forced.fxml"), //
 	RECOVERYKEY_CREATE("/fxml/recoverykey_create.fxml"), //
-	RECOVERYKEY_IS_HUB_VAULT("/fxml/recoverykey_is_hub_vault.fxml"), //
 	RECOVERYKEY_EXPERT_SETTINGS("/fxml/recoverykey_expert_settings.fxml"), //
+	RECOVERYKEY_ONBOARDING("/fxml/recoverykey_onboarding.fxml"), //
 	RECOVERYKEY_RECOVER("/fxml/recoverykey_recover.fxml"), //
 	RECOVERYKEY_RESET_PASSWORD("/fxml/recoverykey_reset_password.fxml"), //
 	RECOVERYKEY_SUCCESS("/fxml/recoverykey_success.fxml"), //

+ 1 - 1
src/main/java/org/cryptomator/ui/mainwindow/VaultDetailMissingVaultController.java

@@ -62,7 +62,7 @@ public class VaultDetailMissingVaultController implements FxController {
 		}
 		else {
 			ObjectProperty<RecoveryActionType> recoverTypeProperty = new SimpleObjectProperty<>(RecoveryActionType.RESTORE_VAULT_CONFIG);
-			recoveryKeyWindow.create(vault.get(), window, recoverTypeProperty).showIsHubVaultDialogWindow();
+			recoveryKeyWindow.create(vault.get(), window, recoverTypeProperty).showOnboardingDialogWindow();
 		}
 	}
 

+ 4 - 4
src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyComponent.java

@@ -26,8 +26,8 @@ public interface RecoveryKeyComponent {
 	@FxmlScene(FxmlFile.RECOVERYKEY_RECOVER)
 	Lazy<Scene> recoverScene();
 
-	@FxmlScene(FxmlFile.RECOVERYKEY_IS_HUB_VAULT)
-	Lazy<Scene> recoverIsHubVaultScene();
+	@FxmlScene(FxmlFile.RECOVERYKEY_ONBOARDING)
+	Lazy<Scene> recoverOnboardingScene();
 
 	default void showRecoveryKeyCreationWindow() {
 		Stage stage = window();
@@ -43,9 +43,9 @@ public interface RecoveryKeyComponent {
 		stage.show();
 	}
 
-	default void showIsHubVaultDialogWindow() {
+	default void showOnboardingDialogWindow() {
 		Stage stage = window();
-		stage.setScene(recoverIsHubVaultScene().get());
+		stage.setScene(recoverOnboardingScene().get());
 		stage.sizeToScene();
 		stage.show();
 	}

+ 7 - 8
src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyModule.java

@@ -107,10 +107,10 @@ abstract class RecoveryKeyModule {
 	}
 
 	@Provides
-	@FxmlScene(FxmlFile.RECOVERYKEY_IS_HUB_VAULT)
+	@FxmlScene(FxmlFile.RECOVERYKEY_ONBOARDING)
 	@RecoveryKeyScoped
-	static Scene provideRecoveryKeyIsHubVaultScene(@RecoveryKeyWindow FxmlLoaderFactory fxmlLoaders) {
-		return fxmlLoaders.createScene(FxmlFile.RECOVERYKEY_IS_HUB_VAULT);
+	static Scene provideRecoveryKeyOnboardingScene(@RecoveryKeyWindow FxmlLoaderFactory fxmlLoaders) {
+		return fxmlLoaders.createScene(FxmlFile.RECOVERYKEY_ONBOARDING);
 	}
 
 	@Provides
@@ -153,11 +153,6 @@ abstract class RecoveryKeyModule {
 	@FxControllerKey(RecoveryKeyExpertSettingsController.class)
 	abstract FxController provideRecoveryKeyExpertSettingsController(RecoveryKeyExpertSettingsController controller);
 
-	@Binds
-	@IntoMap
-	@FxControllerKey(RecoveryKeyIsHubVaultController.class)
-	abstract FxController provideRecoveryKeyIsHubVaultController(RecoveryKeyIsHubVaultController controller);
-
 	@Binds
 	@IntoMap
 	@FxControllerKey(RecoveryKeyRecoverController.class)
@@ -173,6 +168,10 @@ abstract class RecoveryKeyModule {
 	@FxControllerKey(RecoveryKeyResetPasswordController.class)
 	abstract FxController bindRecoveryKeyResetPasswordController(RecoveryKeyResetPasswordController controller);
 
+	@Binds
+	@IntoMap
+	@FxControllerKey(RecoveryKeyOnboardingController.class)
+	abstract FxController bindRecoveryKeyOnboardingController(RecoveryKeyOnboardingController controller);
 
 	@Provides
 	@IntoMap

+ 3 - 3
src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyIsHubVaultController.java

@@ -15,14 +15,14 @@ import org.cryptomator.ui.common.FxmlFile;
 import org.cryptomator.ui.common.FxmlScene;
 
 @RecoveryKeyScoped
-public class RecoveryKeyIsHubVaultController implements FxController {
+public class RecoveryKeyOnboardingController implements FxController {
 
 	private final Stage window;
 	private final Lazy<Scene> recoverykeyRecoverScene;
 	private final ObjectProperty<RecoveryActionType> recoverType;
 
 	@Inject
-	public RecoveryKeyIsHubVaultController(@RecoveryKeyWindow Stage window, //
+	public RecoveryKeyOnboardingController(@RecoveryKeyWindow Stage window, //
 										   @FxmlScene(FxmlFile.RECOVERYKEY_RECOVER) Lazy<Scene> recoverykeyRecoverScene, //
 										   @Named("recoverType") ObjectProperty<RecoveryActionType> recoverType, //
 										   ResourceBundle resourceBundle) {
@@ -39,7 +39,7 @@ public class RecoveryKeyIsHubVaultController implements FxController {
 	}
 
 	@FXML
-	public void recover() {
+	public void next() {
 		recoverType.set(RecoveryActionType.RESTORE_VAULT_CONFIG);
 		window.setScene(recoverykeyRecoverScene.get());
 	}

+ 0 - 57
src/main/resources/fxml/recoverykey_is_hub_vault.fxml

@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<?import javafx.geometry.Insets?>
-<?import javafx.scene.control.Button?>
-<?import javafx.scene.control.ButtonBar?>
-<?import javafx.scene.control.Label?>
-<?import javafx.scene.Group?>
-<?import javafx.scene.layout.HBox?>
-<?import javafx.scene.layout.Region?>
-<?import javafx.scene.layout.StackPane?>
-<?import javafx.scene.layout.VBox?>
-<?import javafx.scene.shape.Circle?>
-<?import org.cryptomator.ui.controls.FontAwesome5IconView?>
-<HBox xmlns:fx="http://javafx.com/fxml"
-	  xmlns="http://javafx.com/javafx"
-	  fx:controller="org.cryptomator.ui.recoverykey.RecoveryKeyIsHubVaultController"
-	  minWidth="400"
-	  maxWidth="400"
-	  minHeight="204"
-	  spacing="12"
-	  alignment="TOP_CENTER">
-	<padding>
-		<Insets topRightBottomLeft="12"/>
-	</padding>
-	<children>
-		<Group>
-			<StackPane>
-				<padding>
-					<Insets topRightBottomLeft="6"/>
-				</padding>
-				<Circle styleClass="glyph-icon-primary" radius="24"/>
-				<FontAwesome5IconView styleClass="glyph-icon-white" glyph="QUESTION" glyphSize="24"/>
-			</StackPane>
-		</Group>
-
-		<VBox HBox.hgrow="ALWAYS">
-			<Label styleClass="label-large" text="%recoveryKey.recover.onBoarding.title" wrapText="true">
-				<padding>
-					<Insets bottom="6" top="6"/>
-				</padding>
-			</Label>
-			<Label text="%recoveryKey.recover.onBoarding.message" wrapText="true"/>
-			<Label text="%recoveryKey.recover.onBoarding.description" wrapText="true">
-				<padding>
-					<Insets bottom="6" top="6"/>
-				</padding>
-			</Label>
-			<Region VBox.vgrow="ALWAYS" minHeight="18"/>
-			<ButtonBar buttonMinWidth="120" buttonOrder="+C">
-				<buttons>
-					<Button text="%generic.button.close" ButtonBar.buttonData="CANCEL_CLOSE" cancelButton="true" onAction="#close"/>
-					<Button text="%recoveryKey.recover.onBoarding.confirm" ButtonBar.buttonData="CANCEL_CLOSE" defaultButton="true" onAction="#recover"/>
-				</buttons>
-			</ButtonBar>
-		</VBox>
-	</children>
-</HBox>

+ 72 - 0
src/main/resources/fxml/recoverykey_onboarding.fxml

@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.ButtonBar?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.image.Image?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.ColumnConstraints?>
+<?import javafx.scene.layout.GridPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.Region?>
+<?import javafx.scene.layout.RowConstraints?>
+<?import javafx.scene.layout.VBox?>
+<VBox xmlns:fx="http://javafx.com/fxml"
+	  xmlns="http://javafx.com/javafx"
+	  fx:controller="org.cryptomator.ui.recoverykey.RecoveryKeyOnboardingController"
+	  prefWidth="650"
+	  prefHeight="400"
+	  spacing="12">
+	<padding>
+		<Insets topRightBottomLeft="12"/>
+	</padding>
+	<children>
+		<HBox VBox.vgrow="ALWAYS">
+			<VBox alignment="CENTER" minWidth="175" maxWidth="175">
+				<ImageView VBox.vgrow="ALWAYS" fitHeight="128" preserveRatio="true" cache="true">
+					<Image url="@../img/logo128.png"/>
+				</ImageView>
+			</VBox>
+			<VBox HBox.hgrow="ALWAYS" alignment="CENTER">
+				<padding>
+					<Insets topRightBottomLeft="12"/>
+				</padding>
+				<Label text="%recoveryKey.recoverVaultConfig.title" styleClass="label-extra-large"/>
+				<Region minHeight="15"/>
+				<VBox>
+					<Label text="%recoveryKey.recover.onBoarding.message" wrapText="true"/>
+					<GridPane alignment="CENTER_LEFT" >
+						<padding>
+							<Insets left="6"/>
+						</padding>
+						<columnConstraints>
+							<ColumnConstraints minWidth="20" halignment="LEFT"/>
+							<ColumnConstraints fillWidth="true"/>
+						</columnConstraints>
+						<rowConstraints>
+							<RowConstraints valignment="TOP"/>
+							<RowConstraints valignment="TOP"/>
+							<RowConstraints valignment="TOP"/>
+						</rowConstraints>
+						<Label text="1." GridPane.rowIndex="0" GridPane.columnIndex="0" />
+						<Label text="%recoveryKey.recover.onBoarding.intro1" wrapText="true" GridPane.rowIndex="0" GridPane.columnIndex="1" />
+						<Label text="2." GridPane.rowIndex="1" GridPane.columnIndex="0" />
+						<Label text="%recoveryKey.recover.onBoarding.intro2" wrapText="true" GridPane.rowIndex="1" GridPane.columnIndex="1" />
+						<Label text="3." GridPane.rowIndex="2" GridPane.columnIndex="0" />
+						<Label text="%recoveryKey.recover.onBoarding.intro3" wrapText="true" GridPane.rowIndex="2" GridPane.columnIndex="1" />
+					</GridPane>
+					<Region minHeight="15"/>
+					<CheckBox text="%recoveryKey.recover.onBoarding.affirmation" fx:id="affirmationBox"/>
+				</VBox>
+			</VBox>
+		</HBox>
+		<ButtonBar buttonMinWidth="120" buttonOrder="+CX">
+			<buttons>
+				<Button text="%generic.button.cancel" ButtonBar.buttonData="CANCEL_CLOSE" cancelButton="true" onAction="#close"/>
+				<Button text="%generic.button.next" ButtonBar.buttonData="NEXT_FORWARD" disable="${!affirmationBox.selected}" defaultButton="true" onAction="#next"/>
+			</buttons>
+		</ButtonBar>
+	</children>
+</VBox>

+ 6 - 1
src/main/resources/i18n/strings.properties

@@ -537,9 +537,14 @@ recoveryKey.recoverVaultConfig.title=Recover Vault Config
 recoveryKey.recoverMasterkey.title=Recover Masterkey
 
 recoveryKey.recover.onBoarding.title=Restore your vault.cryptomator file
-recoveryKey.recover.onBoarding.message=If your vault is a hub managed vault, the Hub Admin can restore the file for you.
+recoveryKey.recover.onBoarding.message=If your vault is a hub managed vault, the Hub Admin can restore the file for you. Otherwise:
 recoveryKey.recover.onBoarding.description=Otherwise you will need the Recovery Key of the vault, possible some expert settings, and a new vault password.
 recoveryKey.recover.onBoarding.confirm=Use RecoveryKey
+recoveryKey.recover.onBoarding.intro1=Ensure all files are completely synced.
+recoveryKey.recover.onBoarding.intro2=You will need the Recovery Key of the vault.
+recoveryKey.recover.onBoarding.intro3=A new vault password and possible some expert settings.
+recoveryKey.recover.onBoarding.affirmation=I have read and understood the above information
+
 
 # Convert Vault
 convertVault.title=Convert Vault