Skip to content

Commit 91d763d

Browse files
committed
feat: dialogue editor now supports node duplication, shortcut CTRL+D, related to #1322
1 parent 4b9214b commit 91d763d

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

fxgl-tools/src/main/kotlin/com/almasb/fxgl/tools/dialogues/DialoguePane.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,7 @@ class DialoguePane(graph: DialogueGraph = DialogueGraph()) : Pane() {
465465
}
466466

467467
private fun onSelectedNodeViewChanged(newNodeView: NodeView?) {
468-
468+
469469
}
470470

471471
/**
@@ -635,6 +635,17 @@ class DialoguePane(graph: DialogueGraph = DialogueGraph()) : Pane() {
635635
showMessage("TODO: Sorry, not implemented yet.")
636636
}
637637

638+
fun duplicate() {
639+
selectedNodeView.value?.let { nodeView ->
640+
// currently we do not allow multiple start nodes
641+
if (nodeView.node.type != START) {
642+
val node = nodeView.node.copy()
643+
644+
performUIAction(AddNodeAction(graph, node))
645+
}
646+
}
647+
}
648+
638649
fun save(): SerializableGraph {
639650
isDirtyProperty.value = false
640651

fxgl-tools/src/main/kotlin/com/almasb/fxgl/tools/dialogues/MainUI.kt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,7 @@ class MainUI : BorderPane() {
8383
val contextMenuEdit = FXGLContextMenu()
8484
contextMenuEdit.addItem("Undo (CTRL+Z)") { undo() }
8585
//contextMenuEdit.addItem("Redo") { redo() }
86-
//contextMenuEdit.addItem("Copy (CTRL+C)") { }
87-
//contextMenuEdit.addItem("Paste (CTRL+V)") { }
86+
contextMenuEdit.addItem("Duplicate Node (CTRL+D)") { duplicate() }
8887
contextMenuEdit.addItem("Preferences") { openPreferencesDialog() }
8988

9089
val contextMenuAdd = FXGLContextMenu()
@@ -152,6 +151,12 @@ class MainUI : BorderPane() {
152151
undo()
153152
}
154153
}, KeyCode.Z, InputModifier.CTRL)
154+
155+
getInput().addAction(object : UserAction("Duplicate") {
156+
override fun onActionBegin() {
157+
duplicate()
158+
}
159+
}, KeyCode.D, InputModifier.CTRL)
155160
}
156161

157162
private fun makeRunButton(): Node {
@@ -270,6 +275,10 @@ class MainUI : BorderPane() {
270275
currentTab?.pane?.redo()
271276
}
272277

278+
private fun duplicate() {
279+
currentTab?.pane?.duplicate()
280+
}
281+
273282
private fun openAboutDialog() {
274283
showMessage(
275284
"${getSettings().title}: v.${getSettings().version}\n\n"

0 commit comments

Comments
 (0)