Shutting down executor service to that application can exit cleanly
This commit is contained in:
parent
34610d0572
commit
6e5af62be7
|
@ -8,9 +8,9 @@ import java.nio.file.Path
|
||||||
import tornadofx.getValue
|
import tornadofx.getValue
|
||||||
import tornadofx.observable
|
import tornadofx.observable
|
||||||
import tornadofx.setValue
|
import tornadofx.setValue
|
||||||
import java.util.concurrent.Executors
|
import java.util.concurrent.ExecutorService
|
||||||
|
|
||||||
class AnimationFileModel(animationFilePath: Path) {
|
class AnimationFileModel(animationFilePath: Path, private val executor: ExecutorService) {
|
||||||
val spineJson = SpineJson(animationFilePath)
|
val spineJson = SpineJson(animationFilePath)
|
||||||
|
|
||||||
val slotsProperty = SimpleObjectProperty<ObservableList<String>>()
|
val slotsProperty = SimpleObjectProperty<ObservableList<String>>()
|
||||||
|
@ -50,7 +50,6 @@ class AnimationFileModel(animationFilePath: Path) {
|
||||||
var mouthShapesError by mouthShapesErrorProperty
|
var mouthShapesError by mouthShapesErrorProperty
|
||||||
private set
|
private set
|
||||||
|
|
||||||
private val executor = Executors.newSingleThreadExecutor()
|
|
||||||
val audioFileModelsProperty = SimpleListProperty<AudioFileModel>(
|
val audioFileModelsProperty = SimpleListProperty<AudioFileModel>(
|
||||||
spineJson.audioEvents
|
spineJson.audioEvents
|
||||||
.map { event ->
|
.map { event ->
|
||||||
|
|
|
@ -8,8 +8,9 @@ import tornadofx.setValue
|
||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
||||||
import java.nio.file.InvalidPathException
|
import java.nio.file.InvalidPathException
|
||||||
import java.nio.file.Paths
|
import java.nio.file.Paths
|
||||||
|
import java.util.concurrent.ExecutorService
|
||||||
|
|
||||||
class MainModel {
|
class MainModel(private val executor: ExecutorService) {
|
||||||
val filePathStringProperty = SimpleStringProperty(getDefaultPathString()).alsoListen { value ->
|
val filePathStringProperty = SimpleStringProperty(getDefaultPathString()).alsoListen { value ->
|
||||||
filePathError = getExceptionMessage {
|
filePathError = getExceptionMessage {
|
||||||
animationFileModel = null
|
animationFileModel = null
|
||||||
|
@ -28,7 +29,7 @@ class MainModel {
|
||||||
throw Exception("File does not exist.")
|
throw Exception("File does not exist.")
|
||||||
}
|
}
|
||||||
|
|
||||||
animationFileModel = AnimationFileModel(path)
|
animationFileModel = AnimationFileModel(path, executor)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var filePathString by filePathStringProperty
|
var filePathString by filePathStringProperty
|
||||||
|
|
|
@ -14,10 +14,11 @@ import tornadofx.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.time.LocalDate
|
import java.time.LocalDate
|
||||||
import java.time.Period
|
import java.time.Period
|
||||||
|
import java.util.concurrent.Executors
|
||||||
|
|
||||||
class MainView : View() {
|
class MainView : View() {
|
||||||
|
private val executor = Executors.newSingleThreadExecutor()
|
||||||
val mainModel = MainModel()
|
private val mainModel = MainModel(executor)
|
||||||
|
|
||||||
class Person(val id: Int, val name: String, val birthday: LocalDate) {
|
class Person(val id: Int, val name: String, val birthday: LocalDate) {
|
||||||
val age: Int get() = Period.between(birthday, LocalDate.now()).years
|
val age: Int get() = Period.between(birthday, LocalDate.now()).years
|
||||||
|
@ -119,6 +120,10 @@ class MainView : View() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
whenUndocked {
|
||||||
|
executor.shutdownNow()
|
||||||
|
}
|
||||||
|
|
||||||
filePathButton!!.onAction = EventHandler<ActionEvent> {
|
filePathButton!!.onAction = EventHandler<ActionEvent> {
|
||||||
val fileChooser = FileChooser().apply {
|
val fileChooser = FileChooser().apply {
|
||||||
title = "Open Spine JSON file"
|
title = "Open Spine JSON file"
|
||||||
|
|
Loading…
Reference in New Issue