From 97b4ed48db261791ff6f336d45214ecff6a4077a Mon Sep 17 00:00:00 2001 From: wazint Date: Fri, 24 Feb 2023 16:55:40 +0200 Subject: [PATCH] add context menu to copy amount values from amount cells --- .../sparrow/control/CoinCell.java | 31 +++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/sparrowwallet/sparrow/control/CoinCell.java b/src/main/java/com/sparrowwallet/sparrow/control/CoinCell.java index 1d681a53..35f49c2e 100644 --- a/src/main/java/com/sparrowwallet/sparrow/control/CoinCell.java +++ b/src/main/java/com/sparrowwallet/sparrow/control/CoinCell.java @@ -4,15 +4,16 @@ import com.sparrowwallet.drongo.BitcoinUnit; import com.sparrowwallet.drongo.protocol.Transaction; import com.sparrowwallet.drongo.wallet.BlockTransactionHash; import com.sparrowwallet.sparrow.UnitFormat; +import com.sparrowwallet.sparrow.io.Config; import com.sparrowwallet.sparrow.wallet.Entry; import com.sparrowwallet.sparrow.wallet.HashIndexEntry; import com.sparrowwallet.sparrow.wallet.TransactionEntry; import com.sparrowwallet.sparrow.wallet.UtxoEntry; import javafx.beans.property.IntegerProperty; import javafx.beans.property.SimpleIntegerProperty; -import javafx.scene.control.ContentDisplay; -import javafx.scene.control.Tooltip; -import javafx.scene.control.TreeTableCell; +import javafx.scene.control.*; +import javafx.scene.input.Clipboard; +import javafx.scene.input.ClipboardContent; import javafx.scene.layout.Region; import javafx.util.Duration; import org.controlsfx.tools.Platform; @@ -62,6 +63,7 @@ class CoinCell extends TreeTableCell implements ConfirmationsList setText(satsValue); } setTooltip(tooltip); + setContextMenu(new CoinContextMenu(amount)); if(entry instanceof TransactionEntry transactionEntry) { tooltip.showConfirmations(transactionEntry.confirmationsProperty()); @@ -155,4 +157,27 @@ class CoinCell extends TreeTableCell implements ConfirmationsList } } } + + private static class CoinContextMenu extends ContextMenu { + public CoinContextMenu(Number amount) { + MenuItem copySatsValue = new MenuItem("Copy Value in sats"); + copySatsValue.setOnAction(AE -> { + hide(); + ClipboardContent content = new ClipboardContent(); + content.putString(amount.toString()); + Clipboard.getSystemClipboard().setContent(content); + }); + + MenuItem copyBtcValue = new MenuItem("Copy Value in BTC"); + copyBtcValue.setOnAction(AE -> { + hide(); + ClipboardContent content = new ClipboardContent(); + UnitFormat format = Config.get().getUnitFormat() == null ? UnitFormat.DOT : Config.get().getUnitFormat(); + content.putString(format.formatBtcValue(amount.longValue())); + Clipboard.getSystemClipboard().setContent(content); + }); + + getItems().addAll(copySatsValue, copyBtcValue); + } + } }