From c23e69c9b939f698c4a5780233081e8245b95ce1 Mon Sep 17 00:00:00 2001 From: JohannesIBK Date: Sun, 19 May 2024 12:17:46 +0200 Subject: [PATCH] Update widgets (#59) * remove taskbar widget * update lsp widget entry - add the biome icon - add button to the settings page --- .../biomejs/intellijbiome/BiomeIcons.kt | 8 ++ .../lsp/BiomeLspServerSupportProvider.kt | 8 ++ .../widgets/BiomeStatusBarWidgetFactory.kt | 19 ---- .../intellijbiome/widgets/BiomeWidget.kt | 88 ------------------- src/main/resources/META-INF/plugin.xml | 2 - .../resources/messages/BiomeBundle.properties | 4 - 6 files changed, 16 insertions(+), 113 deletions(-) create mode 100644 src/main/kotlin/com/github/biomejs/intellijbiome/BiomeIcons.kt delete mode 100644 src/main/kotlin/com/github/biomejs/intellijbiome/widgets/BiomeStatusBarWidgetFactory.kt delete mode 100644 src/main/kotlin/com/github/biomejs/intellijbiome/widgets/BiomeWidget.kt diff --git a/src/main/kotlin/com/github/biomejs/intellijbiome/BiomeIcons.kt b/src/main/kotlin/com/github/biomejs/intellijbiome/BiomeIcons.kt new file mode 100644 index 0000000..8368a85 --- /dev/null +++ b/src/main/kotlin/com/github/biomejs/intellijbiome/BiomeIcons.kt @@ -0,0 +1,8 @@ +package com.github.biomejs.intellijbiome + +import com.intellij.openapi.util.IconLoader + +object BiomeIcons { + @JvmField + val BiomeIcon = IconLoader.getIcon("/icons/pluginIcon.svg", javaClass) +} diff --git a/src/main/kotlin/com/github/biomejs/intellijbiome/lsp/BiomeLspServerSupportProvider.kt b/src/main/kotlin/com/github/biomejs/intellijbiome/lsp/BiomeLspServerSupportProvider.kt index 9c3fe2b..e716e40 100644 --- a/src/main/kotlin/com/github/biomejs/intellijbiome/lsp/BiomeLspServerSupportProvider.kt +++ b/src/main/kotlin/com/github/biomejs/intellijbiome/lsp/BiomeLspServerSupportProvider.kt @@ -1,10 +1,12 @@ package com.github.biomejs.intellijbiome.lsp import com.github.biomejs.intellijbiome.BiomeBundle +import com.github.biomejs.intellijbiome.BiomeIcons import com.github.biomejs.intellijbiome.BiomePackage import com.github.biomejs.intellijbiome.extensions.runBiomeCLI import com.github.biomejs.intellijbiome.listeners.BIOME_CONFIG_RESOLVED_TOPIC import com.github.biomejs.intellijbiome.services.BiomeServerService +import com.github.biomejs.intellijbiome.settings.BiomeConfigurable import com.github.biomejs.intellijbiome.settings.BiomeSettings import com.intellij.execution.ExecutionException import com.intellij.execution.configurations.GeneralCommandLine @@ -13,6 +15,7 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.VirtualFile import com.intellij.platform.lsp.api.* import com.intellij.platform.lsp.api.customization.LspFormattingSupport +import com.intellij.platform.lsp.api.lsWidget.LspServerWidgetItem import com.intellij.util.SmartList @@ -34,6 +37,11 @@ class BiomeLspServerSupportProvider : LspServerSupportProvider { val executable = BiomePackage(project).binaryPath(configPath, false) ?: return serverStarter.ensureServerStarted(BiomeLspServerDescriptor(project, executable, configPath)) } + + override fun createLspServerWidgetItem(lspServer: LspServer, currentFile: VirtualFile?) = LspServerWidgetItem( + lspServer, currentFile, + BiomeIcons.BiomeIcon, BiomeConfigurable::class.java + ) } @Suppress("UnstableApiUsage") diff --git a/src/main/kotlin/com/github/biomejs/intellijbiome/widgets/BiomeStatusBarWidgetFactory.kt b/src/main/kotlin/com/github/biomejs/intellijbiome/widgets/BiomeStatusBarWidgetFactory.kt deleted file mode 100644 index 85b8200..0000000 --- a/src/main/kotlin/com/github/biomejs/intellijbiome/widgets/BiomeStatusBarWidgetFactory.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.github.biomejs.intellijbiome.widgets - -import com.intellij.openapi.project.Project -import com.intellij.openapi.wm.StatusBarWidget -import com.intellij.openapi.wm.StatusBarWidgetFactory - -class BiomeStatusBarWidgetFactory : StatusBarWidgetFactory { - override fun getId(): String { - return "BiomeWidget" - } - - override fun getDisplayName(): String { - return "Biome" - } - - override fun createWidget(project: Project): StatusBarWidget { - return BiomeWidget(project) - } -} diff --git a/src/main/kotlin/com/github/biomejs/intellijbiome/widgets/BiomeWidget.kt b/src/main/kotlin/com/github/biomejs/intellijbiome/widgets/BiomeWidget.kt deleted file mode 100644 index be1908e..0000000 --- a/src/main/kotlin/com/github/biomejs/intellijbiome/widgets/BiomeWidget.kt +++ /dev/null @@ -1,88 +0,0 @@ -package com.github.biomejs.intellijbiome.widgets - -import com.github.biomejs.intellijbiome.BiomeBundle -import com.github.biomejs.intellijbiome.BiomePackage -import com.github.biomejs.intellijbiome.listeners.BIOME_CONFIG_RESOLVED_TOPIC -import com.github.biomejs.intellijbiome.listeners.BiomeConfigResolvedListener -import com.github.biomejs.intellijbiome.lsp.BiomeLspServerSupportProvider -import com.github.biomejs.intellijbiome.settings.BiomeSettings -import com.intellij.openapi.diagnostic.Logger -import com.intellij.openapi.progress.ProgressManager -import com.intellij.openapi.project.Project -import com.intellij.openapi.wm.StatusBarWidget -import com.intellij.openapi.wm.StatusBarWidget.WidgetPresentation -import com.intellij.openapi.wm.impl.status.EditorBasedWidget -import com.intellij.platform.lsp.api.LspServerManager -import com.intellij.platform.lsp.impl.LspServerImpl - -class BiomeWidget(project: Project) : EditorBasedWidget(project), StatusBarWidget, - StatusBarWidget.MultipleTextValuesPresentation { - private val logger: Logger = Logger.getInstance(javaClass) - private val biomePackage = BiomePackage(project) - - init { - project - .messageBus - .connect(this) - .subscribe(BIOME_CONFIG_RESOLVED_TOPIC, object : BiomeConfigResolvedListener { - override fun resolved(version: String) { - update() - } - }) - } - - override fun ID(): String { - return javaClass.name - } - - override fun getPresentation(): WidgetPresentation { - return this - } - - override fun getSelectedValue(): String? { - val settings = BiomeSettings.getInstance(project) - if (!settings.isEnabled()) { - return null - } - - val progressManager = ProgressManager.getInstance() - val version = progressManager.runProcessWithProgressSynchronously({ - biomePackage.versionNumber() - }, BiomeBundle.message("biome.loading"), true, project) - - if (version.isNullOrEmpty()) { - return null - } - - return BiomeBundle.message("biome.widget.version", version) - } - - override fun getTooltipText(): String { - val lspServerManager = LspServerManager.getInstance(project) - val lspServer = lspServerManager.getServersForProvider(BiomeLspServerSupportProvider::class.java).firstOrNull() - - return when (lspServer) { - is LspServerImpl -> { - if (lspServer.isRunning) { - BiomeBundle.message("biome.language.server.is.running") - } else { - BiomeBundle.message("biome.language.server.is.stopped") - } - } - - else -> { - BiomeBundle.message("biome.language.server.is.stopped") - } - } - } - - private fun update() { - if (myStatusBar == null) { - logger.warn("Failed to update biome statusbar") - return - } - - myStatusBar!!.updateWidget(ID()) - } - -} diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 961974d..d179bfd 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -24,8 +24,6 @@ -