jetbrains-ui
JetBrains Plugin UI Guidelines
Detailed UI reference for packages/kilo-jetbrains/. See packages/kilo-jetbrains/AGENTS.md for the hard restrictions (no Compose/DSL/JCEF) and the reuse-first index; this skill covers the how.
Technology Choices
Do not use Kotlin UI DSL v2 (com.intellij.ui.dsl.builder) in this plugin. Use standard Swing with IntelliJ Platform components for all UI layout. The JetBrains modular template and some older sections of the codebase reference the DSL, but Kilo should not introduce it.
Do not use Kotlin Compose or intellij.platform.compose in this plugin. The JetBrains modular template uses Compose for its demo tool window, but Kilo should use standard Swing with IntelliJ Platform components only. Keep all plugin UI in the existing Swing-based stack.
Do not use JCEF (JBCefBrowser) in this plugin. JCEF does not work in JetBrains remote development (split mode): the frontend process runs on the client machine but JCEF requires a display on the host, making it effectively unusable for remote users. Use standard Swing with IntelliJ Platform components for all UI.
| Need | API |
|---|---|
| Any layout, forms, panels | Standard Swing with IntelliJ Platform component replacements |
| Tool windows | SimpleToolWindowPanel + ToolWindow.contentManager |
| Menus and toolbars | Action System |
| Dialogs | Extend DialogWrapper |