From 3f47bfadceb78c21e7e2ba2cf15ea4982114adc2 Mon Sep 17 00:00:00 2001 From: DevSrSouza Date: Sun, 30 Aug 2020 00:57:32 -0300 Subject: [PATCH] adding highlight file for when is opening IntelliJ in a server folder with Bukkript --- .../kotlinbukkitapi/tooling/Assets.kt | 6 +- .../tooling/bukkript/BukkriptIconProvider.kt | 12 +- .../bukkript/BukkriptViewNodeDecorator.kt | 34 ++++ .../kotlinbukkitapi/tooling/bukkript/Utils.kt | 31 ++- src/main/resources/META-INF/plugin.xml | 2 + .../resources/assets/icons/folderBukkript.svg | 190 ++++++++++++++++++ .../resources/assets/icons/folderPlugins.svg | 58 ++++++ .../resources/assets/icons/folderScript.svg | 3 + 8 files changed, 331 insertions(+), 5 deletions(-) create mode 100644 src/main/kotlin/br/com/devsrsouza/kotlinbukkitapi/tooling/bukkript/BukkriptViewNodeDecorator.kt create mode 100644 src/main/resources/assets/icons/folderBukkript.svg create mode 100644 src/main/resources/assets/icons/folderPlugins.svg create mode 100644 src/main/resources/assets/icons/folderScript.svg diff --git a/src/main/kotlin/br/com/devsrsouza/kotlinbukkitapi/tooling/Assets.kt b/src/main/kotlin/br/com/devsrsouza/kotlinbukkitapi/tooling/Assets.kt index 97d452c..9868596 100644 --- a/src/main/kotlin/br/com/devsrsouza/kotlinbukkitapi/tooling/Assets.kt +++ b/src/main/kotlin/br/com/devsrsouza/kotlinbukkitapi/tooling/Assets.kt @@ -10,6 +10,8 @@ object Assets { private const val assetFolder = "/assets" - val KotlinBukkitAPIIcon = - load("$assetFolder/icons/kotlinbukkitapi-icon.svg") + val KotlinBukkitAPIIcon = load("$assetFolder/icons/kotlinbukkitapi-icon.svg") + val FolderScript = load("$assetFolder/icons/folderScript.svg") + val FolderPlugins = load("$assetFolder/icons/folderPlugins.svg") + val FolderBukkript = load("$assetFolder/icons/folderBukkript.svg") } \ No newline at end of file diff --git a/src/main/kotlin/br/com/devsrsouza/kotlinbukkitapi/tooling/bukkript/BukkriptIconProvider.kt b/src/main/kotlin/br/com/devsrsouza/kotlinbukkitapi/tooling/bukkript/BukkriptIconProvider.kt index 8d23781..f005961 100644 --- a/src/main/kotlin/br/com/devsrsouza/kotlinbukkitapi/tooling/bukkript/BukkriptIconProvider.kt +++ b/src/main/kotlin/br/com/devsrsouza/kotlinbukkitapi/tooling/bukkript/BukkriptIconProvider.kt @@ -1,5 +1,6 @@ package br.com.devsrsouza.kotlinbukkitapi.tooling.bukkript +import br.com.devsrsouza.kotlinbukkitapi.tooling.Assets import com.intellij.ide.IconProvider import com.intellij.openapi.project.DumbAware import com.intellij.psi.PsiElement @@ -8,8 +9,15 @@ import javax.swing.Icon class BukkriptIconProvider : IconProvider(), DumbAware { override fun getIcon(element: PsiElement, flags: Int): Icon? { - if(element is PsiFile && element.name.isBukkriptScript()) { - return BukkriptFileType.INSTANCE.icon + if(element is PsiFile) { + val file = element.virtualFile + return when { + file.isBukkriptScript() -> BukkriptFileType.INSTANCE.icon + file.isScriptFolder() -> Assets.FolderScript + file.isPluginsFolder() -> Assets.FolderPlugins + file.isBukkriptFolder() -> Assets.FolderBukkript + else -> null + } } else { return null } diff --git a/src/main/kotlin/br/com/devsrsouza/kotlinbukkitapi/tooling/bukkript/BukkriptViewNodeDecorator.kt b/src/main/kotlin/br/com/devsrsouza/kotlinbukkitapi/tooling/bukkript/BukkriptViewNodeDecorator.kt new file mode 100644 index 0000000..10a2215 --- /dev/null +++ b/src/main/kotlin/br/com/devsrsouza/kotlinbukkitapi/tooling/bukkript/BukkriptViewNodeDecorator.kt @@ -0,0 +1,34 @@ +package br.com.devsrsouza.kotlinbukkitapi.tooling.bukkript + +import br.com.devsrsouza.kotlinbukkitapi.tooling.Assets +import com.intellij.ide.projectView.PresentationData +import com.intellij.ide.projectView.ProjectViewNode +import com.intellij.ide.projectView.ProjectViewNodeDecorator +import com.intellij.packageDependencies.ui.PackageDependenciesNode +import com.intellij.ui.ColoredTreeCellRenderer + +class BukkriptViewNodeDecorator : ProjectViewNodeDecorator { + override fun decorate(node: ProjectViewNode<*>, data: PresentationData) { + val file = node.virtualFile ?: return + + println(file.name) + + val icon = when { + file.isScriptFolder() -> Assets.FolderScript + file.isPluginsFolder() -> Assets.FolderPlugins + file.isBukkriptFolder() -> Assets.FolderBukkript + else -> null + } + + println(icon) + + if(icon != null) { + node.icon = icon + data.setIcon(icon) + } + } + + override fun decorate(node: PackageDependenciesNode, cellRenderer: ColoredTreeCellRenderer) { + + } +} \ No newline at end of file diff --git a/src/main/kotlin/br/com/devsrsouza/kotlinbukkitapi/tooling/bukkript/Utils.kt b/src/main/kotlin/br/com/devsrsouza/kotlinbukkitapi/tooling/bukkript/Utils.kt index ab79972..b5d1b6c 100644 --- a/src/main/kotlin/br/com/devsrsouza/kotlinbukkitapi/tooling/bukkript/Utils.kt +++ b/src/main/kotlin/br/com/devsrsouza/kotlinbukkitapi/tooling/bukkript/Utils.kt @@ -1,3 +1,32 @@ package br.com.devsrsouza.kotlinbukkitapi.tooling.bukkript -fun String.isBukkriptScript() = endsWith(".$BUKKRIPT_EXTENSION", true) \ No newline at end of file +import com.intellij.openapi.vfs.VirtualFile +import java.io.File + +fun String.isBukkriptScript() = endsWith(".$BUKKRIPT_EXTENSION", true) + +fun VirtualFile.isBukkriptScript() = name.isBukkriptScript() + +fun VirtualFile.isScriptFolder(): Boolean { + if(name != "scripts") return false + + val bukkriptFodler = parent ?: return false + + return bukkriptFodler.isBukkriptFolder() +} + +fun VirtualFile.isPluginsFolder(): Boolean { + if(name != "plugins") return false + + val rootServerFolder = parent ?: return false + + return rootServerFolder.children?.find { it.name == "server.properties" } != null +} + +fun VirtualFile.isBukkriptFolder(): Boolean { + if(name != "Bukkript") return false + + val pluginsFolder = parent ?: return false + + return pluginsFolder.name == "plugins" +} \ No newline at end of file diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 942efc2..fa66e02 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -20,6 +20,8 @@ + + diff --git a/src/main/resources/assets/icons/folderBukkript.svg b/src/main/resources/assets/icons/folderBukkript.svg new file mode 100644 index 0000000..4c627ce --- /dev/null +++ b/src/main/resources/assets/icons/folderBukkript.svg @@ -0,0 +1,190 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/assets/icons/folderPlugins.svg b/src/main/resources/assets/icons/folderPlugins.svg new file mode 100644 index 0000000..d2b665d --- /dev/null +++ b/src/main/resources/assets/icons/folderPlugins.svg @@ -0,0 +1,58 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/main/resources/assets/icons/folderScript.svg b/src/main/resources/assets/icons/folderScript.svg new file mode 100644 index 0000000..b94cc04 --- /dev/null +++ b/src/main/resources/assets/icons/folderScript.svg @@ -0,0 +1,3 @@ + + +