From c9a73cd98f68498438060c25bb719e2dd877ddc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Fri, 12 Feb 2021 08:44:06 +0100 Subject: [PATCH] [Editor] Improve ProjectSettingsFragment --- .../editor/main/controller/MainController.kt | 15 ++++++++------- .../project/view/ProjectSettingsFragment.kt | 17 +++++++++-------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/main/controller/MainController.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/main/controller/MainController.kt index 433926ea..b77f76f3 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/main/controller/MainController.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/main/controller/MainController.kt @@ -23,16 +23,17 @@ class MainController : Controller() { val openMaps = observableMapOf() fun createEmptyProject() { - val project = Project() - val vm = ProjectVM(project) + val vm = ProjectVM(Project()) setInScope(vm) - val modal = find().apply { openModal(block = true, resizable = false) } + find().apply { + onComplete { + openMaps.clear() + projectContext.project = it + projectContext.save() + } - if (modal.result) { - openMaps.clear() - projectContext.project = project - projectContext.save() + openModal(block = true, resizable = false) } } diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/project/view/ProjectSettingsFragment.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/project/view/ProjectSettingsFragment.kt index 749623f8..3ceba004 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/project/view/ProjectSettingsFragment.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/project/view/ProjectSettingsFragment.kt @@ -1,5 +1,6 @@ package com.bartlomiejpluta.base.editor.project.view +import com.bartlomiejpluta.base.editor.project.model.Project import com.bartlomiejpluta.base.editor.project.viewmodel.ProjectVM import javafx.beans.binding.Bindings import javafx.beans.binding.Bindings.createStringBinding @@ -9,19 +10,23 @@ import java.io.File class ProjectSettingsFragment : Fragment("Project Settings") { private val projectVM = find(FX.defaultScope) - private val rootDirectory = SimpleStringProperty("") + private val projectDirectory = SimpleStringProperty("") private val directory = createStringBinding({ File(rootDirectory.value, projectDirectory.value).absolutePath }, rootDirectory, projectDirectory) + private var onCompleteConsumer: ((Project) -> Unit)? = null + init { directory.addListener { _, _, path -> projectVM.sourceDirectoryProperty.value = File(path) } + projectVM.nameProperty.addListener { _, _, name -> projectDirectory.value = name } } - var result = false - private set + fun onComplete(consumer: (Project) -> Unit) { + this.onCompleteConsumer = consumer + } override val root = form { fieldset("Project Settings") { @@ -76,7 +81,7 @@ class ProjectSettingsFragment : Fragment("Project Settings") { button("Ok") { action { projectVM.commit { - result = true + onCompleteConsumer?.let { it(projectVM.item) } close() } } @@ -84,10 +89,6 @@ class ProjectSettingsFragment : Fragment("Project Settings") { shortcut("Enter") } - button("Reset") { - action { projectVM.rollback() } - } - button("Cancel") { action { close() } }