[Editor] Improve ProjectSettingsFragment

This commit is contained in:
2021-02-12 08:44:06 +01:00
parent 9589618ca2
commit c9a73cd98f
2 changed files with 17 additions and 15 deletions

View File

@@ -23,17 +23,18 @@ class MainController : Controller() {
val openMaps = observableMapOf<Scope, GameMap>() val openMaps = observableMapOf<Scope, GameMap>()
fun createEmptyProject() { fun createEmptyProject() {
val project = Project() val vm = ProjectVM(Project())
val vm = ProjectVM(project)
setInScope(vm) setInScope(vm)
val modal = find<ProjectSettingsFragment>().apply { openModal(block = true, resizable = false) } find<ProjectSettingsFragment>().apply {
onComplete {
if (modal.result) {
openMaps.clear() openMaps.clear()
projectContext.project = project projectContext.project = it
projectContext.save() projectContext.save()
} }
openModal(block = true, resizable = false)
}
} }
fun createEmptyMap() { fun createEmptyMap() {

View File

@@ -1,5 +1,6 @@
package com.bartlomiejpluta.base.editor.project.view package com.bartlomiejpluta.base.editor.project.view
import com.bartlomiejpluta.base.editor.project.model.Project
import com.bartlomiejpluta.base.editor.project.viewmodel.ProjectVM import com.bartlomiejpluta.base.editor.project.viewmodel.ProjectVM
import javafx.beans.binding.Bindings import javafx.beans.binding.Bindings
import javafx.beans.binding.Bindings.createStringBinding import javafx.beans.binding.Bindings.createStringBinding
@@ -9,19 +10,23 @@ import java.io.File
class ProjectSettingsFragment : Fragment("Project Settings") { class ProjectSettingsFragment : Fragment("Project Settings") {
private val projectVM = find<ProjectVM>(FX.defaultScope) private val projectVM = find<ProjectVM>(FX.defaultScope)
private val rootDirectory = SimpleStringProperty("") private val rootDirectory = SimpleStringProperty("")
private val projectDirectory = SimpleStringProperty("") private val projectDirectory = SimpleStringProperty("")
private val directory = createStringBinding({ private val directory = createStringBinding({
File(rootDirectory.value, projectDirectory.value).absolutePath File(rootDirectory.value, projectDirectory.value).absolutePath
}, rootDirectory, projectDirectory) }, rootDirectory, projectDirectory)
private var onCompleteConsumer: ((Project) -> Unit)? = null
init { init {
directory.addListener { _, _, path -> projectVM.sourceDirectoryProperty.value = File(path) } directory.addListener { _, _, path -> projectVM.sourceDirectoryProperty.value = File(path) }
projectVM.nameProperty.addListener { _, _, name -> projectDirectory.value = name }
} }
var result = false fun onComplete(consumer: (Project) -> Unit) {
private set this.onCompleteConsumer = consumer
}
override val root = form { override val root = form {
fieldset("Project Settings") { fieldset("Project Settings") {
@@ -76,7 +81,7 @@ class ProjectSettingsFragment : Fragment("Project Settings") {
button("Ok") { button("Ok") {
action { action {
projectVM.commit { projectVM.commit {
result = true onCompleteConsumer?.let { it(projectVM.item) }
close() close()
} }
} }
@@ -84,10 +89,6 @@ class ProjectSettingsFragment : Fragment("Project Settings") {
shortcut("Enter") shortcut("Enter")
} }
button("Reset") {
action { projectVM.rollback() }
}
button("Cancel") { button("Cancel") {
action { close() } action { close() }
} }