[Editor] Improve ProjectSettingsFragment
This commit is contained in:
@@ -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() {
|
||||||
|
|||||||
@@ -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() }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user