[Editor] Improve WidgetAsset - replace widget editor tab name with actual widget name

This commit is contained in:
2021-03-15 18:19:59 +01:00
parent c8a8cd99c6
commit 86bc5bb01c
6 changed files with 44 additions and 14 deletions

View File

@@ -1,11 +1,8 @@
package com.bartlomiejpluta.base.editor.asset.model package com.bartlomiejpluta.base.editor.asset.model
import com.bartlomiejpluta.base.editor.file.model.FileNode
import com.bartlomiejpluta.base.editor.file.model.FileSystemNode
import javafx.beans.binding.Bindings.createObjectBinding import javafx.beans.binding.Bindings.createObjectBinding
import javafx.beans.property.ObjectProperty import javafx.beans.property.ObjectProperty
import javafx.beans.property.SimpleStringProperty import javafx.beans.property.SimpleStringProperty
import javafx.beans.value.ObservableValue
import tornadofx.getValue import tornadofx.getValue
import tornadofx.setValue import tornadofx.setValue
import java.io.File import java.io.File
@@ -17,8 +14,5 @@ abstract class Asset(directory: ObjectProperty<File>, val uid: String, val sourc
val fileProperty = createObjectBinding({ File(directory.value, source) }, directory) val fileProperty = createObjectBinding({ File(directory.value, source) }, directory)
val file by fileProperty val file by fileProperty
val fileNodeProperty: ObservableValue<FileNode> = createObjectBinding({ FileSystemNode(file) }, fileProperty)
val fileNode by fileNodeProperty
override fun toString() = "${this.javaClass.simpleName}[name=$name, uid=$uid]" override fun toString() = "${this.javaClass.simpleName}[name=$name, uid=$uid]"
} }

View File

@@ -3,7 +3,7 @@ package com.bartlomiejpluta.base.editor.asset.view.list
import com.bartlomiejpluta.base.editor.asset.component.AssetTreeCell import com.bartlomiejpluta.base.editor.asset.component.AssetTreeCell
import com.bartlomiejpluta.base.editor.asset.model.Asset import com.bartlomiejpluta.base.editor.asset.model.Asset
import com.bartlomiejpluta.base.editor.asset.model.AssetCategory import com.bartlomiejpluta.base.editor.asset.model.AssetCategory
import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAsset import com.bartlomiejpluta.base.editor.file.model.ScriptAssetFileNode
import com.bartlomiejpluta.base.editor.main.controller.MainController import com.bartlomiejpluta.base.editor.main.controller.MainController
import com.bartlomiejpluta.base.editor.map.asset.GameMapAsset import com.bartlomiejpluta.base.editor.map.asset.GameMapAsset
import com.bartlomiejpluta.base.editor.project.context.ProjectContext import com.bartlomiejpluta.base.editor.project.context.ProjectContext
@@ -86,7 +86,7 @@ class AssetsListView : View() {
if (event.clickCount == 2) { if (event.clickCount == 2) {
when (val item = selectionModel?.selectedItem?.value) { when (val item = selectionModel?.selectedItem?.value) {
is GameMapAsset -> mainController.openMap(item.uid) is GameMapAsset -> mainController.openMap(item.uid)
is WidgetAsset -> mainController.openScript(item.fileNode) is ScriptAssetFileNode -> mainController.openScript(item)
} }
} }

View File

@@ -6,6 +6,7 @@ import com.bartlomiejpluta.base.editor.code.model.CodeScope
import com.bartlomiejpluta.base.editor.code.model.CodeType import com.bartlomiejpluta.base.editor.code.model.CodeType
import com.bartlomiejpluta.base.editor.code.viewmodel.CodeVM import com.bartlomiejpluta.base.editor.code.viewmodel.CodeVM
import com.bartlomiejpluta.base.editor.file.model.FileSystemNode import com.bartlomiejpluta.base.editor.file.model.FileSystemNode
import com.bartlomiejpluta.base.editor.file.model.ScriptAssetFileNode
import com.bartlomiejpluta.base.editor.project.context.ProjectContext import com.bartlomiejpluta.base.editor.project.context.ProjectContext
import javafx.beans.binding.Bindings import javafx.beans.binding.Bindings
import org.kordamp.ikonli.javafx.FontIcon import org.kordamp.ikonli.javafx.FontIcon
@@ -27,7 +28,10 @@ class CodeEditorView : View() {
} }
}, codeVM.typeProperty) }, codeVM.typeProperty)
private val editable = Bindings.createBooleanBinding({ codeVM.fileNode is FileSystemNode }, codeVM.itemProperty) private val editable = Bindings.createBooleanBinding(
{ codeVM.fileNode is FileSystemNode || codeVM.fileNode is ScriptAssetFileNode },
codeVM.itemProperty
)
private val editor = CodeEditor(highlighter, codeVM.codeProperty, !editable.value) private val editor = CodeEditor(highlighter, codeVM.codeProperty, !editable.value)

