[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
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.property.ObjectProperty
import javafx.beans.property.SimpleStringProperty
import javafx.beans.value.ObservableValue
import tornadofx.getValue
import tornadofx.setValue
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 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]"
}

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.model.Asset
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.map.asset.GameMapAsset
import com.bartlomiejpluta.base.editor.project.context.ProjectContext
@@ -86,7 +86,7 @@ class AssetsListView : View() {
if (event.clickCount == 2) {
when (val item = selectionModel?.selectedItem?.value) {
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.viewmodel.CodeVM
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 javafx.beans.binding.Bindings
import org.kordamp.ikonli.javafx.FontIcon
@@ -27,7 +28,10 @@ class CodeEditorView : View() {
}
}, 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)

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
import com.bartlomiejpluta.base.editor.asset.model.Asset
import com.bartlomiejpluta.base.editor.file.model.ScriptAssetFileNode
import com.bartlomiejpluta.base.editor.project.model.Project
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.event.SelectMainViewTabEvent
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.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.image.view.importing.ImportImageFragment
import com.bartlomiejpluta.base.editor.image.viewmodel.ImageAssetDataVM
@@ -195,7 +195,6 @@ class MainController : Controller() {
.showAndWait()
.map(::WidgetAssetData)
.map(projectContext::createWidget)
.map(WidgetAsset::fileNode)
.ifPresent(this::openScript)
}
@@ -205,7 +204,7 @@ class MainController : Controller() {
openItems.remove(it)
}
is WidgetAsset -> closeScript(asset.fileNode)
is ScriptAssetFileNode -> closeScript(asset)
}
}