Skip to content

Commit

Permalink
feat: statusbar icon, release note link (#32)
Browse files Browse the repository at this point in the history
* Moved context menu to status bar, same as in VS Code
  • Loading branch information
MarcinVaadin authored Apr 12, 2024
1 parent 3b5a778 commit 4671d9a
Show file tree
Hide file tree
Showing 6 changed files with 85 additions and 7 deletions.
44 changes: 44 additions & 0 deletions src/main/kotlin/com/vaadin/plugin/copilot/CopilotStatusBarPanel.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.vaadin.plugin.copilot

import com.intellij.openapi.actionSystem.ActionGroup
import com.intellij.openapi.actionSystem.ActionManager
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.IconManager

class CopilotStatusBarPanel(project: Project) : EditorBasedStatusBarPopup(project, false) {

override fun ID(): String {
return "CopilotStatusBarPanel"
}

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

override fun createPopup(context: DataContext): ListPopup? {
val group =
ActionManager.getInstance().getAction("CopilotStatusBarActions") as? ActionGroup ?: return null

return JBPopupFactory.getInstance()
.createActionGroupPopup(
null, group, context,
JBPopupFactory.ActionSelectionAid.SPEEDSEARCH, false
)
}

override fun getWidgetState(file: VirtualFile?): WidgetState {
if (!CopilotPluginUtil.isVaadinProject(project)) {
return WidgetState.HIDDEN
}

val state = WidgetState("Vaadin", null, true)
state.icon = IconManager.getInstance().getIcon("/icons/vaadin.svg", javaClass)
return state
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.vaadin.plugin.copilot

import com.intellij.openapi.project.Project
import com.intellij.openapi.wm.StatusBarWidget
import com.intellij.openapi.wm.StatusBarWidgetFactory

class CopilotStatusBarWidgetFactory : StatusBarWidgetFactory {

override fun getId(): String {
return "CopilotStatusBarWidgetFactory"
}

override fun getDisplayName(): String {
return "Vaadin"
}

override fun createWidget(project: Project): StatusBarWidget {
return CopilotStatusBarPanel(project)
}
}
19 changes: 13 additions & 6 deletions src/main/resources/META-INF/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,22 +25,29 @@
Read more: https://plugins.jetbrains.com/docs/intellij/plugin-compatibility.html -->
<depends>com.intellij.modules.platform</depends>

<change-notes>
<![CDATA[
<p>Check <a href="https://github.com/vaadin/intellij-plugin/releases">release notes at GitHub</a> for more information.</p>
]]>
</change-notes>

<!-- Extension points defined by the plugin.
Read more: https://plugins.jetbrains.com/docs/intellij/plugin-extension-points.html -->
<extensions defaultExtensionNs="com.intellij">
<notificationGroup id="Vaadin Copilot" displayType="BALLOON"/>
<projectService serviceImplementation="com.vaadin.plugin.copilot.service.CopilotServerServiceImpl"
serviceInterface="com.vaadin.plugin.copilot.service.CopilotServerService"/>
<postStartupActivity implementation="com.vaadin.plugin.copilot.activity.CopilotPostStartupProjectActivity"/>
<errorHandler implementation="com.vaadin.plugin.copilot.CopilotErrorHandler" />
<errorHandler implementation="com.vaadin.plugin.copilot.CopilotErrorHandler"/>
<statusBarWidgetFactory implementation="com.vaadin.plugin.copilot.CopilotStatusBarWidgetFactory"
id="CopilotStatusBarWidgetFactory" order="last"/>
</extensions>

<actions>
<action id="com.vaadin.plugin.copilot.action.ToggleServerAction"
class="com.vaadin.plugin.copilot.action.ToggleServerAction"
icon="/icons/copilot.svg">
<add-to-group group-id="ProjectViewPopupMenuRunGroup" anchor="last"/>
</action>
<group id="CopilotStatusBarActions" icon="/icons/vaadin.svg">
<action id="com.vaadin.plugin.copilot.action.ToggleServerAction"
class="com.vaadin.plugin.copilot.action.ToggleServerAction"/>
</group>
</actions>

<projectListeners>
Expand Down
1 change: 0 additions & 1 deletion src/main/resources/icons/copilot.svg

This file was deleted.

4 changes: 4 additions & 0 deletions src/main/resources/icons/vaadin.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions src/main/resources/icons/vaadin_dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 4671d9a

Please sign in to comment.