View File

@@ -0,0 +1,33 @@
package com.bartlomiejpluta.base.editor.file.model
import com.bartlomiejpluta.base.editor.asset.model.Asset
import javafx.beans.property.ObjectProperty
import javafx.beans.property.ReadOnlyLongWrapper
import javafx.beans.property.ReadOnlyStringWrapper
import tornadofx.getValue
import java.io.File
abstract class ScriptAssetFileNode(directory: ObjectProperty<File>, uid: String, extension: String, name: String) :
Asset(directory, uid, "$uid.$extension", name), FileNode {
final override val extensionProperty = ReadOnlyStringWrapper(extension)
override val extension by extensionProperty
final override val nameWithoutExtensionProperty = ReadOnlyStringWrapper(name)
override val nameWithoutExtension by nameWithoutExtensionProperty
final override val absolutePathProperty = ReadOnlyStringWrapper(file.absolutePath)
override val absolutePath by absolutePathProperty
override val type = FileType.FILE
override val parent = null
override val children = emptyList<FileNode>()
final override val lastModifiedProperty = ReadOnlyLongWrapper(file.lastModified())
override val lastModified by lastModifiedProperty
override fun inputStream() = file.inputStream()
override fun outputStream() = file.outputStream()
}

View File

@@ -1,7 +1,7 @@
package com.bartlomiejpluta.base.editor.gui.widget.asset package com.bartlomiejpluta.base.editor.gui.widget.asset
import com.bartlomiejpluta.base.editor.asset.model.Asset import com.bartlomiejpluta.base.editor.file.model.ScriptAssetFileNode
import com.bartlomiejpluta.base.editor.project.model.Project import com.bartlomiejpluta.base.editor.project.model.Project
class WidgetAsset(project: Project, uid: String, name: String) : class WidgetAsset(project: Project, uid: String, name: String) :
Asset(project.widgetsDirectoryProperty, uid, "$uid.xml", name) ScriptAssetFileNode(project.widgetsDirectoryProperty, uid, "xml", name)

View File

@@ -9,9 +9,9 @@ import com.bartlomiejpluta.base.editor.entityset.view.importing.ImportEntitySetF
import com.bartlomiejpluta.base.editor.entityset.viewmodel.EntitySetAssetDataVM import com.bartlomiejpluta.base.editor.entityset.viewmodel.EntitySetAssetDataVM
import com.bartlomiejpluta.base.editor.event.SelectMainViewTabEvent import com.bartlomiejpluta.base.editor.event.SelectMainViewTabEvent
import com.bartlomiejpluta.base.editor.file.model.FileNode import com.bartlomiejpluta.base.editor.file.model.FileNode
import com.bartlomiejpluta.base.editor.file.model.ScriptAssetFileNode
import com.bartlomiejpluta.base.editor.gui.font.view.importing.ImportFontFragment import com.bartlomiejpluta.base.editor.gui.font.view.importing.ImportFontFragment
import com.bartlomiejpluta.base.editor.gui.font.viewmodel.FontAssetDataVM import com.bartlomiejpluta.base.editor.gui.font.viewmodel.FontAssetDataVM
import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAsset
import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAssetData import com.bartlomiejpluta.base.editor.gui.widget.asset.WidgetAssetData
import com.bartlomiejpluta.base.editor.image.view.importing.ImportImageFragment import com.bartlomiejpluta.base.editor.image.view.importing.ImportImageFragment
import com.bartlomiejpluta.base.editor.image.viewmodel.ImageAssetDataVM import com.bartlomiejpluta.base.editor.image.viewmodel.ImageAssetDataVM
@@ -195,7 +195,6 @@ class MainController : Controller() {
.showAndWait() .showAndWait()
.map(::WidgetAssetData) .map(::WidgetAssetData)
.map(projectContext::createWidget) .map(projectContext::createWidget)
.map(WidgetAsset::fileNode)
.ifPresent(this::openScript) .ifPresent(this::openScript)
} }
@@ -205,7 +204,7 @@ class MainController : Controller() {
openItems.remove(it) openItems.remove(it)
} }
is WidgetAsset -> closeScript(asset.fileNode) is ScriptAssetFileNode -> closeScript(asset)
} }
} }