From 7f131d2ed4ba084380c83eed5b5e0079b7c2bc44 Mon Sep 17 00:00:00 2001 From: georgweiss Date: Fri, 11 Oct 2024 14:05:26 +0200 Subject: [PATCH] Add save&restore context menu item to copy resource URL to clipboard --- .../applications/saveandrestore/Messages.java | 1 + .../saveandrestore/ui/ContextMenuBase.java | 6 ++++++ .../ui/ContextMenuCompositeSnapshot.java | 1 + .../saveandrestore/ui/ContextMenuConfiguration.java | 1 + .../saveandrestore/ui/ContextMenuSnapshot.java | 1 + .../saveandrestore/ui/SaveAndRestoreController.java | 13 +++++++++++++ .../applications/saveandrestore/messages.properties | 3 ++- 7 files changed, 25 insertions(+), 1 deletion(-) diff --git a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/Messages.java b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/Messages.java index 2199353ba..631b374cd 100644 --- a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/Messages.java +++ b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/Messages.java @@ -58,6 +58,7 @@ public class Messages { public static String copyOrMoveNotAllowedBody; public static String copyOrMoveNotAllowedHeader; public static String copyUniqueIdToClipboard; + public static String copyUniqueIdAsResourceToClipboard; public static String createNewTagDialogHeader; public static String createNewTagDialogTitle; diff --git a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/ContextMenuBase.java b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/ContextMenuBase.java index 5a1121e5e..76c13af48 100644 --- a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/ContextMenuBase.java +++ b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/ContextMenuBase.java @@ -38,6 +38,7 @@ public abstract class ContextMenuBase extends ContextMenu { protected MenuItem deleteNodesMenuItem; protected MenuItem copyUniqueIdToClipboardMenuItem; + protected MenuItem copyUniqueIdAsResourceUrlToClipboardMenuItem; protected MenuItem loginMenuItem; private static final String loginAppName = "credentials_management"; @@ -88,6 +89,11 @@ public ContextMenuBase(SaveAndRestoreController saveAndRestoreController) { copyUniqueIdToClipboardMenuItem.setOnAction(ae -> saveAndRestoreController.copyUniqueNodeIdToClipboard()); copyUniqueIdToClipboardMenuItem.disableProperty().bind(multipleNodesSelectedProperty); + copyUniqueIdAsResourceUrlToClipboardMenuItem = + new MenuItem(Messages.copyUniqueIdAsResourceToClipboard, ImageCache.getImageView(ImageCache.class, "/icons/copy.png")); + copyUniqueIdAsResourceUrlToClipboardMenuItem.setOnAction(ae -> saveAndRestoreController.copyUniqueNodeIdAsResourceUrlToClipboard()); + copyUniqueIdAsResourceUrlToClipboardMenuItem.disableProperty().bind(multipleNodesSelectedProperty); + loginMenuItem = new MenuItem(Messages.login, ImageCache.getImageView(ImageCache.class, "/icons/credentials.png")); loginMenuItem.setOnAction(ae -> { ApplicationService.createInstance(loginAppName); diff --git a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/ContextMenuCompositeSnapshot.java b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/ContextMenuCompositeSnapshot.java index d824a948b..766ff1c5d 100644 --- a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/ContextMenuCompositeSnapshot.java +++ b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/ContextMenuCompositeSnapshot.java @@ -76,6 +76,7 @@ public ContextMenuCompositeSnapshot(SaveAndRestoreController saveAndRestoreContr copyMenuItem, deleteNodesMenuItem, copyUniqueIdToClipboardMenuItem, + copyUniqueIdAsResourceUrlToClipboardMenuItem, tagWithComment); } diff --git a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/ContextMenuConfiguration.java b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/ContextMenuConfiguration.java index 8ff727f58..77e12ff5d 100644 --- a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/ContextMenuConfiguration.java +++ b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/ContextMenuConfiguration.java @@ -77,6 +77,7 @@ public ContextMenuConfiguration(SaveAndRestoreController saveAndRestoreControlle pasteMenuItem, deleteNodesMenuItem, copyUniqueIdToClipboardMenuItem, + copyUniqueIdAsResourceUrlToClipboardMenuItem, exportConfigurationMenuItem, importSnapshotMenuItem); } diff --git a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/ContextMenuSnapshot.java b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/ContextMenuSnapshot.java index 324e05531..207e288ff 100644 --- a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/ContextMenuSnapshot.java +++ b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/ContextMenuSnapshot.java @@ -100,6 +100,7 @@ public ContextMenuSnapshot(SaveAndRestoreController saveAndRestoreController) { tagWithComment, copyMenuItem, copyUniqueIdToClipboardMenuItem, + copyUniqueIdAsResourceUrlToClipboardMenuItem, exportSnapshotMenuItem); } diff --git a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/SaveAndRestoreController.java b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/SaveAndRestoreController.java index 5b6c6fbfd..c3c5d51b4 100644 --- a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/SaveAndRestoreController.java +++ b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/SaveAndRestoreController.java @@ -709,6 +709,9 @@ protected void renameNode() { renameNode(node.getValue(), existingSiblingNodes); } + /** + * Puts the unique node id on the clipboard as text + */ protected void copyUniqueNodeIdToClipboard() { Node node = browserSelectionModel.getSelectedItem().getValue(); ClipboardContent content = new ClipboardContent(); @@ -716,6 +719,16 @@ protected void copyUniqueNodeIdToClipboard() { Clipboard.getSystemClipboard().setContent(content); } + /** + * Puts the unique node id as a resource URL on the clipboard as text + */ + protected void copyUniqueNodeIdAsResourceUrlToClipboard() { + Node node = browserSelectionModel.getSelectedItem().getValue(); + ClipboardContent content = new ClipboardContent(); + content.putString("file:/" + node.getUniqueId() + "?app=" + SaveAndRestoreApplication.NAME); + Clipboard.getSystemClipboard().setContent(content); + } + /** * Renames the selected node. A check is made to ensure that user cannot specify a name * that is the same as any of its sibling nodes if they are of the same {@link Node} type. diff --git a/app/save-and-restore/app/src/main/resources/org/phoebus/applications/saveandrestore/messages.properties b/app/save-and-restore/app/src/main/resources/org/phoebus/applications/saveandrestore/messages.properties index 4cd29329b..9eebbcd91 100644 --- a/app/save-and-restore/app/src/main/resources/org/phoebus/applications/saveandrestore/messages.properties +++ b/app/save-and-restore/app/src/main/resources/org/phoebus/applications/saveandrestore/messages.properties @@ -47,7 +47,8 @@ contextMenuTagAsGolden=Add Golden tag contextMenuTagsWithComment=Tags with comment copyOrMoveNotAllowedBody=Selection cannot be moved/copied to the specified target node. copyOrMoveNotAllowedHeader=Cannot move or copy selection. -copyUniqueIdToClipboard=Copy unique id to clipboard +copyUniqueIdToClipboard=Copy id to clipboard +copyUniqueIdAsResourceToClipboard=Copy id as resource URL to clipboard createdBy=Created By createCompositeSnapshotFailed=Failed to create composite snapshot createConfigurationFailed=Failed to create configuration