From 7a2e5036245aeb1da8c1bead76994574739436d3 Mon Sep 17 00:00:00 2001 From: Craig Raw Date: Sat, 28 Mar 2020 13:39:21 +0200 Subject: [PATCH] revise transaction pane --- .../sparrow/form/HeadersController.java | 98 ++++++------- .../com/craigraw/sparrow/form/headers.fxml | 129 +++++++++++------- .../com/craigraw/sparrow/general.css | 19 ++- .../com/craigraw/sparrow/transaction.fxml | 19 +-- 4 files changed, 157 insertions(+), 108 deletions(-) diff --git a/src/main/java/com/craigraw/sparrow/form/HeadersController.java b/src/main/java/com/craigraw/sparrow/form/HeadersController.java index abb18264..f16dd31b 100644 --- a/src/main/java/com/craigraw/sparrow/form/HeadersController.java +++ b/src/main/java/com/craigraw/sparrow/form/HeadersController.java @@ -8,6 +8,8 @@ import javafx.fxml.Initializable; import javafx.scene.control.*; import javafx.scene.layout.GridPane; import tornadofx.control.DateTimePicker; +import tornadofx.control.Field; +import tornadofx.control.Fieldset; import java.net.URL; import java.time.*; @@ -22,43 +24,46 @@ public class HeadersController implements Initializable, TransactionListener { private GridPane layout; @FXML - private TextField idField; + private TextField id; @FXML - private Spinner versionField; + private Spinner version; @FXML - private Label segwitField; + private TextField segwit; @FXML - private Label segwitVersionLabel; + private ToggleGroup locktimeType; @FXML - private Spinner segwitVersionField; + private ToggleButton locktimeBlockType; @FXML - private ToggleGroup locktimeTypeField; + private ToggleButton locktimeDateType; @FXML - private ToggleButton locktimeBlockTypeField; + private Fieldset locktimeFieldset; @FXML - private ToggleButton locktimeDateTypeField; + private Field locktimeBlockField; @FXML - private Spinner locktimeBlockField; + private Field locktimeDateField; @FXML - private DateTimePicker locktimeDateField; + private Spinner locktimeBlock; @FXML - private Label feeField; + private DateTimePicker locktimeDate; @FXML - private Label sizeField; + private TextField fee; @FXML - private Label virtualSizeField; + private TextField size; + + @FXML + private TextField virtualSize; @Override public void initialize(URL location, ResourceBundle resources) { @@ -71,38 +76,38 @@ public class HeadersController implements Initializable, TransactionListener { updateTxId(); - versionField.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(1, 2, (int)tx.getVersion())); - versionField.valueProperty().addListener((obs, oldValue, newValue) -> { + version.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(1, 2, (int)tx.getVersion())); + version.valueProperty().addListener((obs, oldValue, newValue) -> { tx.setVersion(newValue); EventManager.get().notify(tx); }); - segwitField.setText(tx.isSegwit() ? "Segwit" : "Legacy" ); + String type = "Legacy"; if(tx.isSegwit()) { - segwitVersionField.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(1, 2, tx.getSegwitVersion())); - segwitVersionField.valueProperty().addListener((obs, oldValue, newValue) -> { - tx.setSegwitVersion(newValue); - EventManager.get().notify(tx); - }); - } else { - layout.getChildren().removeAll(segwitVersionLabel, segwitVersionField); + type = "Segwit"; + if(tx.getSegwitVersion() == 2) { + type = "Taproot"; + } } + segwit.setText(type); - locktimeTypeField.selectedToggleProperty().addListener((ov, old_toggle, new_toggle) -> { - if(locktimeTypeField.getSelectedToggle() != null) { - String selection = locktimeTypeField.getSelectedToggle().getUserData().toString(); + locktimeType.selectedToggleProperty().addListener((ov, old_toggle, new_toggle) -> { + if(locktimeType.getSelectedToggle() != null) { + String selection = locktimeType.getSelectedToggle().getUserData().toString(); if(selection.equals("block")) { - locktimeBlockField.setVisible(true); - locktimeDateField.setVisible(false); - Integer block = locktimeBlockField.getValue(); + locktimeFieldset.getChildren().remove(locktimeDateField); + locktimeFieldset.getChildren().remove(locktimeBlockField); + locktimeFieldset.getChildren().add(locktimeBlockField); + Integer block = locktimeBlock.getValue(); if(block != null) { tx.setLockTime(block); EventManager.get().notify(tx); } } else { - locktimeBlockField.setVisible(false); - locktimeDateField.setVisible(true); - LocalDateTime date = locktimeDateField.getDateTimeValue(); + locktimeFieldset.getChildren().remove(locktimeBlockField); + locktimeFieldset.getChildren().remove(locktimeDateField); + locktimeFieldset.getChildren().add(locktimeDateField); + LocalDateTime date = locktimeDate.getDateTimeValue(); if(date != null) { tx.setLockTime(date.toEpochSecond(OffsetDateTime.now(ZoneId.systemDefault()).getOffset())); EventManager.get().notify(tx); @@ -112,42 +117,39 @@ public class HeadersController implements Initializable, TransactionListener { }); if(tx.getLockTime() < MAX_BLOCK_LOCKTIME) { - locktimeBlockField.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(0, (int)MAX_BLOCK_LOCKTIME-1, (int)tx.getLockTime())); - locktimeBlockField.setVisible(true); - locktimeDateField.setVisible(false); - locktimeTypeField.selectToggle(locktimeBlockTypeField); + locktimeBlock.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(0, (int)MAX_BLOCK_LOCKTIME-1, (int)tx.getLockTime())); + locktimeType.selectToggle(locktimeBlockType); } else { + locktimeBlock.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(0, (int)MAX_BLOCK_LOCKTIME-1)); LocalDateTime date = Instant.ofEpochSecond(tx.getLockTime()).atZone(ZoneId.systemDefault()).toLocalDateTime(); - locktimeDateField.setDateTimeValue(date); - locktimeBlockField.setVisible(false); - locktimeDateField.setVisible(true); - locktimeTypeField.selectToggle(locktimeDateTypeField); + locktimeDate.setDateTimeValue(date); + locktimeType.selectToggle(locktimeDateType); } - locktimeBlockField.valueProperty().addListener((obs, oldValue, newValue) -> { + locktimeBlock.valueProperty().addListener((obs, oldValue, newValue) -> { tx.setLockTime(newValue); EventManager.get().notify(tx); }); - locktimeDateField.setFormat("yyyy-MM-dd HH:mm:ss"); - locktimeDateField.dateTimeValueProperty().addListener((obs, oldValue, newValue) -> { + locktimeDate.setFormat("yyyy-MM-dd HH:mm:ss"); + locktimeDate.dateTimeValueProperty().addListener((obs, oldValue, newValue) -> { tx.setLockTime(newValue.toEpochSecond(OffsetDateTime.now(ZoneId.systemDefault()).getOffset())); EventManager.get().notify(tx); }); if(form.getPsbt() != null) { - feeField.setText(form.getPsbt().getFee().toString() + " sats"); + fee.setText(form.getPsbt().getFee().toString() + " sats"); } else { - feeField.setText("Unknown"); + fee.setText("Unknown"); } - sizeField.setText(tx.getSize() + " B"); + size.setText(tx.getSize() + " B"); - virtualSizeField.setText(tx.getVirtualSize() + " vB"); + virtualSize.setText(tx.getVirtualSize() + " vB"); } private void updateTxId() { - idField.setText(headersForm.getTransaction().calculateTxId(false).toString()); + id.setText(headersForm.getTransaction().calculateTxId(false).toString()); } @Override diff --git a/src/main/resources/com/craigraw/sparrow/form/headers.fxml b/src/main/resources/com/craigraw/sparrow/form/headers.fxml index de1e33ca..4348a574 100644 --- a/src/main/resources/com/craigraw/sparrow/form/headers.fxml +++ b/src/main/resources/com/craigraw/sparrow/form/headers.fxml @@ -2,81 +2,110 @@ - - + + + - + - + - - +
+
+ + + +
+
-
diff --git a/src/main/resources/com/craigraw/sparrow/general.css b/src/main/resources/com/craigraw/sparrow/general.css index 89d0be84..f86c3a9d 100644 --- a/src/main/resources/com/craigraw/sparrow/general.css +++ b/src/main/resources/com/craigraw/sparrow/general.css @@ -2,5 +2,22 @@ -fx-background-color: transparent ; -fx-background-insets: 0px ; -fx-border :none; - -fx-padding: 0; + -fx-padding: 5 0 5 0; +} + +.form .fieldset:horizontal .label-container { + -fx-pref-width: 80px; + -fx-pref-height: 25px; +} + +.form .field { + -fx-padding: 5 5; +} + +.id { + -fx-font-family: Courier; +} + +.form-separator { + -fx-padding: -15 0 0 0; } \ No newline at end of file diff --git a/src/main/resources/com/craigraw/sparrow/transaction.fxml b/src/main/resources/com/craigraw/sparrow/transaction.fxml index 5d4d606b..e05b6e3e 100644 --- a/src/main/resources/com/craigraw/sparrow/transaction.fxml +++ b/src/main/resources/com/craigraw/sparrow/transaction.fxml @@ -1,21 +1,22 @@ - - - + - - - + + - + - + + + + + - \ No newline at end of file +