Browse Source

Add context menu to copy single result info

Armin Schrenk 2 years ago
parent
commit
9cec45dc1f

+ 12 - 0
src/main/java/org/cryptomator/ui/health/CheckDetailController.java

@@ -20,6 +20,8 @@ import javafx.collections.FXCollections;
 import javafx.fxml.FXML;
 import javafx.scene.control.ChoiceBox;
 import javafx.scene.control.ListView;
+import javafx.scene.input.Clipboard;
+import javafx.scene.input.ClipboardContent;
 import javafx.util.StringConverter;
 import java.util.Arrays;
 import java.util.function.Function;
@@ -136,6 +138,16 @@ public class CheckDetailController implements FxController {
 	}
 
 
+	@FXML
+	public void copyResultDetails() {
+		var result = resultsListView.getSelectionModel().getSelectedItem();
+		if (result != null) {
+			ClipboardContent clipboardContent = new ClipboardContent();
+			clipboardContent.putString(result.diagnosis().toString());
+			Clipboard.getSystemClipboard().setContent(clipboardContent);
+		}
+	}
+
 	/* Getter/Setter */
 
 	public String getCheckName() {

+ 11 - 1
src/main/resources/fxml/health_check_details.fxml

@@ -9,6 +9,8 @@
 <?import org.cryptomator.ui.controls.FontAwesome5IconView?>
 <?import javafx.scene.layout.Region?>
 <?import javafx.scene.control.ChoiceBox?>
+<?import javafx.scene.control.ContextMenu?>
+<?import javafx.scene.control.MenuItem?>
 <VBox xmlns:fx="http://javafx.com/fxml"
 	  xmlns="http://javafx.com/javafx"
 	  fx:controller="org.cryptomator.ui.health.CheckDetailController"
@@ -51,6 +53,14 @@
 			<Label text="Fix state" labelFor="${fixStateChoiceBox}"/>
 			<ChoiceBox fx:id="fixStateChoiceBox" />
 		</HBox>
-		<ListView fx:id="resultsListView" VBox.vgrow="ALWAYS" visible="${!controller.checkSkipped}" fixedCellSize="25"/>
+		<ListView fx:id="resultsListView" VBox.vgrow="ALWAYS" visible="${!controller.checkSkipped}" fixedCellSize="25">
+			<contextMenu>
+				<ContextMenu>
+					<items>
+						<MenuItem text="%generic.button.copy" onAction="#copyResultDetails"/>
+					</items>
+				</ContextMenu>
+			</contextMenu>
+		</ListView>
 	</VBox>
 </VBox>