[Editor] Leverage Spring Framework to work as DI container
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id 'org.jetbrains.kotlin.jvm' version '1.4.10'
|
id 'org.jetbrains.kotlin.jvm' version '1.4.10'
|
||||||
id 'org.openjfx.javafxplugin' version '0.0.8'
|
id 'org.openjfx.javafxplugin' version '0.0.8'
|
||||||
|
id 'org.springframework.boot' version "$springBootVersion"
|
||||||
|
id 'io.spring.dependency-management' version "$springDependencyManagementVersion"
|
||||||
id 'idea'
|
id 'idea'
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -35,4 +37,7 @@ dependencies {
|
|||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib"
|
implementation "org.jetbrains.kotlin:kotlin-stdlib"
|
||||||
implementation "no.tornado:tornadofx:${tornadoFxVersion}"
|
implementation "no.tornado:tornadofx:${tornadoFxVersion}"
|
||||||
implementation "org.joml:joml:${jomlVersion}"
|
implementation "org.joml:joml:${jomlVersion}"
|
||||||
|
|
||||||
|
// Spring
|
||||||
|
implementation 'org.springframework.boot:spring-boot-starter'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,31 @@
|
|||||||
package com.bartlomiejpluta.base.editor
|
package com.bartlomiejpluta.base.editor
|
||||||
|
|
||||||
import com.bartlomiejpluta.base.editor.view.main.MainView
|
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 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>) {
|
fun main(args: Array<String>) {
|
||||||
launch<EditorApp>(args)
|
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.controller.tileset.TileSetController
|
||||||
import com.bartlomiejpluta.base.editor.model.map.map.GameMap
|
import com.bartlomiejpluta.base.editor.model.map.map.GameMap
|
||||||
|
import org.springframework.stereotype.Component
|
||||||
import tornadofx.Controller
|
import tornadofx.Controller
|
||||||
|
|
||||||
|
@Component
|
||||||
class MapController : Controller() {
|
class MapController : Controller() {
|
||||||
private val tileSetController: TileSetController by inject()
|
private val tileSetController: TileSetController by inject()
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package com.bartlomiejpluta.base.editor.controller.tileset
|
package com.bartlomiejpluta.base.editor.controller.tileset
|
||||||
|
|
||||||
import com.bartlomiejpluta.base.editor.model.map.tileset.TileSet
|
import com.bartlomiejpluta.base.editor.model.map.tileset.TileSet
|
||||||
|
import org.springframework.stereotype.Component
|
||||||
import tornadofx.Controller
|
import tornadofx.Controller
|
||||||
|
|
||||||
|
@Component
|
||||||
class TileSetController : Controller() {
|
class TileSetController : Controller() {
|
||||||
val tileset = TileSet(resources.image("/textures/tileset.png"), 160, 8)
|
val tileset = TileSet(resources.image("/textures/tileset.png"), 160, 8)
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,7 @@ import com.bartlomiejpluta.base.editor.view.fragment.MapFragment
|
|||||||
import tornadofx.*
|
import tornadofx.*
|
||||||
|
|
||||||
class MainView : View() {
|
class MainView : View() {
|
||||||
private val mapController: MapController by inject()
|
private val mapController: MapController by di()
|
||||||
private val mapFragment = find<MapFragment>()
|
private val mapFragment = find<MapFragment>()
|
||||||
|
|
||||||
override val root = borderpane {
|
override val root = borderpane {
|
||||||
|
|||||||
Reference in New Issue
Block a user