Browse Source

reveal vault access and storage location from vault detail view

Sebastian Stenzel 5 years ago
parent
commit
b22ddaf13e

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

@@ -4,8 +4,11 @@ import javafx.beans.binding.Binding;
 import javafx.beans.binding.BooleanBinding;
 import javafx.beans.property.ObjectProperty;
 import javafx.beans.property.ReadOnlyObjectProperty;
+import javafx.event.ActionEvent;
 import javafx.fxml.FXML;
+import javafx.scene.input.MouseEvent;
 import org.cryptomator.common.vaults.Vault;
+import org.cryptomator.common.vaults.Volume;
 import org.cryptomator.ui.changepassword.ChangePasswordComponent;
 import org.cryptomator.ui.common.FxController;
 import org.cryptomator.ui.common.Tasks;
@@ -85,6 +88,20 @@ public class VaultDetailController implements FxController {
 		changePasswordWindow.vault(vault.get()).build().showChangePasswordWindow();
 	}
 
+	@FXML
+	public void revealStorageLocation(ActionEvent actionEvent) {
+		application.getHostServices().showDocument(vault.get().getPath().toUri().toString());
+	}
+
+	@FXML
+	public void revealAccessLocation(MouseEvent mouseEvent) {
+		try {
+			vault.get().reveal();
+		} catch (Volume.VolumeException e) {
+			LOG.error("Failed to reveal vault.", e);
+		}
+	}
+
 	/* Observable Properties */
 
 	public ReadOnlyObjectProperty<Vault> vaultProperty() {
@@ -110,5 +127,4 @@ public class VaultDetailController implements FxController {
 	public boolean isAnyVaultSelected() {
 		return anyVaultSelected.get();
 	}
-
 }

+ 4 - 3
main/ui/src/main/resources/fxml/vault_detail.fxml

@@ -2,6 +2,7 @@
 
 <?import javafx.geometry.Insets?>
 <?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Hyperlink?>
 <?import javafx.scene.control.Label?>
 <?import javafx.scene.control.Tooltip?>
 <?import javafx.scene.layout.HBox?>
@@ -44,16 +45,16 @@
 							<Tooltip text="${controller.vault.displayableName}"/>
 						</tooltip>
 					</Label>
-					<Label styleClass="vault-path" text="${controller.vault.displayablePath}" textOverrun="CENTER_ELLIPSIS">
+					<Hyperlink styleClass="vault-path" text="${controller.vault.displayablePath}" textOverrun="CENTER_ELLIPSIS" onAction="#revealStorageLocation">
 						<tooltip>
 							<Tooltip text="${controller.vault.displayablePath}"/>
 						</tooltip>
-					</Label>
+					</Hyperlink>
 				</VBox>
 			</children>
 		</HBox>
 		<VBox visible="${controller.vault.unlocked}" managed="${controller.vault.unlocked}">
-			<HBox styleClass="button-group,first" alignment="CENTER">
+			<HBox styleClass="button-group,first" alignment="CENTER" onMouseClicked="#revealAccessLocation">
 				<VBox styleClass="button-group-labels">
 					<Label styleClass="button-group-heading" text="%vaultDetail.accessLocation"/>
 					<Label text="${controller.vault.customMountPath}"/>