Skip to content

Commit 1329902

Browse files
woodserniyid
andcommitted
add transaction fee column to funds > transactions
Co-authored-by: niyid <neeyeed@gmail.com>
1 parent 6c640dd commit 1329902

File tree

3 files changed

+48
-7
lines changed

3 files changed

+48
-7
lines changed

desktop/src/main/java/haveno/desktop/main/funds/transactions/TransactionsListItem.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ class TransactionsListItem {
5454
private boolean received;
5555
private boolean detailsAvailable;
5656
private BigInteger amount = BigInteger.ZERO;
57+
private BigInteger txFee = BigInteger.ZERO;
5758
private String memo = "";
5859
private long confirmations = 0;
5960
@Getter
@@ -107,6 +108,7 @@ private LazyFields lazy() {
107108
amount = valueSentFromMe.multiply(BigInteger.valueOf(-1));
108109
received = false;
109110
direction = Res.get("funds.tx.direction.sentTo");
111+
txFee = tx.getFee().multiply(BigInteger.valueOf(-1));
110112
}
111113

112114
if (optionalTradable.isPresent()) {
@@ -201,6 +203,14 @@ public BigInteger getAmount() {
201203
return amount;
202204
}
203205

206+
public BigInteger getTxFee() {
207+
return txFee;
208+
}
209+
210+
public String getTxFeeStr() {
211+
return txFee.equals(BigInteger.ZERO) ? "" : HavenoUtils.formatXmr(txFee);
212+
}
213+
204214
public String getAddressString() {
205215
return addressString;
206216
}

desktop/src/main/java/haveno/desktop/main/funds/transactions/TransactionsView.fxml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@
3636
<TableColumn fx:id="detailsColumn" minWidth="220" maxWidth="220"/>
3737
<TableColumn fx:id="addressColumn" minWidth="260"/>
3838
<TableColumn fx:id="transactionColumn" minWidth="180"/>
39-
<TableColumn fx:id="amountColumn" minWidth="130" maxWidth="130"/>
39+
<TableColumn fx:id="amountColumn" minWidth="110" maxWidth="110"/>
40+
<TableColumn fx:id="txFeeColumn" minWidth="110" maxWidth="110"/>
4041
<TableColumn fx:id="memoColumn" minWidth="40"/>
4142
<TableColumn fx:id="confidenceColumn" minWidth="120" maxWidth="130"/>
4243
<TableColumn fx:id="revertTxColumn" sortable="false" minWidth="110" maxWidth="110" visible="false"/>

desktop/src/main/java/haveno/desktop/main/funds/transactions/TransactionsView.java

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public class TransactionsView extends ActivatableView<VBox, Void> {
7070
@FXML
7171
TableView<TransactionsListItem> tableView;
7272
@FXML
73-
TableColumn<TransactionsListItem, TransactionsListItem> dateColumn, detailsColumn, addressColumn, transactionColumn, amountColumn, memoColumn, confidenceColumn, revertTxColumn;
73+
TableColumn<TransactionsListItem, TransactionsListItem> dateColumn, detailsColumn, addressColumn, transactionColumn, amountColumn, txFeeColumn, memoColumn, confidenceColumn, revertTxColumn;
7474
@FXML
7575
Label numItems;
7676
@FXML
@@ -89,7 +89,7 @@ public class TransactionsView extends ActivatableView<VBox, Void> {
8989
private EventHandler<KeyEvent> keyEventEventHandler;
9090
private Scene scene;
9191

92-
private TransactionsUpdater transactionsUpdater = new TransactionsUpdater();
92+
private final TransactionsUpdater transactionsUpdater = new TransactionsUpdater();
9393

9494
private class TransactionsUpdater extends MoneroWalletListener {
9595
@Override
@@ -129,18 +129,20 @@ public void initialize() {
129129
addressColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.address")));
130130
transactionColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.txId", Res.getBaseCurrencyCode())));
131131
amountColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.amountWithCur", Res.getBaseCurrencyCode())));
132+
txFeeColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.txFee", Res.getBaseCurrencyCode())));
132133
memoColumn.setGraphic(new AutoTooltipLabel(Res.get("funds.tx.memo")));
133134
confidenceColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.confirmations", Res.getBaseCurrencyCode())));
134135
revertTxColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.revert", Res.getBaseCurrencyCode())));
135136

136-
tableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
137+
tableView.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY_FLEX_LAST_COLUMN);
137138
tableView.setPlaceholder(new AutoTooltipLabel(Res.get("funds.tx.noTxAvailable")));
138139

139140
setDateColumnCellFactory();
140141
setDetailsColumnCellFactory();
141142
setAddressColumnCellFactory();
142143
setTransactionColumnCellFactory();
143144
setAmountColumnCellFactory();
145+
setTxFeeColumnCellFactory();
144146
setMemoColumnCellFactory();
145147
setConfidenceColumnCellFactory();
146148
setRevertTxColumnCellFactory();
@@ -156,7 +158,7 @@ public void initialize() {
156158
addressColumn.setComparator(Comparator.comparing(item -> item.getDirection() + item.getAddressString()));
157159
transactionColumn.setComparator(Comparator.comparing(TransactionsListItem::getTxId));
158160
amountColumn.setComparator(Comparator.comparing(TransactionsListItem::getAmount));
159-
confidenceColumn.setComparator(Comparator.comparingLong(item -> item.getNumConfirmations()));
161+
confidenceColumn.setComparator(Comparator.comparingLong(TransactionsListItem::getNumConfirmations));
160162
memoColumn.setComparator(Comparator.comparing(TransactionsListItem::getMemo));
161163

162164
dateColumn.setSortType(TableColumn.SortType.DESCENDING);
@@ -216,8 +218,9 @@ protected void activate() {
216218
columns[2] = item.getDirection() + " " + item.getAddressString();
217219
columns[3] = item.getTxId();
218220
columns[4] = item.getAmountStr();
219-
columns[5] = item.getMemo() == null ? "" : item.getMemo();
220-
columns[6] = String.valueOf(item.getNumConfirmations());
221+
columns[5] = item.getTxFeeStr();
222+
columns[6] = item.getMemo() == null ? "" : item.getMemo();
223+
columns[7] = String.valueOf(item.getNumConfirmations());
221224
return columns;
222225
};
223226

@@ -414,6 +417,33 @@ public void updateItem(final TransactionsListItem item, boolean empty) {
414417
});
415418
}
416419

420+
421+
private void setTxFeeColumnCellFactory() {
422+
txFeeColumn.setCellValueFactory((addressListItem) ->
423+
new ReadOnlyObjectWrapper<>(addressListItem.getValue()));
424+
txFeeColumn.setCellFactory(
425+
new Callback<>() {
426+
427+
@Override
428+
public TableCell<TransactionsListItem, TransactionsListItem> call(TableColumn<TransactionsListItem,
429+
TransactionsListItem> column) {
430+
return new TableCell<>() {
431+
432+
@Override
433+
public void updateItem(final TransactionsListItem item, boolean empty) {
434+
super.updateItem(item, empty);
435+
436+
if (item != null && !empty) {
437+
setGraphic(new AutoTooltipLabel(item.getTxFeeStr()));
438+
} else {
439+
setGraphic(null);
440+
}
441+
}
442+
};
443+
}
444+
});
445+
}
446+
417447
private void setMemoColumnCellFactory() {
418448
memoColumn.setCellValueFactory((addressListItem) ->
419449
new ReadOnlyObjectWrapper<>(addressListItem.getValue()));

0 commit comments

Comments
 (0)