[Editor] Create compiler logs drawer item
This commit is contained in:
@@ -1,8 +1,11 @@
|
|||||||
package com.bartlomiejpluta.base.editor.code.compiler
|
package com.bartlomiejpluta.base.editor.code.compiler
|
||||||
|
|
||||||
import com.bartlomiejpluta.base.editor.code.model.FileSystemNode
|
import com.bartlomiejpluta.base.editor.code.model.FileSystemNode
|
||||||
|
import com.bartlomiejpluta.base.editor.event.UpdateCompilationLogEvent
|
||||||
|
import org.codehaus.commons.compiler.CompileException
|
||||||
import org.codehaus.janino.CompilerFactory
|
import org.codehaus.janino.CompilerFactory
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
|
import tornadofx.FX
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@@ -13,6 +16,10 @@ class JavaCompiler : ScriptCompiler {
|
|||||||
val files = sourceDirectory.allChildren.map(FileSystemNode::file).filter(File::isFile)
|
val files = sourceDirectory.allChildren.map(FileSystemNode::file).filter(File::isFile)
|
||||||
val compiler = compilerFactory.newCompiler()
|
val compiler = compilerFactory.newCompiler()
|
||||||
|
|
||||||
|
try {
|
||||||
compiler.compile(files.toTypedArray())
|
compiler.compile(files.toTypedArray())
|
||||||
|
} catch (e: CompileException) {
|
||||||
|
FX.eventbus.fire(UpdateCompilationLogEvent(e.message ?: "", e.location))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package com.bartlomiejpluta.base.editor.code.view
|
||||||
|
|
||||||
|
import com.bartlomiejpluta.base.editor.event.UpdateCompilationLogEvent
|
||||||
|
import org.fxmisc.richtext.CodeArea
|
||||||
|
import tornadofx.View
|
||||||
|
import tornadofx.enableWhen
|
||||||
|
import tornadofx.toProperty
|
||||||
|
|
||||||
|
class CompilerLogsView : View() {
|
||||||
|
private val editor = CodeArea().apply {
|
||||||
|
enableWhen(false.toProperty())
|
||||||
|
}
|
||||||
|
|
||||||
|
init {
|
||||||
|
subscribe<UpdateCompilationLogEvent> {
|
||||||
|
editor.clear()
|
||||||
|
editor.replaceText(0, 0, it.message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override val root = editor
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.bartlomiejpluta.base.editor.event
|
||||||
|
|
||||||
|
import org.codehaus.commons.compiler.Location
|
||||||
|
import tornadofx.EventBus
|
||||||
|
import tornadofx.FXEvent
|
||||||
|
|
||||||
|
data class UpdateCompilationLogEvent(val message: String, val location: Location) :
|
||||||
|
FXEvent(EventBus.RunOn.ApplicationThread)
|
||||||
@@ -3,8 +3,10 @@ package com.bartlomiejpluta.base.editor.main.view
|
|||||||
import com.bartlomiejpluta.base.editor.asset.view.list.AssetsListView
|
import com.bartlomiejpluta.base.editor.asset.view.list.AssetsListView
|
||||||
import com.bartlomiejpluta.base.editor.code.model.Code
|
import com.bartlomiejpluta.base.editor.code.model.Code
|
||||||
import com.bartlomiejpluta.base.editor.code.view.CodeEditorFragment
|
import com.bartlomiejpluta.base.editor.code.view.CodeEditorFragment
|
||||||
|
import com.bartlomiejpluta.base.editor.code.view.CompilerLogsView
|
||||||
import com.bartlomiejpluta.base.editor.code.view.ScriptFilesView
|
import com.bartlomiejpluta.base.editor.code.view.ScriptFilesView
|
||||||
import com.bartlomiejpluta.base.editor.code.viewmodel.CodeVM
|
import com.bartlomiejpluta.base.editor.code.viewmodel.CodeVM
|
||||||
|
import com.bartlomiejpluta.base.editor.event.UpdateCompilationLogEvent
|
||||||
import com.bartlomiejpluta.base.editor.main.controller.MainController
|
import com.bartlomiejpluta.base.editor.main.controller.MainController
|
||||||
import com.bartlomiejpluta.base.editor.map.model.map.GameMap
|
import com.bartlomiejpluta.base.editor.map.model.map.GameMap
|
||||||
import com.bartlomiejpluta.base.editor.map.view.editor.MapFragment
|
import com.bartlomiejpluta.base.editor.map.view.editor.MapFragment
|
||||||
@@ -24,14 +26,21 @@ class MainView : View("BASE Game Editor") {
|
|||||||
private val mainMenuView = find<MainMenuView>()
|
private val mainMenuView = find<MainMenuView>()
|
||||||
private val assetsView = find<AssetsListView>()
|
private val assetsView = find<AssetsListView>()
|
||||||
private val scriptFilesView = find<ScriptFilesView>()
|
private val scriptFilesView = find<ScriptFilesView>()
|
||||||
|
private val compilerLogsView = find<CompilerLogsView>()
|
||||||
|
|
||||||
private val openTabs = mutableMapOf<Scope, Tab>()
|
private val openTabs = mutableMapOf<Scope, Tab>()
|
||||||
|
|
||||||
|
private var compilationLogItem: DrawerItem by singleAssign()
|
||||||
|
|
||||||
init {
|
init {
|
||||||
projectContext.projectProperty.addListener { _, _, project ->
|
projectContext.projectProperty.addListener { _, _, project ->
|
||||||
val projectName = project?.let { " :: ${it.name} (${it.sourceDirectory.absolutePath})" } ?: ""
|
val projectName = project?.let { " :: ${it.name} (${it.sourceDirectory.absolutePath})" } ?: ""
|
||||||
title = "BASE Game Editor$projectName"
|
title = "BASE Game Editor$projectName"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
subscribe<UpdateCompilationLogEvent> {
|
||||||
|
compilationLogItem.expanded = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override val root = borderpane {
|
override val root = borderpane {
|
||||||
@@ -77,14 +86,20 @@ class MainView : View("BASE Game Editor") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
left = drawer(multiselect = true) {
|
left = drawer(multiselect = true) {
|
||||||
item("Code", expanded = true) {
|
item("Code", expanded = false) {
|
||||||
this += scriptFilesView
|
this += scriptFilesView
|
||||||
}
|
}
|
||||||
|
|
||||||
item("Assets", expanded = true) {
|
item("Assets", expanded = false) {
|
||||||
this += assetsView
|
this += assetsView
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bottom = drawer(multiselect = true) {
|
||||||
|
compilationLogItem = item("Compilation Log") {
|
||||||
|
this += compilerLogsView
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createTab(scope: Scope, item: Any) = when (item) {
|
private fun createTab(scope: Scope, item: Any) = when (item) {
|
||||||
|
|||||||
Reference in New Issue
Block a user