From 02acad538b88756e4f10740c6dc8a68ccde40b79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Fri, 12 Feb 2021 08:50:45 +0100 Subject: [PATCH] [Editor] Add Tile Sets list to project structure sidebar --- .../base/editor/main/view/MainView.kt | 6 +++++- .../editor/main/view/ProjectStructureView.kt | 21 ++++++++++++------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/main/view/MainView.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/main/view/MainView.kt index b4b3637f..3dc3984a 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/main/view/MainView.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/main/view/MainView.kt @@ -49,6 +49,10 @@ class MainView : View("BASE Game Editor") { }) } - left = projectStructureView.root + left = drawer(multiselect = true) { + item("Project Structure", expanded = true) { + this += projectStructureView + } + } } } \ No newline at end of file diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/main/view/ProjectStructureView.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/main/view/ProjectStructureView.kt index ad0081bf..8969a343 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/main/view/ProjectStructureView.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/main/view/ProjectStructureView.kt @@ -1,13 +1,14 @@ package com.bartlomiejpluta.base.editor.main.view +import com.bartlomiejpluta.base.editor.asset.model.Asset import com.bartlomiejpluta.base.editor.main.controller.MainController import com.bartlomiejpluta.base.editor.map.asset.GameMapAsset import com.bartlomiejpluta.base.editor.project.context.ProjectContext +import com.bartlomiejpluta.base.editor.tileset.asset.TileSetAsset import javafx.beans.binding.Bindings import javafx.beans.property.SimpleStringProperty import javafx.collections.ObservableList import javafx.scene.control.TreeItem -import javafx.scene.input.MouseEvent import org.kordamp.ikonli.javafx.FontIcon import tornadofx.* @@ -17,14 +18,19 @@ class ProjectStructureView : View() { private val mainController: MainController by di() private val structureMaps = StructureCategory("Maps") + private val structureTileSets = StructureCategory("Tile Sets") - private val structureRoot = StructureCategory(name = "Project", items = observableListOf(structureMaps)) + private val structureRoot = StructureCategory(name = "Project", items = observableListOf( + structureMaps, + structureTileSets + )) init { projectContext.projectProperty.addListener { _, _, project -> project?.let { structureRoot.nameProperty.bind(it.nameProperty) - Bindings.bindContent(structureMaps.items, project.maps) + Bindings.bindContent(structureMaps.items, it.maps) + Bindings.bindContent(structureTileSets.items, it.tileSets) root.root.expandAll() root.refresh() } @@ -35,16 +41,17 @@ class ProjectStructureView : View() { root = TreeItem(structureRoot) cellFormat { - graphic = when(it) { + graphic = when (it) { structureRoot -> FontIcon("fa-cog") is StructureCategory -> FontIcon("fa-folder") is GameMapAsset -> FontIcon("fa-map") + is TileSetAsset -> FontIcon("fa-th") else -> null } text = when (it) { is StructureCategory -> it.name - is GameMapAsset -> it.name + is Asset -> it.name else -> throw IllegalStateException("Unsupported structure item type") } } @@ -57,8 +64,8 @@ class ProjectStructureView : View() { } setOnMouseClicked { event -> - if(event.clickCount == 2) { - when(val item = selectionModel?.selectedItem?.value) { + if (event.clickCount == 2) { + when (val item = selectionModel?.selectedItem?.value) { is GameMapAsset -> mainController.openMap(item.uid) } }