Переглянути джерело

add stub for vault conversion (hub to local)

Armin Schrenk 2 роки тому
батько
коміт
28bb2ff9b1

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

@@ -9,6 +9,7 @@ public enum FxmlFile {
 	ADDVAULT_SUCCESS("/fxml/addvault_success.fxml"), //
 	ADDVAULT_WELCOME("/fxml/addvault_welcome.fxml"), //
 	CHANGEPASSWORD("/fxml/changepassword.fxml"), //
+	CONVERTVAULT_HUBTOLOCAL("/fxml/convertvault_hubtolocal_start.fxml"), //
 	ERROR("/fxml/error.fxml"), //
 	FORGET_PASSWORD("/fxml/forget_password.fxml"), //
 	HEALTH_START("/fxml/health_start.fxml"), //

+ 41 - 0
src/main/java/org/cryptomator/ui/convertvault/ConvertVaultComponent.java

@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2017 Skymatic UG (haftungsbeschränkt).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the accompanying LICENSE file.
+ *******************************************************************************/
+package org.cryptomator.ui.convertvault;
+
+import dagger.BindsInstance;
+import dagger.Lazy;
+import dagger.Subcomponent;
+import org.cryptomator.common.vaults.Vault;
+import org.cryptomator.ui.common.FxmlFile;
+import org.cryptomator.ui.common.FxmlScene;
+
+import javax.inject.Named;
+import javafx.scene.Scene;
+import javafx.stage.Stage;
+
+@ConvertVaultScoped
+@Subcomponent(modules = {ConvertVaultModule.class})
+public interface ConvertVaultComponent {
+
+	@ConvertVaultWindow
+	Stage window();
+
+	@FxmlScene(FxmlFile.CONVERTVAULT_HUBTOLOCAL)
+	Lazy<Scene> hubToLocalScene();
+
+	default void showHubToLocalWindow() {
+		Stage stage = window();
+		stage.setScene(hubToLocalScene().get());
+		stage.sizeToScene();
+		stage.show();
+	}
+
+	@Subcomponent.Factory
+	interface Factory {
+
+		ConvertVaultComponent create(@BindsInstance @ConvertVaultWindow Vault vault, @BindsInstance @Named("convertVaultOwner") Stage owner);
+	}
+}

+ 93 - 0
src/main/java/org/cryptomator/ui/convertvault/ConvertVaultModule.java

@@ -0,0 +1,93 @@
+package org.cryptomator.ui.convertvault;
+
+import dagger.Binds;
+import dagger.Module;
+import dagger.Provides;
+import dagger.multibindings.IntoMap;
+import org.cryptomator.common.vaults.Vault;
+import org.cryptomator.cryptofs.VaultConfig;
+import org.cryptomator.ui.common.DefaultSceneFactory;
+import org.cryptomator.ui.common.FxController;
+import org.cryptomator.ui.common.FxControllerKey;
+import org.cryptomator.ui.common.FxmlFile;
+import org.cryptomator.ui.common.FxmlLoaderFactory;
+import org.cryptomator.ui.common.FxmlScene;
+import org.cryptomator.ui.common.StageFactory;
+import org.cryptomator.ui.quit.QuitController;
+import org.cryptomator.ui.quit.QuitForcedController;
+import org.cryptomator.ui.recoverykey.RecoveryKeyFactory;
+import org.cryptomator.ui.recoverykey.RecoveryKeyValidateController;
+
+import javax.inject.Named;
+import javax.inject.Provider;
+import javafx.beans.property.SimpleStringProperty;
+import javafx.beans.property.StringProperty;
+import javafx.scene.Scene;
+import javafx.stage.Modality;
+import javafx.stage.Stage;
+import java.io.IOException;
+import java.util.Map;
+import java.util.ResourceBundle;
+
+@Module
+abstract class ConvertVaultModule {
+
+	//TODO: if this fails, we cannot display an error
+	@Provides
+	@ConvertVaultWindow
+	@ConvertVaultScoped
+	static VaultConfig.UnverifiedVaultConfig vaultConfig(@ConvertVaultWindow Vault vault) {
+		try {
+			return vault.getVaultConfigCache().get();
+		} catch (IOException e) {
+			return null;
+		}
+	}
+
+	@Provides
+	@ConvertVaultWindow
+	@ConvertVaultScoped
+	static StringProperty provideRecoveryKeyProperty() {
+		return new SimpleStringProperty();
+	}
+
+	@Provides
+	@ConvertVaultWindow
+	@ConvertVaultScoped
+	static FxmlLoaderFactory provideFxmlLoaderFactory(Map<Class<? extends FxController>, Provider<FxController>> factories, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle) {
+		return new FxmlLoaderFactory(factories, sceneFactory, resourceBundle);
+	}
+
+	@Provides
+	@ConvertVaultWindow
+	@ConvertVaultScoped
+	static Stage provideStage(StageFactory factory, @Named("convertVaultOwner") Stage owner, ResourceBundle resourceBundle) {
+		Stage stage = factory.create();
+		stage.setResizable(false);
+		stage.initModality(Modality.WINDOW_MODAL);
+		stage.initOwner(owner);
+		return stage;
+	}
+
+	@Provides
+	@FxmlScene(FxmlFile.CONVERTVAULT_HUBTOLOCAL)
+	@ConvertVaultScoped
+	static Scene provideHubToLocalScene(@ConvertVaultWindow FxmlLoaderFactory fxmlLoaders) {
+		return fxmlLoaders.createScene(FxmlFile.CONVERTVAULT_HUBTOLOCAL);
+	}
+
+	// ------------------
+
+	@Binds
+	@IntoMap
+	@FxControllerKey(HubToLocalStartController.class)
+	abstract FxController bindHubToLocalStartController(HubToLocalStartController controller);
+
+	@Provides
+	@IntoMap
+	@FxControllerKey(RecoveryKeyValidateController.class)
+	static FxController bindRecoveryKeyValidateController(@ConvertVaultWindow Vault vault, @ConvertVaultWindow VaultConfig.UnverifiedVaultConfig vaultConfig, @ConvertVaultWindow StringProperty recoveryKey, RecoveryKeyFactory recoveryKeyFactory) {
+		return new RecoveryKeyValidateController(vault, vaultConfig, recoveryKey, recoveryKeyFactory);
+	}
+
+}

+ 13 - 0
src/main/java/org/cryptomator/ui/convertvault/ConvertVaultScoped.java

@@ -0,0 +1,13 @@
+package org.cryptomator.ui.convertvault;
+
+import javax.inject.Scope;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Scope
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@interface ConvertVaultScoped {
+
+}

+ 14 - 0
src/main/java/org/cryptomator/ui/convertvault/ConvertVaultWindow.java

@@ -0,0 +1,14 @@
+package org.cryptomator.ui.convertvault;
+
+import javax.inject.Qualifier;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+@Qualifier
+@Documented
+@Retention(RUNTIME)
+@interface ConvertVaultWindow {
+
+}

+ 41 - 0
src/main/java/org/cryptomator/ui/convertvault/HubToLocalStartController.java

@@ -0,0 +1,41 @@
+package org.cryptomator.ui.convertvault;
+
+import org.cryptomator.ui.common.FxController;
+import org.cryptomator.ui.recoverykey.RecoveryKeyValidateController;
+
+import javax.inject.Inject;
+import javafx.fxml.FXML;
+import javafx.stage.Stage;
+
+public class HubToLocalStartController implements FxController {
+
+	private final Stage window;
+
+	@FXML
+	RecoveryKeyValidateController recoveryKeyValidateController;
+
+	@Inject
+	public HubToLocalStartController(@ConvertVaultWindow Stage window) {
+		this.window = window;
+	}
+
+	@FXML
+	public void initialize() {
+	}
+
+	@FXML
+	public void close() {
+		window.close();
+	}
+
+	@FXML
+	public void convert() {
+		//window.setScene(resetPasswordScene.get());
+	}
+
+	/* Getter/Setter */
+
+	public RecoveryKeyValidateController getValidateController() {
+		return recoveryKeyValidateController;
+	}
+}

+ 8 - 1
src/main/java/org/cryptomator/ui/vaultoptions/HubOptionsController.java

@@ -2,6 +2,7 @@ package org.cryptomator.ui.vaultoptions;
 
 import org.cryptomator.common.vaults.Vault;
 import org.cryptomator.ui.common.FxController;
+import org.cryptomator.ui.convertvault.ConvertVaultComponent;
 
 import javax.inject.Inject;
 import javafx.stage.Stage;
@@ -10,11 +11,17 @@ public class HubOptionsController implements FxController {
 
 	private final Vault vault;
 	private final Stage window;
+	private final ConvertVaultComponent.Factory convertVaultFactory;
 
 
 	@Inject
-	public HubOptionsController(@VaultOptionsWindow Vault vault, @VaultOptionsWindow Stage window) {
+	public HubOptionsController(@VaultOptionsWindow Vault vault, @VaultOptionsWindow Stage window, ConvertVaultComponent.Factory convertVaultFactory) {
 		this.vault = vault;
 		this.window = window;
+		this.convertVaultFactory = convertVaultFactory;
+	}
+
+	public void startConversion() {
+		convertVaultFactory.create(vault,window).showHubToLocalWindow();
 	}
 }

+ 2 - 1
src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java

@@ -13,6 +13,7 @@ import org.cryptomator.ui.common.FxmlFile;
 import org.cryptomator.ui.common.FxmlLoaderFactory;
 import org.cryptomator.ui.common.FxmlScene;
 import org.cryptomator.ui.common.StageFactory;
+import org.cryptomator.ui.convertvault.ConvertVaultComponent;
 import org.cryptomator.ui.forgetpassword.ForgetPasswordComponent;
 import org.cryptomator.ui.fxapp.PrimaryStage;
 import org.cryptomator.ui.recoverykey.RecoveryKeyComponent;
@@ -26,7 +27,7 @@ import javafx.stage.Stage;
 import java.util.Map;
 import java.util.ResourceBundle;
 
-@Module(subcomponents = {ChangePasswordComponent.class, RecoveryKeyComponent.class, ForgetPasswordComponent.class})
+@Module(subcomponents = {ChangePasswordComponent.class, RecoveryKeyComponent.class, ForgetPasswordComponent.class, ConvertVaultComponent.class})
 abstract class VaultOptionsModule {
 
 	@Provides

+ 32 - 0
src/main/resources/fxml/convertvault_hubtolocal_start.fxml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.layout.*?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.ButtonBar?>
+<?import javafx.scene.control.Button?>
+<VBox xmlns:fx="http://javafx.com/fxml"
+	  xmlns="http://javafx.com/javafx"
+	  fx:controller="org.cryptomator.ui.convertvault.HubToLocalStartController"
+	  minWidth="350"
+	  minHeight="280"
+	  spacing="12"
+	  alignment="TOP_LEFT">
+	<padding>
+		<Insets topRightBottomLeft="24"/>
+	</padding>
+	<children>
+		<fx:include fx:id="recoveryKeyValidate" source="recoverykey_validate.fxml"/>
+
+		<Region VBox.vgrow="ALWAYS"/>
+
+		<VBox alignment="BOTTOM_CENTER" VBox.vgrow="ALWAYS">
+			<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" defaultButton="true" onAction="#convert" disable="${!controller.validateController.recoveryKeyCorrect}"/>
+				</buttons>
+			</ButtonBar>
+		</VBox>
+	</children>
+</VBox>

+ 6 - 2
src/main/resources/fxml/vault_options_hub.fxml

@@ -3,8 +3,6 @@
 <?import org.cryptomator.ui.controls.FontAwesome5IconView?>
 <?import javafx.geometry.Insets?>
 <?import javafx.scene.control.Button?>
-<?import javafx.scene.control.Label?>
-<?import javafx.scene.layout.Region?>
 <?import javafx.scene.layout.VBox?>
 <VBox xmlns:fx="http://javafx.com/fxml"
 	  xmlns="http://javafx.com/javafx"
@@ -14,4 +12,10 @@
 	<padding>
 		<Insets topRightBottomLeft="12"/>
 	</padding>
+
+	<Button fx:id="convertToLocalButton" text="TODO Convert" onAction="#startConversion">
+		<graphic>
+			<FontAwesome5IconView glyph="ANCHOR"/>
+		</graphic>
+	</Button>
 </VBox>