Avoid line breaks to reduce vertical space

This commit is contained in:
Karol Lewandowski 2023-04-26 09:09:26 +02:00
parent 671df2c310
commit df1c717bb8
7 changed files with 55 additions and 43 deletions

View File

@ -91,15 +91,15 @@ _Early Access Program_ (EAP) releases of upcoming versions are available [here](
See [](verifying_plugin_compatibility.md) for overview of API status. See [](verifying_plugin_compatibility.md) for overview of API status.
| Icon | Description | Details | | Icon | Description | Details |
|-----------------------------------|-------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |-----------------------------------|-------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ![Deprecated][deprecated] | Deprecated API | Please see code documentation for replacement | | ![Deprecated][deprecated] | Deprecated API | Please see code documentation for replacement |
| ![Removal][removal] | Scheduled for Removal API | Please see code documentation for replacement | | ![Removal][removal] | Scheduled for Removal API | Please see code documentation for replacement |
| ![Obsolete][obsolete] | Obsolete API | Do not use in new code, please see code documentation for replacement ([](verifying_plugin_compatibility.md#obsolete-api)) | | ![Obsolete][obsolete] | Obsolete API | Do not use in new code, please see code documentation for replacement ([](verifying_plugin_compatibility.md#obsolete-api)) |
| ![Experimental API][experimental] | Experimental API | Annotated with [`@ApiStatus.Experimental`](https://github.com/JetBrains/java-annotations/blob/master/common/src/main/java/org/jetbrains/annotations/ApiStatus.java), API might be altered or removed without prior notice | | ![Experimental API][experimental] | Experimental API | Annotated with [`@ApiStatus.Experimental`](https://github.com/JetBrains/java-annotations/blob/master/common/src/main/java/org/jetbrains/annotations/ApiStatus.java), API might be altered or removed without prior notice |
| ![Internal API][internal] | Internal API | Annotated with [`@ApiStatus.Internal`](https://github.com/JetBrains/java-annotations/blob/master/common/src/main/java/org/jetbrains/annotations/ApiStatus.java), must not be used by 3rd party, see [](api_internal.md) | | ![Internal API][internal] | Internal API | Annotated with [`@ApiStatus.Internal`](https://github.com/JetBrains/java-annotations/blob/master/common/src/main/java/org/jetbrains/annotations/ApiStatus.java), must not be used by 3rd party, see [](api_internal.md) |
| ![Project-Level][project-level] | Project-Level Extension Point/Topic | Can have [`Project`](%gh-ic%/platform/core-api/src/com/intellij/openapi/project/Project.java) as constructor parameter<br/><br/>Extension Point: Declared with `area="IDEA_PROJECT"`<br/>Listener: registered in [`<projectListeners>`](plugin_configuration_file.md#idea-plugin__projectListeners) | | ![Project-Level][project-level] | Project-Level Extension Point/Topic | Can have [`Project`](%gh-ic%/platform/core-api/src/com/intellij/openapi/project/Project.java) as constructor parameter<br/>Extension Point: Declared with `area="IDEA_PROJECT"`<br/>Listener: registered in [`<projectListeners>`](plugin_configuration_file.md#idea-plugin__projectListeners) |
| ![Non-Dynamic][non-dynamic] | Non-Dynamic Extension Point | Installation/update of plugin requires IDE restart ([Dynamic Plugins](dynamic_plugins.md)) | | ![Non-Dynamic][non-dynamic] | Non-Dynamic Extension Point | Installation/update of plugin requires IDE restart ([Dynamic Plugins](dynamic_plugins.md)) |
[deprecated]: https://img.shields.io/badge/-Deprecated-lightgrey?style=flat-square [deprecated]: https://img.shields.io/badge/-Deprecated-lightgrey?style=flat-square
[removal]: https://img.shields.io/badge/-Removal-red?style=flat-square [removal]: https://img.shields.io/badge/-Removal-red?style=flat-square

View File

@ -29,17 +29,17 @@ A tutorial blog post series for JavaScript developers.
## Webinars ## Webinars
| Webinar | Info | | Webinar | Info |
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Busy Plugin Developers #5** <br/>Matthias Koch, 09/2022 <video src="https://www.youtube.com/watch?v=y8adERbgt_M" title="Busy plugin developers series. Episode 5" width="300"/> | <br/><br/>Building Extensions for Rider and ReSharper | | **Busy Plugin Developers #5** <br/>Matthias Koch, 09/2022 <video src="https://www.youtube.com/watch?v=y8adERbgt_M" title="Busy plugin developers series. Episode 5" width="300"/> | Building Extensions for Rider and ReSharper |
| **Busy Plugin Developers #4** <br/>Dmitry Kandalov/Yann Cebron, 04/2022 <video src="https://www.youtube.com/watch?v=pgGg-IwUQYM" title="Busy plugin developers series. Episode 4" width="300"/> | <br/><br/>Adding IDE Features at runtime using LivePlugin | | **Busy Plugin Developers #4** <br/>Dmitry Kandalov/Yann Cebron, 04/2022 <video src="https://www.youtube.com/watch?v=pgGg-IwUQYM" title="Busy plugin developers series. Episode 4" width="300"/> | Adding IDE Features at runtime using LivePlugin |
| **Busy Plugin Developers #3** <br/>Jakub Chrzanowski/Anna Maltceva/Yann Cebron, 11/2021 <video src="https://www.youtube.com/watch?v=9J0j-90dC60" title="Busy plugin developers series. Episode 3" width="300"/> | <br/><br/><br/>Building Themes for IntelliJ-based IDEs<br/>Latest updates to JetBrains Marketplace | | **Busy Plugin Developers #3** <br/>Jakub Chrzanowski/Anna Maltceva/Yann Cebron, 11/2021 <video src="https://www.youtube.com/watch?v=9J0j-90dC60" title="Busy plugin developers series. Episode 3" width="300"/> | Building Themes for IntelliJ-based IDEs<br/>Latest updates to JetBrains Marketplace |
| **Busy Plugin Developers #2** <br/>Anna Maltceva/Łukasz Wawrzyk/Jakub Chrzanowski, 09/2021 <video src="https://www.youtube.com/watch?v=oB1GA9JeeiY" title="Busy plugin developers series. Episode 2" width="300"/> | <br/><br/><br/>How to improve your Marketplace plugin page to attract more users<br/>ide-probe, a testing and benchmarking framework for IntelliJ-based IDEs | | **Busy Plugin Developers #2** <br/>Anna Maltceva/Łukasz Wawrzyk/Jakub Chrzanowski, 09/2021 <video src="https://www.youtube.com/watch?v=oB1GA9JeeiY" title="Busy plugin developers series. Episode 2" width="300"/> | How to improve your Marketplace plugin page to attract more users<br/>ide-probe, a testing and benchmarking framework for IntelliJ-based IDEs |
| **Busy Plugin Developers #1** <br/>Jakub Chrzanowski/Semyon Atamas/Paweł Lipski, 07/2021 <video src="https://www.youtube.com/watch?v=vAlor5-hC0Q" title="Busy plugin developers series. Episode 1" width="300"/> | <br/><br/><br/>What is Gradle IntelliJ Plugin<br/>New features of Gradle IntelliJ Plugin<br/>How to start with Gradle IntelliJ Plugin<br/>Types of signing and how they work<br/>How JetBrains Marketplace signature works<br/>How to sign your plugin<br/>Tools and tips for testing UI of IntelliJ Plugins | | **Busy Plugin Developers #1** <br/>Jakub Chrzanowski/Semyon Atamas/Paweł Lipski, 07/2021 <video src="https://www.youtube.com/watch?v=vAlor5-hC0Q" title="Busy plugin developers series. Episode 1" width="300"/> | What is Gradle IntelliJ Plugin<br/>New features of Gradle IntelliJ Plugin<br/>How to start with Gradle IntelliJ Plugin<br/>Types of signing and how they work<br/>How JetBrains Marketplace signature works<br/>How to sign your plugin<br/>Tools and tips for testing UI of IntelliJ Plugins |
| **Make IntelliJ IDEA Your Own** <br/>Sirisha Pratha, 05/2021 <video src="https://www.youtube.com/watch?v=cAwH_DbFrfw?t=1120" title="Make IntelliJ IDEA Your Own" width="300"/> | <br/><br/>In this session, we'll explore the benefits provided by IntelliJ IDEA's customization options, and you will learn how to make the IDE your own. We will also look at the plugins available on the JetBrains Marketplace, discuss the process of developing them, and demo a few custom ones. | | **Make IntelliJ IDEA Your Own** <br/>Sirisha Pratha, 05/2021 <video src="https://www.youtube.com/watch?v=cAwH_DbFrfw?t=1120" title="Make IntelliJ IDEA Your Own" width="300"/> | In this session, we'll explore the benefits provided by IntelliJ IDEA's customization options, and you will learn how to make the IDE your own. We will also look at the plugins available on the JetBrains Marketplace, discuss the process of developing them, and demo a few custom ones. |
| **IntelliJ IDEA Conf 2021** <br/>Various Speakers, 02/2021 <video src="https://www.youtube.com/watch?v=akrPpWAZzQk&amp;list=PLPZy-hmwOdEUdLO-AKiJJ7LuZ3p16zJ4x" title="IntelliJ IDEA Conf 2021" width="300"/> | <br/><br/>Playlist includes a number of presentations related to plugin development | | **IntelliJ IDEA Conf 2021** <br/>Various Speakers, 02/2021 <video src="https://www.youtube.com/watch?v=akrPpWAZzQk&amp;list=PLPZy-hmwOdEUdLO-AKiJJ7LuZ3p16zJ4x" title="IntelliJ IDEA Conf 2021" width="300"/> | Playlist includes a number of presentations related to plugin development |
| **Busy Plugin Developers #0** <br/>Mikhail Vink/Jakub Chrzanowski/Yann Cebron, 12/2020 <video src="https://www.youtube.com/watch?v=-6D5-xEaYig" title="Busy plugin developers series. Episode 0" width="300" /> | <br/><br/><br/>IntelliJ Platform Plugin Template<br/>Plugin DevKit Features<br/>IntelliJ Platform Explorer<br/>What's coming in 2021?<br/>Introduction to the Marketplace<br/>How to make your plugin successful?<br/>Sell on the Marketplace | | **Busy Plugin Developers #0** <br/>Mikhail Vink/Jakub Chrzanowski/Yann Cebron, 12/2020 <video src="https://www.youtube.com/watch?v=-6D5-xEaYig" title="Busy plugin developers series. Episode 0" width="300" /> | IntelliJ Platform Plugin Template<br/>Plugin DevKit Features<br/>IntelliJ Platform Explorer<br/>What's coming in 2021?<br/>Introduction to the Marketplace<br/>How to make your plugin successful?<br/>Sell on the Marketplace |
| **How We Built Comma, the Raku IDE, on the IntelliJ Platform** <br/>Jonathan Worthington, 01/2020 <video src="https://www.youtube.com/watch?v=zDP9uUMYrvs" title="How We Built Comma, the Raku IDE, on the IntelliJ Platform" width="300"/> | <br/><br/><br/>How to build custom language support<br/>How to go from a language support plugin to an IDE<br/>Lessons Learned<br/><br/>[Blog post](https://blog.jetbrains.com/platform/2020/01/webinar-recording-how-we-built-comma-the-raku-ide-on-the-intellij-platform/) | | **How We Built Comma, the Raku IDE, on the IntelliJ Platform** <br/>Jonathan Worthington, 01/2020 <video src="https://www.youtube.com/watch?v=zDP9uUMYrvs" title="How We Built Comma, the Raku IDE, on the IntelliJ Platform" width="300"/> | How to build custom language support<br/>How to go from a language support plugin to an IDE<br/>Lessons Learned<br/>[Blog post](https://blog.jetbrains.com/platform/2020/01/webinar-recording-how-we-built-comma-the-raku-ide-on-the-intellij-platform/) |
| **Building IntelliJ IDEA plugins in Scala** <br/>Igal Tabachnik, 2020 <video src="https://www.youtube.com/watch?v=IPO-cY_giNA" title="Building IntelliJ IDEA plugins in Scala" width="300"/> | <br/><br/>In this talk, I will show how to create plugins for IDEA from scratch in Scala, and show why Scala's unique features make it a great fit for such tasks as inspecting and manipulating Abstract Syntax Trees (ASTs) to create your own custom suggestions and quick-fixes. | | **Building IntelliJ IDEA plugins in Scala** <br/>Igal Tabachnik, 2020 <video src="https://www.youtube.com/watch?v=IPO-cY_giNA" title="Building IntelliJ IDEA plugins in Scala" width="300"/> | In this talk, I will show how to create plugins for IDEA from scratch in Scala, and show why Scala's unique features make it a great fit for such tasks as inspecting and manipulating Abstract Syntax Trees (ASTs) to create your own custom suggestions and quick-fixes. |
| **Live Development of a PyCharm Plugin** <br/>Joachim Ansorg, 2019 <video src="https://www.youtube.com/watch?v=cR-28eaXGQI" title="Live Development of a PyCharm Plugin" width="300"/> | <br/><br/>Background and architecture of IntelliJ plugins<br/>Development using tests<br/>Implementing interesting extension points<br/>Viewing the plugin in the IDE (PyCharm)<br/><br/>[Blog post](https://blog.jetbrains.com/pycharm/2019/01/webinar-recording-live-development-of-a-pycharm-plugin-with-joachim-ansorg/) | | **Live Development of a PyCharm Plugin** <br/>Joachim Ansorg, 2019 <video src="https://www.youtube.com/watch?v=cR-28eaXGQI" title="Live Development of a PyCharm Plugin" width="300"/> | Background and architecture of IntelliJ plugins<br/>Development using tests<br/>Implementing interesting extension points<br/>Viewing the plugin in the IDE (PyCharm)<br/>[Blog post](https://blog.jetbrains.com/pycharm/2019/01/webinar-recording-live-development-of-a-pycharm-plugin-with-joachim-ansorg/) |
| **Build Developer Tools On Top of IntelliJ Platform** <br/>Dmitry Jemerov, 2013 <video src="https://www.youtube.com/watch?v=vQDzjGzkPFc" title="Build Developer Tools On Top of IntelliJ Platform" width="300"/> | <br/><br/>This webinar makes an overview on IntelliJ Platform and explains how you can use it for building your own products. | | **Build Developer Tools On Top of IntelliJ Platform** <br/>Dmitry Jemerov, 2013 <video src="https://www.youtube.com/watch?v=vQDzjGzkPFc" title="Build Developer Tools On Top of IntelliJ Platform" width="300"/> | This webinar makes an overview on IntelliJ Platform and explains how you can use it for building your own products. |

View File

@ -57,7 +57,8 @@ The wizard can be used for both DevKit-based and Gradle-based plugins.
<procedure title="Add Theme" id="add-theme"> <procedure title="Add Theme" id="add-theme">
1. In the <control>Project</control> tool window, select the <path>resources</path> directory and invoke the context menu with the right click. 1. In the <control>Project</control> tool window, select the <path>resources</path> directory and invoke the context menu with the right click.
2. Select the <ui-path>New | Plugin DevKit | Theme</ui-path> action.<br/> 2. Select the <ui-path>New | Plugin DevKit | Theme</ui-path> action.
It is a good practice to include the name of the plugin in the created theme name. It is a good practice to include the name of the plugin in the created theme name.
3. Check the <control>Dark theme</control> checkbox if the created theme should be based on IntelliJ IDEA _Darcula_ theme. 3. Check the <control>Dark theme</control> checkbox if the created theme should be based on IntelliJ IDEA _Darcula_ theme.
Otherwise, the _Light_ theme will be used as the base. Otherwise, the _Light_ theme will be used as the base.

View File

@ -1,7 +1,7 @@
# Deploying a Theme
<!-- Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. --> <!-- Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -->
# Deploying a Theme
<link-summary>Building and deploying a theme in IDE.</link-summary> <link-summary>Building and deploying a theme in IDE.</link-summary>
Before your custom theme plugin can be [uploaded to JetBrains Marketplace](publishing_plugin.md#uploading-a-plugin-to-jetbrains-marketplace) and used by users, it should be packaged and verified in the actual IDE. Before your custom theme plugin can be [uploaded to JetBrains Marketplace](publishing_plugin.md#uploading-a-plugin-to-jetbrains-marketplace) and used by users, it should be packaged and verified in the actual IDE.
@ -11,8 +11,10 @@ The deployment process prepares the plugin artifact that can be installed in IDE
<procedure title="Deploying Theme Plugin"> <procedure title="Deploying Theme Plugin">
1. Build the theme by invoking <ui-path>Build | Build Project</ui-path> or <ui-path>Build | Build Module $MODULE_NAME$</ui-path>. 1. Build the theme by invoking <ui-path>Build | Build Project</ui-path> or <ui-path>Build | Build Module $MODULE_NAME$</ui-path>.
2. Create the deployment artifact by invoking <ui-path>Build | Prepare Plugin Module $MODULE_NAME$ for Deployment</ui-path>.<br/> 2. Create the deployment artifact by invoking <ui-path>Build | Prepare Plugin Module $MODULE_NAME$ for Deployment</ui-path>.
The resulting theme JAR file will be created in the project or module directory.<br/>
The resulting theme JAR file will be created in the project or module directory.
In the case of developing a regular plugin, and it specifies additional dependencies, a&nbsp;ZIP archive is created, including all the plugin libraries. In the case of developing a regular plugin, and it specifies additional dependencies, a&nbsp;ZIP archive is created, including all the plugin libraries.
3. [Install](https://www.jetbrains.com/help/idea/managing-plugins.html#installing-plugins-from-disk) the newly created JAR or ZIP file from disk. 3. [Install](https://www.jetbrains.com/help/idea/managing-plugins.html#installing-plugins-from-disk) the newly created JAR or ZIP file from disk.
4. Click the <control>Apply</control> button. 4. Click the <control>Apply</control> button.

View File

@ -10,9 +10,10 @@ Use the following checklist to ensure that you are ready to develop your custom
1. **[IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/download/)** or **[IntelliJ IDEA Ultimate](https://www.jetbrains.com/idea/download/)** is installed. 1. **[IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/download/)** or **[IntelliJ IDEA Ultimate](https://www.jetbrains.com/idea/download/)** is installed.
2. **Plugin DevKit** plugin is [enabled in IntelliJ IDEA](https://www.jetbrains.com/help/idea/managing-plugins.html). 2. **Plugin DevKit** plugin is [enabled in IntelliJ IDEA](https://www.jetbrains.com/help/idea/managing-plugins.html).
3. **IntelliJ IDEA CE source code** is checked-out. _(Optional)_<br/> 3. **IntelliJ IDEA CE source code** is checked-out. _(Optional)_
This step is needed only when you plan to debug the IntelliJ Platform code.
See [](#get-intellij-idea-ce-source-code) for more details. This step is needed only when you plan to debug the IntelliJ Platform code.
See [](#get-intellij-idea-ce-source-code) for more details.
4. **IntelliJ Platform SDK** is [configured](#configuring-intellij-platform-plugin-sdk). 4. **IntelliJ Platform SDK** is [configured](#configuring-intellij-platform-plugin-sdk).
</procedure> </procedure>
@ -46,8 +47,9 @@ The first step of configuring a theme plugin SDK is adding the JDK.
1. Go to <ui-path>File | Project Structure | Platform Settings | SDKs</ui-path>. 1. Go to <ui-path>File | Project Structure | Platform Settings | SDKs</ui-path>.
2. Click the <control>Add</control> button (<control>+</control>). 2. Click the <control>Add</control> button (<control>+</control>).
3. If you have the required JDK installation on your machine, and it is detected, select it from the <control>Detected SDKs</control> list. 3. If you have the required JDK installation on your machine, and it is detected, select it from the <control>Detected SDKs</control> list.
If your JDK is not detected, select the <control>Add JDK...</control> option and choose the installation folder.<br/> If your JDK is not detected, select the <control>Add JDK...</control> option and choose the installation folder.
If the required JDK is not installed on your machine, the simplest option is using <control>Download JDK...</control> and choosing the distribution options.
If the required JDK is not installed on your machine, the simplest option is using <control>Download JDK...</control> and choosing the distribution options.
4. Click the <control>Apply</control> button. 4. Click the <control>Apply</control> button.
</procedure> </procedure>
@ -61,7 +63,8 @@ The second step is adding IntelliJ Platform Plugin SDK that will use the JDK con
3. Select the <control>Add IntelliJ Platform Plugin SDK...</control> option. 3. Select the <control>Add IntelliJ Platform Plugin SDK...</control> option.
4. Choose the installation folder of the IDE [downloaded previously](#download-intellij-based-ide) (on macOS, select application icon in <path>/Applications/</path>). 4. Choose the installation folder of the IDE [downloaded previously](#download-intellij-based-ide) (on macOS, select application icon in <path>/Applications/</path>).
5. In the <control>Select Internal Java Platform</control> dialog, select the JDK configured in the [previous step](#add-jdk) and click <control>OK</control> button. 5. In the <control>Select Internal Java Platform</control> dialog, select the JDK configured in the [previous step](#add-jdk) and click <control>OK</control> button.
6. In the added SDK, specify the <control>Sandbox Home</control> directory.<br/> 6. In the added SDK, specify the <control>Sandbox Home</control> directory.
See [](ide_development_instance.md#the-development-instance-sandbox-directory) for details. See [](ide_development_instance.md#the-development-instance-sandbox-directory) for details.
7. If debugging is required, select the <control>Sourcepath</control> tab, click the <control>Add</control> button (<control>+</control>) and select the root folder of [the checked-out sources](#get-intellij-idea-ce-source-code). 7. If debugging is required, select the <control>Sourcepath</control> tab, click the <control>Add</control> button (<control>+</control>) and select the root folder of [the checked-out sources](#get-intellij-idea-ce-source-code).
8. Click the <control>Apply</control> button. 8. Click the <control>Apply</control> button.

View File

@ -45,9 +45,15 @@ To set up dependencies on a module, there are two types of information needed:
### Specify the Repository URL ### Specify the Repository URL
The URL for the desired artifact needs to be added to a Maven or Gradle script: The URL for the desired artifact needs to be added to a Maven or Gradle script:
* For release versions, use:<br/>`https://www.jetbrains.com/intellij-repository/releases` * For release versions, use:
* For EAP snapshots, use:<br/>`https://www.jetbrains.com/intellij-repository/snapshots`
* For dependencies on individual modules from the IntelliJ Platform, also use:<br/>`https://cache-redirector.jetbrains.com/intellij-dependencies` `https://www.jetbrains.com/intellij-repository/releases`
* For EAP snapshots, use:
`https://www.jetbrains.com/intellij-repository/snapshots`
* For dependencies on individual modules from the IntelliJ Platform, also use:
`https://cache-redirector.jetbrains.com/intellij-dependencies`
### Specify the Maven Coordinates for the Artifact ### Specify the Maven Coordinates for the Artifact

View File

@ -12,12 +12,12 @@ Popups can optionally display a title, are optionally movable and resizable (and
The [`JBPopupFactory`](%gh-ic%/platform/platform-api/src/com/intellij/openapi/ui/popup/JBPopupFactory.java) interface allows you to create popups that display different kinds of components, depending on your specific needs. The [`JBPopupFactory`](%gh-ic%/platform/platform-api/src/com/intellij/openapi/ui/popup/JBPopupFactory.java) interface allows you to create popups that display different kinds of components, depending on your specific needs.
The most commonly used methods are: The most commonly used methods are:
| Method | Description | | Method | Description |
|---------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |---------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `createComponentPopupBuilder()` | Generic, allows showing any [Swing](https://docs.oracle.com/javase/tutorial/uiswing/start/index.html) component.<br/><br/>**Example**: [`IntentionPreviewPopupUpdateProcessor`](%gh-ic%/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/preview/IntentionPreviewPopupUpdateProcessor.kt) creating a popup rendering the intention preview. | | `createComponentPopupBuilder()` | Generic, allows showing any [Swing](https://docs.oracle.com/javase/tutorial/uiswing/start/index.html) component.<br/>**Example**: [`IntentionPreviewPopupUpdateProcessor`](%gh-ic%/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/preview/IntentionPreviewPopupUpdateProcessor.kt) creating a popup rendering the intention preview. |
| `createPopupChooserBuilder()` | For choosing one or more items from a plain `java.util.List`.<br/><br/>**Example**: [`ShowMessageHistoryAction`](%gh-ic%/platform/vcs-impl/src/com/intellij/openapi/vcs/actions/ShowMessageHistoryAction.kt) creating a popup with recent commit messages history in the commit message text area. | | `createPopupChooserBuilder()` | For choosing one or more items from a plain `java.util.List`.<br/>**Example**: [`ShowMessageHistoryAction`](%gh-ic%/platform/vcs-impl/src/com/intellij/openapi/vcs/actions/ShowMessageHistoryAction.kt) creating a popup with recent commit messages history in the commit message text area. |
| `createConfirmation()` | For choosing between two options, and performing different actions depending on which option is selected.<br/><br/>**Example**: [`VariableInplaceRenamer`](%gh-ic%/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java) creating confirmation popup after invalid variable name is provided in the inplace rename action. | | `createConfirmation()` | For choosing between two options, and performing different actions depending on which option is selected.<br/>**Example**: [`VariableInplaceRenamer`](%gh-ic%/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java) creating confirmation popup after invalid variable name is provided in the inplace rename action. |
| `createActionGroupPopup()` | Show actions from an [Action Group](grouping_action.md) and executes the action selected by the user.<br/><br/>**Example**: [`ShowRecentFindUsagesGroup`](%gh-ic%/platform/lang-impl/src/com/intellij/find/impl/ShowRecentFindUsagesGroup.java) invoked via <ui-path>Edit / Find Usages / Recent Find Usages</ui-path> and showing recent find usages group popup. | | `createActionGroupPopup()` | Show actions from an [Action Group](grouping_action.md) and executes the action selected by the user.<br/>**Example**: [`ShowRecentFindUsagesGroup`](%gh-ic%/platform/lang-impl/src/com/intellij/find/impl/ShowRecentFindUsagesGroup.java) invoked via <ui-path>Edit / Find Usages / Recent Find Usages</ui-path> and showing recent find usages group popup. |
### Action Groups ### Action Groups