From 2c6163ecb903b818fa56792a611f752f485ef890 Mon Sep 17 00:00:00 2001 From: Mike Hearn Date: Fri, 14 Apr 2017 01:16:14 +0200 Subject: [PATCH] DemoBench: layout fixes and more visual tweaks --- .../net/corda/demobench/views/NodeTabView.kt | 5 ++++- .../corda/demobench/views/NodeTerminalView.kt | 15 ++++++++++++--- .../resources/net/corda/demobench/style.css | 4 ++++ .../corda/demobench/views/DemoBenchView.fxml | 4 ++-- ...full-trans.png => corda-logo-full-trans.png} | Bin .../demobench/views/corda-logo-square-trans.png | Bin 0 -> 39182 bytes 6 files changed, 22 insertions(+), 6 deletions(-) rename tools/demobench/src/main/resources/net/corda/demobench/views/{cordalogo-full-trans.png => corda-logo-full-trans.png} (100%) create mode 100644 tools/demobench/src/main/resources/net/corda/demobench/views/corda-logo-square-trans.png diff --git a/tools/demobench/src/main/kotlin/net/corda/demobench/views/NodeTabView.kt b/tools/demobench/src/main/kotlin/net/corda/demobench/views/NodeTabView.kt index aa83a6769f..231db1b994 100644 --- a/tools/demobench/src/main/kotlin/net/corda/demobench/views/NodeTabView.kt +++ b/tools/demobench/src/main/kotlin/net/corda/demobench/views/NodeTabView.kt @@ -66,12 +66,14 @@ class NodeTabView : Fragment() { hbox { styleClass.addAll("node-panel") + vboxConstraints { vGrow = Priority.ALWAYS } fieldset("CorDapps") { hboxConstraints { hGrow = Priority.ALWAYS } styleClass.addAll("cordapps-panel") listview(cordapps) { + vboxConstraints { vGrow = Priority.ALWAYS } setOnKeyPressed { key -> if ((key.code == KeyCode.DELETE) && !selectionModel.isEmpty) { cordapps.remove(selectionModel.selectedItem) @@ -85,6 +87,7 @@ class NodeTabView : Fragment() { styleClass.addAll("services-panel") listview(availableServices.observable()) { + vboxConstraints { vGrow = Priority.ALWAYS } selectionModel.selectionMode = MULTIPLE model.item.extraServices.set(selectionModel.selectedItems) } @@ -198,7 +201,7 @@ class NodeTabView : Fragment() { value = CityDatabase["London"] - // TODO: Find a way to make the popup the same width as when not auto-completing. + // TODO: Upgrade to TornadoFX 1.7.3 to fix an issue where the combobox dropdown isn't wide enough. isEditable = true makeAutocompletable() } diff --git a/tools/demobench/src/main/kotlin/net/corda/demobench/views/NodeTerminalView.kt b/tools/demobench/src/main/kotlin/net/corda/demobench/views/NodeTerminalView.kt index bdf98cddb2..4bb090be94 100644 --- a/tools/demobench/src/main/kotlin/net/corda/demobench/views/NodeTerminalView.kt +++ b/tools/demobench/src/main/kotlin/net/corda/demobench/views/NodeTerminalView.kt @@ -7,7 +7,10 @@ import javafx.application.Platform import javafx.embed.swing.SwingNode import javafx.scene.control.Button import javafx.scene.control.Label +import javafx.scene.image.ImageView +import javafx.scene.layout.StackPane import javafx.scene.layout.VBox +import javafx.util.Duration import net.corda.client.rpc.notUsed import net.corda.demobench.explorer.ExplorerController import net.corda.demobench.model.NodeConfig @@ -18,7 +21,8 @@ import net.corda.demobench.rpc.NodeRPC import net.corda.demobench.ui.PropertyLabel import net.corda.demobench.web.DBViewer import net.corda.demobench.web.WebServerController -import tornadofx.Fragment +import tornadofx.* +import java.awt.Color import java.awt.Dimension import java.util.logging.Level import javax.swing.SwingUtilities @@ -45,6 +49,7 @@ class NodeTerminalView : Fragment() { private val viewer = DBViewer() private var rpc: NodeRPC? = null private var pty: R3Pty? = null + private lateinit var logo: ImageView fun open(config: NodeConfig, onExit: () -> Unit) { nodeName.text = config.legalName @@ -55,7 +60,11 @@ class NodeTerminalView : Fragment() { swingTerminal.requestFocus() } - root.children.add(swingTerminal) + logo = ImageView(resources["corda-logo-square-trans.png"]) + logo.opacity = 0.0 + swingTerminal.styleClass += "terminal-widget" + val stack = StackPane(logo, swingTerminal) + root.children.add(stack) root.isVisible = true SwingUtilities.invokeLater({ @@ -144,6 +153,7 @@ class NodeTerminalView : Fragment() { ) Platform.runLater { + logo.opacityProperty().animate(1.0, Duration.seconds(2.5)) states.value = fetchAndDrop(statesInVault).size.toString() transactions.value = fetchAndDrop(verifiedTx).size.toString() balance.value = if (cashBalances.isNullOrEmpty()) "0" else cashBalances @@ -177,6 +187,5 @@ class NodeTerminalView : Fragment() { class TerminalSettingsProvider : DefaultSettingsProvider() { override fun getDefaultStyle() = TextStyle(TerminalColor.WHITE, TerminalColor.rgb(50, 50, 50)) override fun emulateX11CopyPaste() = true - } } diff --git a/tools/demobench/src/main/resources/net/corda/demobench/style.css b/tools/demobench/src/main/resources/net/corda/demobench/style.css index 38c7bad175..6b87beaa46 100644 --- a/tools/demobench/src/main/resources/net/corda/demobench/style.css +++ b/tools/demobench/src/main/resources/net/corda/demobench/style.css @@ -38,6 +38,10 @@ -fx-background-color: #323232; } +.terminal-widget { + -fx-opacity: 0.85; +} + .node-panel { -fx-spacing: 1em; -fx-background-color: white; diff --git a/tools/demobench/src/main/resources/net/corda/demobench/views/DemoBenchView.fxml b/tools/demobench/src/main/resources/net/corda/demobench/views/DemoBenchView.fxml index 98fb3d1e48..195b1f91cc 100644 --- a/tools/demobench/src/main/resources/net/corda/demobench/views/DemoBenchView.fxml +++ b/tools/demobench/src/main/resources/net/corda/demobench/views/DemoBenchView.fxml @@ -19,9 +19,9 @@ - + - + diff --git a/tools/demobench/src/main/resources/net/corda/demobench/views/cordalogo-full-trans.png b/tools/demobench/src/main/resources/net/corda/demobench/views/corda-logo-full-trans.png similarity index 100% rename from tools/demobench/src/main/resources/net/corda/demobench/views/cordalogo-full-trans.png rename to tools/demobench/src/main/resources/net/corda/demobench/views/corda-logo-full-trans.png diff --git a/tools/demobench/src/main/resources/net/corda/demobench/views/corda-logo-square-trans.png b/tools/demobench/src/main/resources/net/corda/demobench/views/corda-logo-square-trans.png new file mode 100644 index 0000000000000000000000000000000000000000..4a9f57c233ef0eeb0c58b46ab84586d943b5d3b1 GIT binary patch literal 39182 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 literal 0 HcmV?d00001