Просмотр исходного кода

Refactor reveal() methods:
* new class HostServiceRevealer implemeting the Volume.Revealer-Interface
* this class is injected in vault service and always used for revealing
* removed Revealer parameter from several reveal methods

Armin Schrenk 4 лет назад
Родитель
Сommit
7cd5c66836

+ 24 - 0
main/ui/src/main/java/org/cryptomator/ui/common/HostServiceRevealer.java

@@ -0,0 +1,24 @@
+package org.cryptomator.ui.common;
+
+import org.cryptomator.common.vaults.Volume;
+import org.cryptomator.ui.launcher.FxApplicationStarter;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+import java.nio.file.Path;
+
+@Singleton
+public class HostServiceRevealer implements Volume.Revealer {
+
+	private final FxApplicationStarter fxApplicationStarter;
+
+	@Inject
+	public HostServiceRevealer(FxApplicationStarter fxApplicationStarter) {
+		this.fxApplicationStarter = fxApplicationStarter;
+	}
+
+	@Override
+	public void reveal(Path p) throws Volume.VolumeException {
+		fxApplicationStarter.get().thenAccept(app -> app.getHostServices().showDocument(p.toUri().toString()));
+	}
+}

+ 7 - 5
main/ui/src/main/java/org/cryptomator/ui/common/VaultService.java

@@ -23,14 +23,16 @@ public class VaultService {
 	private static final Logger LOG = LoggerFactory.getLogger(VaultService.class);
 
 	private final ExecutorService executorService;
+	private final HostServiceRevealer vaultRevealer;
 
 	@Inject
-	public VaultService(ExecutorService executorService) {
+	public VaultService(ExecutorService executorService, HostServiceRevealer vaultRevealer) {
 		this.executorService = executorService;
+		this.vaultRevealer = vaultRevealer;
 	}
 
-	public void reveal(Vault vault, Volume.Revealer vaultRevealCmd) {
-		executorService.execute(createRevealTask(vault, vaultRevealCmd));
+	public void reveal(Vault vault) {
+		executorService.execute(createRevealTask(vault));
 	}
 
 	/**
@@ -38,8 +40,8 @@ public class VaultService {
 	 *
 	 * @param vault The vault to reveal
 	 */
-	public Task<Vault> createRevealTask(Vault vault, Volume.Revealer vaultRevealCmd) {
-		Task<Vault> task = new RevealVaultTask(vault, vaultRevealCmd);
+	public Task<Vault> createRevealTask(Vault vault) {
+		Task<Vault> task = new RevealVaultTask(vault, vaultRevealer);
 		task.setOnSucceeded(evt -> LOG.info("Revealed {}", vault.getDisplayName()));
 		task.setOnFailed(evt -> LOG.error("Failed to reveal " + vault.getDisplayName(), evt.getSource().getException()));
 		return task;

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

@@ -42,7 +42,7 @@ public class VaultDetailUnlockedController implements FxController {
 
 	@FXML
 	public void revealAccessLocation() {
-		vaultService.reveal(vault.get(), p -> application.getHostServices().showDocument(p.toUri().toString()));
+		vaultService.reveal(vault.get());
 	}
 
 	@FXML

+ 1 - 3
main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayMenuController.java

@@ -121,9 +121,7 @@ class TrayMenuController {
 	}
 
 	private void revealVault(Vault vault) {
-		showMainAppAndThen(app -> //
-				app.getVaultService().reveal(vault, p -> app.getHostServices().showDocument(p.toUri().toString())) //
-		);
+		showMainAppAndThen(app -> app.getVaultService().reveal(vault));
 	}
 
 	void showMainWindow(@SuppressWarnings("unused") ActionEvent actionEvent) {

+ 2 - 5
main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockSuccessController.java

@@ -4,7 +4,6 @@ import org.cryptomator.common.settings.WhenUnlocked;
 import org.cryptomator.common.vaults.Vault;
 import org.cryptomator.ui.common.FxController;
 import org.cryptomator.ui.common.VaultService;
-import org.cryptomator.ui.fxapp.FxApplication;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -30,19 +29,17 @@ public class UnlockSuccessController implements FxController {
 	private final Vault vault;
 	private final ExecutorService executor;
 	private final VaultService vaultService;
-	private final FxApplication application;
 	private final ObjectProperty<ContentDisplay> revealButtonState;
 	private final BooleanProperty revealButtonDisabled;
 
 	public CheckBox rememberChoiceCheckbox;
 
 	@Inject
-	public UnlockSuccessController(@UnlockWindow Stage window, @UnlockWindow Vault vault, ExecutorService executor, VaultService vaultService, FxApplication application) {
+	public UnlockSuccessController(@UnlockWindow Stage window, @UnlockWindow Vault vault, ExecutorService executor, VaultService vaultService) {
 		this.window = window;
 		this.vault = vault;
 		this.executor = executor;
 		this.vaultService = vaultService;
-		this.application = application;
 		this.revealButtonState = new SimpleObjectProperty<>(ContentDisplay.TEXT_ONLY);
 		this.revealButtonDisabled = new SimpleBooleanProperty();
 	}
@@ -62,7 +59,7 @@ public class UnlockSuccessController implements FxController {
 		revealButtonState.set(ContentDisplay.LEFT);
 		revealButtonDisabled.set(true);
 
-		Task<Vault> revealTask = vaultService.createRevealTask(vault, p -> application.getHostServices().showDocument(p.toUri().toString()));
+		Task<Vault> revealTask = vaultService.createRevealTask(vault);
 		revealTask.setOnSucceeded(evt -> {
 			revealButtonState.set(ContentDisplay.TEXT_ONLY);
 			revealButtonDisabled.set(false);

Разница между файлами не показана из-за своего большого размера
+ 2 - 5
main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockWorkflow.java