mirror of
https://github.com/ACINQ/eclair.git
synced 2025-03-27 02:37:06 +01:00
gui: add payment request to send/receive dialogs
This commit is contained in:
parent
6ba11d37a4
commit
c7145d6dbc
5 changed files with 69 additions and 37 deletions
|
@ -1,8 +1,9 @@
|
|||
package fr.acinq.eclair.gui
|
||||
|
||||
import javafx.event.{ActionEvent, EventHandler}
|
||||
import javafx.geometry.{Insets, Pos}
|
||||
import javafx.scene.Scene
|
||||
import javafx.scene.control.{Label, TextField}
|
||||
import javafx.scene.{Node, Scene}
|
||||
import javafx.scene.control.{Button, Label, TextArea, TextField}
|
||||
import javafx.scene.layout.GridPane
|
||||
import javafx.stage.{Modality, Stage, StageStyle}
|
||||
|
||||
|
@ -13,12 +14,12 @@ class DialogReceive(primaryStage: Stage, handlers: Handlers) extends Stage() {
|
|||
initModality(Modality.WINDOW_MODAL)
|
||||
initStyle(StageStyle.UTILITY)
|
||||
initOwner(primaryStage)
|
||||
setWidth(400)
|
||||
setHeight(60)
|
||||
setWidth(900)
|
||||
setHeight(300)
|
||||
// center on parent
|
||||
setX(primaryStage.getX() + primaryStage.getWidth() / 2 - getWidth() / 2)
|
||||
setY(primaryStage.getY() + primaryStage.getHeight() / 2 - getHeight() / 2)
|
||||
setTitle("Receive")
|
||||
setTitle("Receive Payment")
|
||||
setResizable(false)
|
||||
|
||||
val grid = new GridPane()
|
||||
|
@ -27,14 +28,39 @@ class DialogReceive(primaryStage: Stage, handlers: Handlers) extends Stage() {
|
|||
grid.setVgap(10)
|
||||
grid.setPadding(new Insets(20, 5, 20, 5))
|
||||
|
||||
val labelH = new Label("H")
|
||||
grid.add(labelH, 0, 0)
|
||||
val labelAmountMsat = new Label("amount (msat)")
|
||||
grid.add(labelAmountMsat, 0, 0)
|
||||
|
||||
val textFieldH = new TextField()
|
||||
textFieldH.setEditable(false)
|
||||
grid.add(textFieldH, 1, 0)
|
||||
val textFieldAmountMsat = new TextField()
|
||||
grid.add(textFieldAmountMsat, 1, 0)
|
||||
|
||||
handlers.getH(textFieldH)
|
||||
val labelPaymentRequest = new Label("Payment Request")
|
||||
grid.add(labelPaymentRequest, 0, 1)
|
||||
|
||||
val textAreaPaymentRequest = new TextArea()
|
||||
textAreaPaymentRequest.setWrapText(true)
|
||||
textAreaPaymentRequest.setPrefRowCount(2)
|
||||
textAreaPaymentRequest.setPrefColumnCount(40)
|
||||
textAreaPaymentRequest.setEditable(false)
|
||||
grid.add(textAreaPaymentRequest, 1, 1)
|
||||
|
||||
val btn = new Button("Generate")
|
||||
btn.setOnAction(new EventHandler[ActionEvent] {
|
||||
override def handle(event: ActionEvent): Unit = {
|
||||
handlers.getPaymentRequest(textFieldAmountMsat.getText.toLong, textAreaPaymentRequest)
|
||||
}
|
||||
})
|
||||
grid.add(btn, 1, 2)
|
||||
// val labelH = new Label("H")
|
||||
// grid.add(labelH, 0, 0)
|
||||
//
|
||||
// val textFieldH = new TextField()
|
||||
// textFieldH.setEditable(false)
|
||||
// grid.add(textFieldH, 1, 0)
|
||||
//
|
||||
//
|
||||
//
|
||||
// handlers.getH(textFieldH)
|
||||
|
||||
val scene = new Scene(grid)
|
||||
setScene(scene)
|
||||
|
|
|
@ -3,7 +3,7 @@ package fr.acinq.eclair.gui
|
|||
import javafx.event.{ActionEvent, EventHandler}
|
||||
import javafx.geometry.{Insets, Pos}
|
||||
import javafx.scene.{Node, Scene}
|
||||
import javafx.scene.control.{Button, Label, TextField}
|
||||
import javafx.scene.control.{Button, Label, TextArea, TextField}
|
||||
import javafx.scene.layout.GridPane
|
||||
import javafx.stage.{Modality, Stage, StageStyle}
|
||||
|
||||
|
@ -14,12 +14,12 @@ class DialogSend(primaryStage: Stage, handlers: Handlers) extends Stage() {
|
|||
initModality(Modality.WINDOW_MODAL)
|
||||
initStyle(StageStyle.UTILITY)
|
||||
initOwner(primaryStage)
|
||||
setWidth(300)
|
||||
setWidth(800)
|
||||
setHeight(300)
|
||||
// center on parent
|
||||
setX(primaryStage.getX() + primaryStage.getWidth() / 2 - getWidth() / 2)
|
||||
setY(primaryStage.getY() + primaryStage.getHeight() / 2 - getHeight() / 2)
|
||||
setTitle("Send")
|
||||
setTitle("Pay")
|
||||
setResizable(false)
|
||||
|
||||
val grid = new GridPane()
|
||||
|
@ -28,34 +28,28 @@ class DialogSend(primaryStage: Stage, handlers: Handlers) extends Stage() {
|
|||
grid.setVgap(10)
|
||||
grid.setPadding(new Insets(25, 25, 25, 25))
|
||||
|
||||
val labelNodeId = new Label("NodeId")
|
||||
grid.add(labelNodeId, 0, 0)
|
||||
|
||||
val textFieldNodeId = new TextField()
|
||||
grid.add(textFieldNodeId, 1, 0)
|
||||
//
|
||||
val labelPaymentRequest = new Label("PaymentRequest")
|
||||
grid.add(labelPaymentRequest, 0, 0)
|
||||
|
||||
val labelH = new Label("H")
|
||||
grid.add(labelH, 0, 1)
|
||||
|
||||
val textFieldH = new TextField()
|
||||
grid.add(textFieldH, 1, 1)
|
||||
|
||||
val labelAmountMsat = new Label("amount (msat)")
|
||||
grid.add(labelAmountMsat, 0, 2)
|
||||
|
||||
val textFieldAmountMsat = new TextField()
|
||||
grid.add(textFieldAmountMsat, 1, 2)
|
||||
val textAreaPaymentRequest = new TextArea()
|
||||
textAreaPaymentRequest.setPrefColumnCount(40)
|
||||
textAreaPaymentRequest.setPrefRowCount(2)
|
||||
textAreaPaymentRequest.setWrapText(true)
|
||||
grid.add(textAreaPaymentRequest, 1, 0)
|
||||
|
||||
val btn = new Button("Send")
|
||||
btn.setOnAction(new EventHandler[ActionEvent] {
|
||||
override def handle(event: ActionEvent): Unit = {
|
||||
handlers.send(textFieldNodeId.getText, textFieldH.getText, textFieldAmountMsat.getText)
|
||||
val Array(nodeId, amount, hash) = textAreaPaymentRequest.getText.split(":")
|
||||
handlers.send(nodeId, hash, amount)
|
||||
event.getSource.asInstanceOf[Node].getScene.getWindow.hide()
|
||||
}
|
||||
})
|
||||
// click on enter
|
||||
btn.defaultButtonProperty().bind(btn.focusedProperty())
|
||||
grid.add(btn, 1, 3)
|
||||
grid.add(btn, 1, 1)
|
||||
|
||||
val scene = new Scene(grid)
|
||||
setScene(scene)
|
||||
|
|
|
@ -18,6 +18,7 @@ class DialogSplash(primaryStage: Stage) extends Stage() {
|
|||
setResizable(false)
|
||||
|
||||
val image = new Image("/eclair01.png", true)
|
||||
primaryStage.getIcons().add(image)
|
||||
val view = new ImageView(image)
|
||||
|
||||
val pane = new StackPane()
|
||||
|
|
|
@ -2,7 +2,7 @@ package fr.acinq.eclair.gui
|
|||
|
||||
|
||||
import javafx.application.Platform
|
||||
import javafx.scene.control.TextField
|
||||
import javafx.scene.control.{TextArea, TextField}
|
||||
|
||||
import fr.acinq.bitcoin.BinaryData
|
||||
import fr.acinq.eclair.io.Client
|
||||
|
@ -44,4 +44,15 @@ class Handlers(setup: Setup) extends Logging {
|
|||
}
|
||||
}
|
||||
|
||||
def getPaymentRequest(amountMsat: Long, textField: TextArea): Unit = {
|
||||
import akka.pattern.ask
|
||||
(paymentHandler ? 'genh).mapTo[BinaryData].map { h =>
|
||||
Platform.runLater(new Runnable() {
|
||||
override def run(): Unit = {
|
||||
textField.setText(s"${Globals.Node.id}:$amountMsat:${h.toString()}")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -30,13 +30,13 @@ class MainWindow extends Application {
|
|||
val root = new BorderPane()
|
||||
|
||||
val menuBar = new MenuBar()
|
||||
val menuFile = new Menu("File")
|
||||
val menuChannels = new Menu("Channels")
|
||||
val itemConnect = new MenuItem("Open channel")
|
||||
val itemSend = new MenuItem("Send")
|
||||
val itemReceive = new MenuItem("Receive")
|
||||
val itemSend = new MenuItem("Pay")
|
||||
val itemReceive = new MenuItem("Receive payment")
|
||||
|
||||
menuFile.getItems.addAll(itemConnect, new SeparatorMenuItem(), itemSend, itemReceive)
|
||||
menuBar.getMenus().addAll(menuFile)
|
||||
menuChannels.getItems.addAll(itemConnect, new SeparatorMenuItem(), itemSend, itemReceive)
|
||||
menuBar.getMenus().addAll(menuChannels)
|
||||
root.setTop(menuBar)
|
||||
|
||||
val tabChannels = new Tab("Channels")
|
||||
|
|
Loading…
Add table
Reference in a new issue