diff --git a/editor/build.gradle b/editor/build.gradle index cf844691..dab0b70a 100755 --- a/editor/build.gradle +++ b/editor/build.gradle @@ -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' } diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/App.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/App.kt index 54c32462..5b5ead8e 100755 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/App.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/App.kt @@ -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 getInstance(type: KClass): T = context.getBean(type.java) + override fun getInstance(type: KClass, name: String): T = context.getBean(name, type.java) + } + } + + override fun stop() { + super.stop() + context.close() + } +} fun main(args: Array) { launch(args) diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/controller/map/MapController.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/controller/map/MapController.kt index 802ca277..9a68cf51 100755 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/controller/map/MapController.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/controller/map/MapController.kt @@ -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() diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/controller/tileset/TileSetController.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/controller/tileset/TileSetController.kt index eacd9d31..31fe5622 100755 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/controller/tileset/TileSetController.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/controller/tileset/TileSetController.kt @@ -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) } \ No newline at end of file diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/view/main/MainView.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/view/main/MainView.kt index 0df038b2..5efcc1bb 100755 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/view/main/MainView.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/view/main/MainView.kt @@ -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() override val root = borderpane {