From 17b03a6750851f76157281ea963c5ebe9e6f1744 Mon Sep 17 00:00:00 2001 From: Craig Raw Date: Fri, 17 Apr 2020 10:03:50 +0200 Subject: [PATCH] wallet and settings initial work --- build.gradle | 6 +- drongo | 2 +- .../sparrowwallet/sparrow/AppController.java | 35 ++++++++ .../com/sparrowwallet/sparrow/TabData.java | 2 +- .../sparrow/control/EnumChoiceBox.java | 14 +++ .../TransactionFormController.java | 9 +- .../sparrow/wallet/Function.java | 5 ++ .../sparrow/wallet/SettingsController.java | 69 +++++++++++++++ .../sparrow/wallet/WalletController.java | 61 +++++++++++++ .../sparrow/wallet/WalletForm.java | 19 ++++ .../sparrow/wallet/WalletFormController.java | 16 ++++ src/main/java/module-info.java | 1 + src/main/resources/bird.png | Bin 0 -> 2724 bytes .../com/sparrowwallet/sparrow/app.fxml | 1 + .../sparrowwallet/sparrow/wallet/settings.css | 11 +++ .../sparrow/wallet/settings.fxml | 82 ++++++++++++++++++ .../sparrowwallet/sparrow/wallet/wallet.css | 21 +++++ .../sparrowwallet/sparrow/wallet/wallet.fxml | 72 +++++++++++++++ 18 files changed, 417 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/sparrowwallet/sparrow/control/EnumChoiceBox.java create mode 100644 src/main/java/com/sparrowwallet/sparrow/wallet/Function.java create mode 100644 src/main/java/com/sparrowwallet/sparrow/wallet/SettingsController.java create mode 100644 src/main/java/com/sparrowwallet/sparrow/wallet/WalletController.java create mode 100644 src/main/java/com/sparrowwallet/sparrow/wallet/WalletForm.java create mode 100644 src/main/java/com/sparrowwallet/sparrow/wallet/WalletFormController.java create mode 100755 src/main/resources/bird.png create mode 100644 src/main/resources/com/sparrowwallet/sparrow/wallet/settings.css create mode 100644 src/main/resources/com/sparrowwallet/sparrow/wallet/settings.fxml create mode 100644 src/main/resources/com/sparrowwallet/sparrow/wallet/wallet.css create mode 100644 src/main/resources/com/sparrowwallet/sparrow/wallet/wallet.fxml diff --git a/build.gradle b/build.gradle index 5fb3e52d..c63ec6cb 100644 --- a/build.gradle +++ b/build.gradle @@ -16,7 +16,7 @@ repositories { javafx { version = "14" - modules = [ 'javafx.controls', 'javafx.fxml' ] + modules = [ 'javafx.controls', 'javafx.fxml', 'javafx.swing' ] } java { @@ -46,7 +46,7 @@ dependencies { mainClassName = 'com.sparrowwallet.sparrow/com.sparrowwallet.sparrow.MainApp' run { - applicationDefaultJvmArgs = ["-Xdock:name=Sparrow", "-Xdock:icon=/Users/scy/git/sparrow/src/main/resources/sparrow.png", "--add-opens=javafx.graphics/com.sun.javafx.css=org.controlsfx.controls", "--add-opens=javafx.graphics/javafx.scene=org.controlsfx.controls"] + applicationDefaultJvmArgs = ["-Xdock:name=Sparrow", "-Xdock:icon=/Users/scy/git/sparrow/src/main/resources/sparrow.png", "--add-opens=javafx.graphics/com.sun.javafx.css=org.controlsfx.controls", "--add-opens=javafx.graphics/javafx.scene=org.controlsfx.controls", "--add-opens=javafx.controls/com.sun.javafx.scene.control.behavior=org.controlsfx.controls", "--add-opens=javafx.controls/com.sun.javafx.scene.control.inputmap=org.controlsfx.controls", "--add-opens=javafx.graphics/com.sun.javafx.scene.traversal=org.controlsfx.controls"] } jlink { @@ -61,7 +61,7 @@ jlink { options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages', '--ignore-signing-information', '--exclude-files', '**.png'] launcher { name = 'sparrow' - jvmArgs = ["--add-opens=javafx.graphics/com.sun.javafx.css=org.controlsfx.controls", "--add-opens=javafx.graphics/javafx.scene=org.controlsfx.controls"] + jvmArgs = ["--add-opens=javafx.graphics/com.sun.javafx.css=org.controlsfx.controls", "--add-opens=javafx.graphics/javafx.scene=org.controlsfx.controls", "--add-opens=javafx.controls/com.sun.javafx.scene.control.behavior=org.controlsfx.controls", "--add-opens=javafx.controls/com.sun.javafx.scene.control.inputmap=org.controlsfx.controls", "--add-opens=javafx.graphics/com.sun.javafx.scene.traversal=org.controlsfx.controls"] } addExtraDependencies("javafx") jpackage { diff --git a/drongo b/drongo index 0cebee3d..08e8df08 160000 --- a/drongo +++ b/drongo @@ -1 +1 @@ -Subproject commit 0cebee3d22740d0ab38657b1deaba67fe282f920 +Subproject commit 08e8df0807a01b2716ac80e9d6d9e2c113025848 diff --git a/src/main/java/com/sparrowwallet/sparrow/AppController.java b/src/main/java/com/sparrowwallet/sparrow/AppController.java index c8a742da..f0788ce1 100644 --- a/src/main/java/com/sparrowwallet/sparrow/AppController.java +++ b/src/main/java/com/sparrowwallet/sparrow/AppController.java @@ -7,11 +7,14 @@ import com.sparrowwallet.drongo.Utils; import com.sparrowwallet.drongo.protocol.Transaction; import com.sparrowwallet.drongo.psbt.PSBT; import com.sparrowwallet.drongo.psbt.PSBTParseException; +import com.sparrowwallet.drongo.wallet.Wallet; import com.sparrowwallet.sparrow.control.TextAreaDialog; import com.sparrowwallet.sparrow.event.TabEvent; import com.sparrowwallet.sparrow.event.TransactionTabChangedEvent; import com.sparrowwallet.sparrow.event.TransactionTabSelectedEvent; import com.sparrowwallet.sparrow.transaction.TransactionController; +import com.sparrowwallet.sparrow.wallet.WalletController; +import com.sparrowwallet.sparrow.wallet.WalletForm; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; @@ -88,6 +91,8 @@ public class AppController implements Initializable { showTxHex.setSelected(true); showTxHexProperty = true; + + addWalletTab(null, new Wallet()); } public void openFromFile(ActionEvent event) { @@ -192,6 +197,36 @@ public class AppController implements Initializable { showTxHexProperty = item.isSelected(); } + public void newWallet(ActionEvent event) { + Tab tab = addWalletTab(null, new Wallet()); + tabs.getSelectionModel().select(tab); + } + + public Tab addWalletTab(String name, Wallet wallet) { + try { + String tabName = name; + if(tabName == null || tabName.isEmpty()) { + tabName = "New wallet"; + } + + Tab tab = new Tab(tabName); + TabData tabData = new TabData(TabData.TabType.WALLET); + tab.setUserData(tabData); + tab.setContextMenu(getTabContextMenu(tab)); + tab.setClosable(true); + FXMLLoader walletLoader = new FXMLLoader(getClass().getResource("wallet/wallet.fxml")); + tab.setContent(walletLoader.load()); + WalletController controller = walletLoader.getController(); + WalletForm walletForm = new WalletForm(wallet); + controller.setWalletForm(walletForm); + + tabs.getTabs().add(tab); + return tab; + } catch(IOException e) { + throw new RuntimeException(e); + } + } + public void openExamples(ActionEvent event) { try { addTransactionTab("p2pkh", "01000000019c2e0f24a03e72002a96acedb12a632e72b6b74c05dc3ceab1fe78237f886c48010000006a47304402203da9d487be5302a6d69e02a861acff1da472885e43d7528ed9b1b537a8e2cac9022002d1bca03a1e9715a99971bafe3b1852b7a4f0168281cbd27a220380a01b3307012102c9950c622494c2e9ff5a003e33b690fe4832477d32c2d256c67eab8bf613b34effffffff02b6f50500000000001976a914bdf63990d6dc33d705b756e13dd135466c06b3b588ac845e0201000000001976a9145fb0e9755a3424efd2ba0587d20b1e98ee29814a88ac06241559"); diff --git a/src/main/java/com/sparrowwallet/sparrow/TabData.java b/src/main/java/com/sparrowwallet/sparrow/TabData.java index 857701c2..3844d5e1 100644 --- a/src/main/java/com/sparrowwallet/sparrow/TabData.java +++ b/src/main/java/com/sparrowwallet/sparrow/TabData.java @@ -32,6 +32,6 @@ public class TabData { } public enum TabType { - TRANSACTION + WALLET, TRANSACTION } } diff --git a/src/main/java/com/sparrowwallet/sparrow/control/EnumChoiceBox.java b/src/main/java/com/sparrowwallet/sparrow/control/EnumChoiceBox.java new file mode 100644 index 00000000..0764a28c --- /dev/null +++ b/src/main/java/com/sparrowwallet/sparrow/control/EnumChoiceBox.java @@ -0,0 +1,14 @@ +package com.sparrowwallet.sparrow.control; + +import javafx.beans.NamedArg; +import javafx.scene.control.ChoiceBox; + +public class EnumChoiceBox> extends ChoiceBox { + + public EnumChoiceBox(@NamedArg("enumType") String enumType) throws Exception { + Class enumClass = (Class) Class.forName(enumType); + getItems().setAll(enumClass.getEnumConstants()); + } +} + + diff --git a/src/main/java/com/sparrowwallet/sparrow/transaction/TransactionFormController.java b/src/main/java/com/sparrowwallet/sparrow/transaction/TransactionFormController.java index 7c1cae65..d15ab13b 100644 --- a/src/main/java/com/sparrowwallet/sparrow/transaction/TransactionFormController.java +++ b/src/main/java/com/sparrowwallet/sparrow/transaction/TransactionFormController.java @@ -17,6 +17,7 @@ import java.time.Duration; import java.util.List; import static org.fxmisc.richtext.model.TwoDimensional.Bias.Backward; +import static com.sparrowwallet.drongo.protocol.ScriptType.*; public abstract class TransactionFormController { protected void addPieData(PieChart pie, List outputs) { @@ -57,7 +58,7 @@ public abstract class TransactionFormController { } protected void appendScript(CodeArea codeArea, Script script, Script redeemScript, Script witnessScript) { - if(ScriptPattern.isP2PKH(script)) { + if(P2PKH.isScriptType(script)) { codeArea.append(script.getChunks().get(0).toString(), "script-opcode"); codeArea.append(" ", ""); codeArea.append(script.getChunks().get(1).toString(), "script-opcode"); @@ -67,17 +68,17 @@ public abstract class TransactionFormController { codeArea.append(script.getChunks().get(3).toString(), "script-opcode"); codeArea.append(" ", ""); codeArea.append(script.getChunks().get(4).toString(), "script-opcode"); - } else if(ScriptPattern.isP2SH(script)) { + } else if(P2SH.isScriptType(script)) { codeArea.append(script.getChunks().get(0).toString(), "script-opcode"); codeArea.append(" ", ""); codeArea.append("", "script-hash"); codeArea.append(" ", ""); codeArea.append(script.getChunks().get(2).toString(), "script-opcode"); - } else if(ScriptPattern.isP2WPKH(script)) { + } else if(P2WPKH.isScriptType(script)) { codeArea.append(script.getChunks().get(0).toString(), "script-opcode"); codeArea.append(" ", ""); codeArea.append("", "script-hash"); - } else if(ScriptPattern.isP2WSH(script)) { + } else if(P2WSH.isScriptType(script)) { codeArea.append(script.getChunks().get(0).toString(), "script-opcode"); codeArea.append(" ", ""); codeArea.append("", "script-hash"); diff --git a/src/main/java/com/sparrowwallet/sparrow/wallet/Function.java b/src/main/java/com/sparrowwallet/sparrow/wallet/Function.java new file mode 100644 index 00000000..f1999b82 --- /dev/null +++ b/src/main/java/com/sparrowwallet/sparrow/wallet/Function.java @@ -0,0 +1,5 @@ +package com.sparrowwallet.sparrow.wallet; + +public enum Function { + TRANSACTIONS, SEND, RECEIVE, ADDRESSES, POLICIES, SETTINGS; +} diff --git a/src/main/java/com/sparrowwallet/sparrow/wallet/SettingsController.java b/src/main/java/com/sparrowwallet/sparrow/wallet/SettingsController.java new file mode 100644 index 00000000..fa145a54 --- /dev/null +++ b/src/main/java/com/sparrowwallet/sparrow/wallet/SettingsController.java @@ -0,0 +1,69 @@ +package com.sparrowwallet.sparrow.wallet; + +import com.sparrowwallet.drongo.policy.PolicyType; +import com.sparrowwallet.drongo.protocol.ScriptType; +import com.sparrowwallet.sparrow.EventManager; +import com.sparrowwallet.sparrow.control.CopyableLabel; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.*; +import org.controlsfx.control.RangeSlider; +import tornadofx.control.Fieldset; + +import java.net.URL; +import java.util.ResourceBundle; + +public class SettingsController extends WalletFormController implements Initializable { + + @FXML + private ComboBox policyType; + + @FXML + private TextField policy; + + @FXML + private ComboBox scriptType; + + @FXML + private Fieldset multisigFieldset; + + @FXML + private RangeSlider multisigControl; + + @FXML + private CopyableLabel multisigLowLabel; + + @FXML + private CopyableLabel multisigHighLabel; + + @FXML + private TabPane keystoreTabs; + + @FXML ComboBox testType; + + @Override + public void initialize(URL location, ResourceBundle resources) { + EventManager.get().register(this); + } + + @Override + public void initializeView() { + policyType.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, policyType) -> { + scriptType.getSelectionModel().select(policyType.getDefaultScriptType()); + multisigFieldset.setVisible(policyType.equals(PolicyType.MULTI)); + }); + + multisigLowLabel.textProperty().bind(multisigControl.lowValueProperty().asString("%.0f") ); + multisigHighLabel.textProperty().bind(multisigControl.highValueProperty().asString("%.0f")); + + multisigFieldset.managedProperty().bind(multisigFieldset.visibleProperty()); + + if(walletForm.getWallet().getPolicyType() != null) { + policyType.getSelectionModel().select(walletForm.getWallet().getPolicyType()); + } else { + policyType.getSelectionModel().select(0); + } + + + } +} diff --git a/src/main/java/com/sparrowwallet/sparrow/wallet/WalletController.java b/src/main/java/com/sparrowwallet/sparrow/wallet/WalletController.java new file mode 100644 index 00000000..9dee0f27 --- /dev/null +++ b/src/main/java/com/sparrowwallet/sparrow/wallet/WalletController.java @@ -0,0 +1,61 @@ +package com.sparrowwallet.sparrow.wallet; + +import com.sparrowwallet.drongo.wallet.Wallet; +import com.sparrowwallet.sparrow.AppController; +import com.sparrowwallet.sparrow.EventManager; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Node; +import javafx.scene.control.ToggleGroup; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.StackPane; + +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; + +public class WalletController extends WalletFormController implements Initializable { + @FXML + private BorderPane tabContent; + + @FXML + private StackPane walletPane; + + @FXML + private ToggleGroup walletMenu; + + @Override + public void initialize(URL location, ResourceBundle resources) { + EventManager.get().register(this); + } + + public void initializeView() { + walletMenu.selectedToggleProperty().addListener((observable, oldValue, selectedToggle) -> { + Function function = (Function)selectedToggle.getUserData(); + + boolean existing = false; + for(Node walletFunction : walletPane.getChildren()) { + if(walletFunction.getUserData().equals(function)) { + existing = true; + walletFunction.setViewOrder(1); + } else { + walletFunction.setViewOrder(0); + } + } + + try { + if(!existing) { + FXMLLoader functionLoader = new FXMLLoader(AppController.class.getResource("wallet/" + function.toString().toLowerCase() + ".fxml")); + Node walletFunction = functionLoader.load(); + WalletFormController controller = functionLoader.getController(); + controller.setWalletForm(getWalletForm()); + walletFunction.setViewOrder(1); + walletPane.getChildren().add(walletFunction); + } + } catch (IOException e) { + throw new IllegalStateException("Can't find pane", e); + } + }); + } +} diff --git a/src/main/java/com/sparrowwallet/sparrow/wallet/WalletForm.java b/src/main/java/com/sparrowwallet/sparrow/wallet/WalletForm.java new file mode 100644 index 00000000..8f13706b --- /dev/null +++ b/src/main/java/com/sparrowwallet/sparrow/wallet/WalletForm.java @@ -0,0 +1,19 @@ +package com.sparrowwallet.sparrow.wallet; + +import com.sparrowwallet.drongo.wallet.Wallet; + +public class WalletForm { + private Wallet wallet; + + public WalletForm(Wallet wallet) { + this.wallet = wallet; + } + + public Wallet getWallet() { + return wallet; + } + + public void setWallet(Wallet wallet) { + this.wallet = wallet; + } +} diff --git a/src/main/java/com/sparrowwallet/sparrow/wallet/WalletFormController.java b/src/main/java/com/sparrowwallet/sparrow/wallet/WalletFormController.java new file mode 100644 index 00000000..845b531e --- /dev/null +++ b/src/main/java/com/sparrowwallet/sparrow/wallet/WalletFormController.java @@ -0,0 +1,16 @@ +package com.sparrowwallet.sparrow.wallet; + +public abstract class WalletFormController { + public WalletForm walletForm; + + public WalletForm getWalletForm() { + return walletForm; + } + + public void setWalletForm(WalletForm walletForm) { + this.walletForm = walletForm; + initializeView(); + } + + public abstract void initializeView(); +} diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 5bd4b964..95d55dba 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -8,4 +8,5 @@ open module com.sparrowwallet.sparrow { requires com.sparrowwallet.drongo; requires com.google.common; requires flowless; + requires javafx.swing; } \ No newline at end of file diff --git a/src/main/resources/bird.png b/src/main/resources/bird.png new file mode 100755 index 0000000000000000000000000000000000000000..ae8b43f8fe685c50d6e3b05569aa66983b515752 GIT binary patch literal 2724 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 eXYcI)%KihPB+hX1^3Koz0000 + diff --git a/src/main/resources/com/sparrowwallet/sparrow/wallet/settings.css b/src/main/resources/com/sparrowwallet/sparrow/wallet/settings.css new file mode 100644 index 00000000..50845478 --- /dev/null +++ b/src/main/resources/com/sparrowwallet/sparrow/wallet/settings.css @@ -0,0 +1,11 @@ +.form .fieldset:horizontal .field { + -fx-pref-height: 40px; +} + +.form .fieldset:horizontal .label-container { + -fx-alignment: center-left; +} + +.form .fieldset:horizontal .input-container { + -fx-alignment: center-left; +} diff --git a/src/main/resources/com/sparrowwallet/sparrow/wallet/settings.fxml b/src/main/resources/com/sparrowwallet/sparrow/wallet/settings.fxml new file mode 100644 index 00000000..dc254872 --- /dev/null +++ b/src/main/resources/com/sparrowwallet/sparrow/wallet/settings.fxml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + + + + + + +
+
+ +
+
+ + + +
+
+ + + + +
diff --git a/src/main/resources/com/sparrowwallet/sparrow/wallet/wallet.css b/src/main/resources/com/sparrowwallet/sparrow/wallet/wallet.css new file mode 100644 index 00000000..fee37f1a --- /dev/null +++ b/src/main/resources/com/sparrowwallet/sparrow/wallet/wallet.css @@ -0,0 +1,21 @@ +.list-menu { + -fx-pref-width: 180; + -fx-background-color: #3da0e3; +} + +.list-item { + -fx-pref-width: 180; + -fx-background-color: #3da0e3; +} + +.list-item * { + -fx-fill: #fff; +} + +.list-item:hover { + -fx-background-color: #4aa7e5; +} + +.list-item:selected { + -fx-background-color: #1e88cf; +} \ No newline at end of file diff --git a/src/main/resources/com/sparrowwallet/sparrow/wallet/wallet.fxml b/src/main/resources/com/sparrowwallet/sparrow/wallet/wallet.fxml new file mode 100644 index 00000000..9b11691f --- /dev/null +++ b/src/main/resources/com/sparrowwallet/sparrow/wallet/wallet.fxml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+