add context menu item to copy transaction hex

This commit is contained in:
Craig Raw 2021-06-22 11:47:56 +02:00
parent 4d6609990c
commit 6f3d4e224e
2 changed files with 22 additions and 2 deletions

View file

@ -585,7 +585,7 @@ public class AppServices {
String[] lines = content.split("\r\n|\r|\n"); String[] lines = content.split("\r\n|\r|\n");
if(lines.length > 3) { if(lines.length > 3) {
alert.getDialogPane().setPrefHeight(180 + lines.length * 20); alert.getDialogPane().setPrefHeight(200 + lines.length * 20);
} }
moveToActiveWindowScreen(alert); moveToActiveWindowScreen(alert);

View file

@ -4,7 +4,11 @@ import com.sparrowwallet.drongo.Utils;
import com.sparrowwallet.drongo.protocol.*; import com.sparrowwallet.drongo.protocol.*;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.geometry.Point2D; import javafx.geometry.Point2D;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.control.MenuItem;
import javafx.scene.input.Clipboard;
import javafx.scene.input.ClipboardContent;
import javafx.stage.Popup; import javafx.stage.Popup;
import org.fxmisc.richtext.CodeArea; import org.fxmisc.richtext.CodeArea;
import org.fxmisc.richtext.event.MouseOverTextEvent; import org.fxmisc.richtext.event.MouseOverTextEvent;
@ -33,7 +37,8 @@ public class TransactionHexArea extends CodeArea {
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream();
transaction.bitcoinSerializeToStream(baos); transaction.bitcoinSerializeToStream(baos);
String hex = Utils.bytesToHex(baos.toByteArray()); String fullHex = Utils.bytesToHex(baos.toByteArray());
String hex = fullHex;
if(hex.length() > TRUNCATE_AT) { if(hex.length() > TRUNCATE_AT) {
hex = hex.substring(0, TRUNCATE_AT); hex = hex.substring(0, TRUNCATE_AT);
hex += "[truncated]"; hex += "[truncated]";
@ -42,6 +47,7 @@ public class TransactionHexArea extends CodeArea {
clear(); clear();
appendText(hex); appendText(hex);
previousSegmentList = new ArrayList<>(); previousSegmentList = new ArrayList<>();
setContextMenu(new TransactionHexContextMenu(fullHex));
} catch (IOException e) { } catch (IOException e) {
throw new IllegalStateException("Can't happen"); throw new IllegalStateException("Can't happen");
} }
@ -266,4 +272,18 @@ public class TransactionHexArea extends CodeArea {
return Objects.hash(start, length, style); return Objects.hash(start, length, style);
} }
} }
private static class TransactionHexContextMenu extends ContextMenu {
public TransactionHexContextMenu(String hex) {
MenuItem copy = new MenuItem("Copy All");
copy.setOnAction(AE -> {
hide();
ClipboardContent content = new ClipboardContent();
content.putString(hex);
Clipboard.getSystemClipboard().setContent(content);
});
getItems().add(copy);
}
}
} }