diff --git a/main/frontend-api/src/main/java/org/cryptomator/frontend/Frontend.java b/main/frontend-api/src/main/java/org/cryptomator/frontend/Frontend.java index 901257700..ed0a44e21 100644 --- a/main/frontend-api/src/main/java/org/cryptomator/frontend/Frontend.java +++ b/main/frontend-api/src/main/java/org/cryptomator/frontend/Frontend.java @@ -23,4 +23,7 @@ public interface Frontend extends AutoCloseable { void reveal() throws CommandFailedException; + // For now let's assume every single frontend knows what a WebDAV url is ;-) + String getWebDavUrl(); + } diff --git a/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/WebDavFrontend.java b/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/WebDavFrontend.java index 8e7c35d77..87ca8abee 100644 --- a/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/WebDavFrontend.java +++ b/main/frontend-webdav/src/main/java/org/cryptomator/frontend/webdav/WebDavFrontend.java @@ -62,4 +62,9 @@ class WebDavFrontend implements Frontend { } } + @Override + public String getWebDavUrl() { + return uri.toString(); + } + } \ No newline at end of file diff --git a/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockedController.java b/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockedController.java index 148d07567..36c9f8d59 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockedController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockedController.java @@ -39,6 +39,8 @@ import javafx.scene.chart.XYChart.Series; import javafx.scene.control.ContextMenu; import javafx.scene.control.Label; import javafx.scene.control.ToggleButton; +import javafx.scene.input.Clipboard; +import javafx.scene.input.ClipboardContent; import javafx.stage.PopupWindow.AnchorLocation; import javafx.stage.Stage; import javafx.util.Duration; @@ -155,6 +157,13 @@ public class UnlockedController extends AbstractFXMLViewController { }); } + @FXML + private void didClickCopyUrl(ActionEvent event) { + ClipboardContent clipboardContent = new ClipboardContent(); + clipboardContent.putUrl(vault.get().getWebDavUrl()); + Clipboard.getSystemClipboard().setContent(clipboardContent); + } + // **************************************** // MAC Auth Warnings // **************************************** diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/Vault.java b/main/ui/src/main/java/org/cryptomator/ui/model/Vault.java index 4b37246d2..c83a6bd56 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/model/Vault.java +++ b/main/ui/src/main/java/org/cryptomator/ui/model/Vault.java @@ -176,6 +176,10 @@ public class Vault implements Serializable, CryptoFileSystemDelegate { // Getter/Setter // *******************************************************************************/ + public String getWebDavUrl() { + return filesystemFrontend.get().map(Frontend::getWebDavUrl).orElseThrow(IllegalStateException::new); + } + public Path getPath() { return path; } diff --git a/main/ui/src/main/resources/fxml/unlocked.fxml b/main/ui/src/main/resources/fxml/unlocked.fxml index a4ee1f0aa..5869c7971 100644 --- a/main/ui/src/main/resources/fxml/unlocked.fxml +++ b/main/ui/src/main/resources/fxml/unlocked.fxml @@ -30,7 +30,7 @@ - +