@@ -10,17 +10,15 @@ import com.almasb.fxgl.cutscene.dialogue.SerializableGraph
1010import com.almasb.fxgl.dsl.*
1111import com.almasb.fxgl.input.InputModifier
1212import com.almasb.fxgl.input.UserAction
13+ import com.almasb.fxgl.tools.dialogues.ui.ErrorIcon
1314import com.almasb.fxgl.tools.dialogues.ui.FXGLContextMenu
1415import com.fasterxml.jackson.databind.ObjectMapper
1516import com.fasterxml.jackson.databind.SerializationFeature
1617import javafx.beans.binding.Bindings
1718import javafx.geometry.Pos
1819import javafx.scene.Cursor
1920import javafx.scene.Node
20- import javafx.scene.control.Menu
21- import javafx.scene.control.MenuBar
22- import javafx.scene.control.Tab
23- import javafx.scene.control.TabPane
21+ import javafx.scene.control.*
2422import javafx.scene.input.KeyCode
2523import javafx.scene.layout.BorderPane
2624import javafx.scene.layout.HBox
@@ -30,6 +28,7 @@ import javafx.scene.paint.Color
3028import javafx.scene.shape.Polygon
3129import javafx.scene.shape.Rectangle
3230import javafx.stage.FileChooser
31+ import javafx.util.Duration
3332import java.io.File
3433import java.nio.file.Files
3534
@@ -42,6 +41,8 @@ class MainUI : BorderPane() {
4241 private val toolbar = HBox (35.0 )
4342 private val tabPane = TabPane ()
4443
44+ private val errorIcon = ErrorIcon ()
45+
4546 private val preferences by lazy { PreferencesSubScene () }
4647
4748 private val currentTab: DialogueTab ?
@@ -55,6 +56,22 @@ class MainUI : BorderPane() {
5556 toolbar.style = " -fx-background-color: black"
5657 toolbar.alignment = Pos .CENTER_LEFT
5758
59+ errorIcon.layoutXProperty().bind(FXGL .getSettings().actualWidthProperty().subtract(35 ))
60+ errorIcon.layoutY = 40.0
61+
62+ val tooltip = Tooltip ()
63+ tooltip.showDelay = Duration .ZERO ;
64+ tooltip.text = " There are incomplete dialogue paths."
65+
66+ Tooltip .install(errorIcon, tooltip)
67+
68+ tabPane.selectionModel.selectedItemProperty().addListener { _, _, newTab ->
69+ newTab?.let {
70+ errorIcon.visibleProperty().unbind()
71+ errorIcon.visibleProperty().bind((newTab as DialogueTab ).pane.isConnectedProperty.not ())
72+ }
73+ }
74+
5875 val contextMenuFile = FXGLContextMenu ()
5976 contextMenuFile.addItem(" New (CTRL+N)" ) { openNewDialog() }
6077 contextMenuFile.addItem(" Open... (CTRL+O)" ) { openLoadDialog() }
@@ -77,7 +94,7 @@ class MainUI : BorderPane() {
7794 contextMenuHelp.addItem(" Check for Updates..." ) { FXGL .getFXApp().hostServices.showDocument(" https://fxgl.itch.io/fxgl-dialogue-editor" ) }
7895 contextMenuHelp.addItem(" About" ) { openAboutDialog() }
7996
80- val pane = Pane (tabPane, toolbar)
97+ val pane = Pane (tabPane, toolbar, errorIcon )
8198
8299 val menuFile = EditorMenu (" File" ) {
83100 contextMenuFile.show(pane, 0.0 , toolbar.prefHeight)
0 commit comments