[Editor] Leverage Spring Framework to work as DI container
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
plugins {
|
||||
id 'org.jetbrains.kotlin.jvm' version '1.4.10'
|
||||
id 'org.openjfx.javafxplugin' version '0.0.8'
|
||||
id 'org.springframework.boot' version "$springBootVersion"
|
||||
id 'io.spring.dependency-management' version "$springDependencyManagementVersion"
|
||||
id 'idea'
|
||||
}
|
||||
|
||||
@@ -35,4 +37,7 @@ dependencies {
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib"
|
||||
implementation "no.tornado:tornadofx:${tornadoFxVersion}"
|
||||
implementation "org.joml:joml:${jomlVersion}"
|
||||
|
||||
// Spring
|
||||
implementation 'org.springframework.boot:spring-boot-starter'
|
||||
}
|
||||
|
||||
@@ -1,10 +1,31 @@
|
||||
package com.bartlomiejpluta.base.editor
|
||||
|
||||
import com.bartlomiejpluta.base.editor.view.main.MainView
|
||||
import org.springframework.boot.SpringApplication
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication
|
||||
import org.springframework.context.ConfigurableApplicationContext
|
||||
import tornadofx.*
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
@SpringBootApplication
|
||||
open class EditorApp : App(MainView::class) {
|
||||
private lateinit var context: ConfigurableApplicationContext
|
||||
|
||||
class EditorApp : App(MainView::class)
|
||||
override fun init() {
|
||||
this.context = SpringApplication.run(this.javaClass)
|
||||
context.autowireCapableBeanFactory.autowireBean(this)
|
||||
|
||||
FX.dicontainer = object : DIContainer {
|
||||
override fun <T : Any> getInstance(type: KClass<T>): T = context.getBean(type.java)
|
||||
override fun <T : Any> getInstance(type: KClass<T>, name: String): T = context.getBean(name, type.java)
|
||||
}
|
||||
}
|
||||
|
||||
override fun stop() {
|
||||
super.stop()
|
||||
context.close()
|
||||
}
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
launch<EditorApp>(args)
|
||||
|
||||
@@ -2,8 +2,10 @@ package com.bartlomiejpluta.base.editor.controller.map
|
||||
|
||||
import com.bartlomiejpluta.base.editor.controller.tileset.TileSetController
|
||||
import com.bartlomiejpluta.base.editor.model.map.map.GameMap
|
||||
import org.springframework.stereotype.Component
|
||||
import tornadofx.Controller
|
||||
|
||||
@Component
|
||||
class MapController : Controller() {
|
||||
private val tileSetController: TileSetController by inject()
|
||||
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package com.bartlomiejpluta.base.editor.controller.tileset
|
||||
|
||||
import com.bartlomiejpluta.base.editor.model.map.tileset.TileSet
|
||||
import org.springframework.stereotype.Component
|
||||
import tornadofx.Controller
|
||||
|
||||
@Component
|
||||
class TileSetController : Controller() {
|
||||
val tileset = TileSet(resources.image("/textures/tileset.png"), 160, 8)
|
||||
}
|
||||
@@ -5,7 +5,7 @@ import com.bartlomiejpluta.base.editor.view.fragment.MapFragment
|
||||
import tornadofx.*
|
||||
|
||||
class MainView : View() {
|
||||
private val mapController: MapController by inject()
|
||||
private val mapController: MapController by di()
|
||||
private val mapFragment = find<MapFragment>()
|
||||
|
||||
override val root = borderpane {
|
||||
|
||||
Reference in New Issue
Block a user