Skip to content

Commit

Permalink
Simplify widget
Browse files Browse the repository at this point in the history
  • Loading branch information
MarcinVaadin committed Dec 6, 2024
1 parent dcfc63f commit 78391fb
Showing 1 changed file with 16 additions and 29 deletions.
45 changes: 16 additions & 29 deletions src/main/kotlin/com/vaadin/plugin/ui/VaadinStatusBarWidget.kt
Original file line number Diff line number Diff line change
@@ -1,65 +1,52 @@
package com.vaadin.plugin.ui

import com.intellij.openapi.actionSystem.DataContext
import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.popup.JBPopupFactory
import com.intellij.openapi.ui.popup.ListPopup
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.openapi.wm.StatusBarWidget
import com.intellij.openapi.wm.impl.status.EditorBasedStatusBarPopup
import com.intellij.ui.BadgeIconSupplier
import com.intellij.ui.awt.RelativePoint
import com.intellij.util.Consumer
import com.vaadin.plugin.copilot.CopilotPluginUtil
import com.vaadin.plugin.utils.VaadinIcons
import com.vaadin.plugin.utils.hasEndpoints
import java.awt.event.MouseEvent
import javax.swing.Icon

class VaadinStatusBarWidget(project: Project) : EditorBasedStatusBarPopup(project, false) {
class VaadinStatusBarWidget(private val project: Project) : StatusBarWidget, StatusBarWidget.IconPresentation {

companion object {
const val ID = "VaadinStatusBarPanel"
}

private val iconSupplier: BadgeIconSupplier = BadgeIconSupplier(VaadinIcons.VAADIN)

private var clicked: Boolean = false

override fun ID(): String {
return ID
}

override fun createInstance(project: Project): StatusBarWidget {
return VaadinStatusBarWidget(project)
}

override fun createPopup(context: DataContext): ListPopup? {
clicked = true
val popup = VaadinStatusBarInfoPopupPanel(isCopilotActive(), hasEndpoints())
JBPopupFactory.getInstance()
.createComponentPopupBuilder(popup, null)
.createPopup()
.showInBestPositionFor(context)
return null
override fun getPresentation(): StatusBarWidget.WidgetPresentation {
return this
}

override fun getWidgetState(file: VirtualFile?): WidgetState {
val state = WidgetState(getTooltip(), null, true)
state.icon = getIcon()
return state
override fun getClickConsumer(): Consumer<MouseEvent> {
return Consumer {
val popup = VaadinStatusBarInfoPopupPanel(isCopilotActive(), hasEndpoints())
JBPopupFactory.getInstance()
.createComponentPopupBuilder(popup, null)
.createPopup()
.show(RelativePoint.fromScreen(it.locationOnScreen))
}
}

private fun getTooltip(): String {
override fun getTooltipText(): String {
if (!isCopilotActive() || !hasEndpoints()) {
return "There are issues while running Vaadin plugin, click to see details"
}

return "Vaadin plugin is active"
}

private fun getIcon(): Icon {
if (clicked) {
return iconSupplier.originalIcon
}

override fun getIcon(): Icon {
if (!isCopilotActive() || !hasEndpoints()) {
return iconSupplier.warningIcon
}
Expand Down

0 comments on commit 78391fb

Please sign in to comment.