mirror of
https://github.com/JetBrains/intellij-sdk-code-samples.git
synced 2025-07-28 01:07:49 +08:00
markdown: table cleanup
This commit is contained in:
parent
6ab54c55b1
commit
cd55ae8e7e
@ -10,14 +10,14 @@ Also, consider posting requests in _#jobs_ channel on [JetBrains Platform Slack]
|
|||||||
>
|
>
|
||||||
{type="note"}
|
{type="note"}
|
||||||
|
|
||||||
| Name | Contact | Notes |
|
| Name | Contact | Notes |
|
||||||
| ------------------ | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
|--------------------|---------------------------------------------------------|---------------------------------------------|
|
||||||
| Joachim Ansorg | [www.plugin-dev.com][ja] | -/- |
|
| Joachim Ansorg | [www.plugin-dev.com][ja] | -/- |
|
||||||
| Daniel Espendiller | [daniel@espendiller.net][de] | -/- |
|
| Daniel Espendiller | [daniel@espendiller.net][de] | -/- |
|
||||||
| Robert Ekendahl | [www.edaphic.studio][re] | Custom Language support |
|
| Robert Ekendahl | [www.edaphic.studio][re] | Custom Language support |
|
||||||
| Alexey Stukalov | [info@cuba-platform.com][ast], [www.haulmont.com][ast2] | Plugins: [CUBA][ast3]. |
|
| Alexey Stukalov | [info@cuba-platform.com][ast], [www.haulmont.com][ast2] | Plugins: [CUBA][ast3]. |
|
||||||
| Edument | [jonathan@edument.cz][ed], [edument.se][ed2] | Developers of [Comma IDE][ed3] |
|
| Edument | [jonathan@edument.cz][ed], [edument.se][ed2] | Developers of [Comma IDE][ed3] |
|
||||||
| Mikhail Bolotov | [mikhail.bolotov@gmail.com][mb] | Plugins: [Cypress Support Pro][cspro], [k6] |
|
| Mikhail Bolotov | [mikhail.bolotov@gmail.com][mb] | Plugins: [Cypress Support Pro][cspro], [k6] |
|
||||||
|
|
||||||
[ja]: https://www.plugin-dev.com
|
[ja]: https://www.plugin-dev.com
|
||||||
[de]: mailto:daniel@espendiller.net
|
[de]: mailto:daniel@espendiller.net
|
||||||
|
@ -38,13 +38,13 @@
|
|||||||
|
|
||||||
### Tags
|
### Tags
|
||||||
|
|
||||||
| 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 |
|
||||||
| ![Experimental API][experimental] | Experimental API | Implementation 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 | Implementation 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 | Implementation annotated with [`@ApiStatus.Internal`](https://github.com/JetBrains/java-annotations/blob/master/common/src/main/java/org/jetbrains/annotations/ApiStatus.java), should not be used by 3rd party |
|
| ![Internal API][internal] | Internal API | Implementation annotated with [`@ApiStatus.Internal`](https://github.com/JetBrains/java-annotations/blob/master/common/src/main/java/org/jetbrains/annotations/ApiStatus.java), should not be used by 3rd party |
|
||||||
| ![Project-Level][project-level] | Project-Level Extension Point/Topic | Can have `Project` as constructor parameter<br/><br/>Extension Point: Declared with `area="IDEA_PROJECT"`<br/>Listener: registered in `<projectListeners>` |
|
| ![Project-Level][project-level] | Project-Level Extension Point/Topic | Can have `Project` as constructor parameter<br/><br/>Extension Point: Declared with `area="IDEA_PROJECT"`<br/>Listener: registered in `<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)) |
|
||||||
|
|
||||||
[experimental]: https://img.shields.io/badge/-Experimental_API-red?style=flat-square
|
[experimental]: https://img.shields.io/badge/-Experimental_API-red?style=flat-square
|
||||||
[internal]: https://img.shields.io/badge/-Internal_API-darkred?style=flat-square
|
[internal]: https://img.shields.io/badge/-Internal_API-darkred?style=flat-square
|
||||||
|
@ -10,15 +10,15 @@ Element patterns provide a generic way to specify conditions on objects. Plugin
|
|||||||
However, plugin authors rarely implement the [`ElementPattern`](upsource:///platform/core-api/src/com/intellij/patterns/ElementPattern.java) interface directly.
|
However, plugin authors rarely implement the [`ElementPattern`](upsource:///platform/core-api/src/com/intellij/patterns/ElementPattern.java) interface directly.
|
||||||
Instead, we recommend using the high-level pattern classes provided by the IntelliJ Platform:
|
Instead, we recommend using the high-level pattern classes provided by the IntelliJ Platform:
|
||||||
|
|
||||||
| Class | Main Contents | Notable Examples |
|
| Class | Main Contents | Notable Examples |
|
||||||
| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
|
|---------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| [`StandardPatterns`](upsource:///platform/core-api/src/com/intellij/patterns/StandardPatterns.java) | Factory for string and char pattern (see below); Logical operations like and, or, not | [`LogbackReferenceContributor`](upsource:///plugins/groovy/src/org/jetbrains/plugins/groovy/ext/logback/LogbackReferenceContributor.kt), [`RegExpCompletionContributor`](upsource:///RegExpSupport/src/org/intellij/lang/regexp/RegExpCompletionContributor.java) |
|
| [`StandardPatterns`](upsource:///platform/core-api/src/com/intellij/patterns/StandardPatterns.java) | Factory for string and char pattern (see below); Logical operations like and, or, not | [`LogbackReferenceContributor`](upsource:///plugins/groovy/src/org/jetbrains/plugins/groovy/ext/logback/LogbackReferenceContributor.kt), [`RegExpCompletionContributor`](upsource:///RegExpSupport/src/org/intellij/lang/regexp/RegExpCompletionContributor.java) |
|
||||||
| [`PlatformPatterns`](upsource:///platform/core-api/src/com/intellij/patterns/PlatformPatterns.java) | Factory for PSI-, IElement-, and VirtualFile-patterns | [`FxmlReferencesContributor`](upsource:///plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/FxmlReferencesContributor.java), [`PyDataclassCompletionContributor`](upsource:///python/python-psi-impl/src/com/jetbrains/python/codeInsight/completion/PyDataclassCompletionContributor.kt) |
|
| [`PlatformPatterns`](upsource:///platform/core-api/src/com/intellij/patterns/PlatformPatterns.java) | Factory for PSI-, IElement-, and VirtualFile-patterns | [`FxmlReferencesContributor`](upsource:///plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/FxmlReferencesContributor.java), [`PyDataclassCompletionContributor`](upsource:///python/python-psi-impl/src/com/jetbrains/python/codeInsight/completion/PyDataclassCompletionContributor.kt) |
|
||||||
| [`PsiElementPattern`](upsource:///platform/core-api/src/com/intellij/patterns/PsiElementPattern.java) | Patterns for PSI; Checks for children, parents, or neighboring leaves | [`XmlCompletionContributor`](upsource:///xml/impl/src/com/intellij/codeInsight/completion/XmlCompletionContributor.java) |
|
| [`PsiElementPattern`](upsource:///platform/core-api/src/com/intellij/patterns/PsiElementPattern.java) | Patterns for PSI; Checks for children, parents, or neighboring leaves | [`XmlCompletionContributor`](upsource:///xml/impl/src/com/intellij/codeInsight/completion/XmlCompletionContributor.java) |
|
||||||
| [`CollectionPattern`](upsource:///platform/core-api/src/com/intellij/patterns/CollectionPattern.java) | Filter and check pattern collections; Mainly used to provide functionality for other high-level pattern classes | [`PsiElementPattern`](upsource:///platform/core-api/src/com/intellij/patterns/PsiElementPattern.java) |
|
| [`CollectionPattern`](upsource:///platform/core-api/src/com/intellij/patterns/CollectionPattern.java) | Filter and check pattern collections; Mainly used to provide functionality for other high-level pattern classes | [`PsiElementPattern`](upsource:///platform/core-api/src/com/intellij/patterns/PsiElementPattern.java) |
|
||||||
| [`TreeElementPattern`](upsource:///platform/core-api/src/com/intellij/patterns/TreeElementPattern.java) | Patterns specifically for checking (PSI) tree structure | [`PyMetaClassCompletionContributor`](upsource:///python/python-psi-impl/src/com/jetbrains/python/codeInsight/completion/PyMetaClassCompletionContributor.java) |
|
| [`TreeElementPattern`](upsource:///platform/core-api/src/com/intellij/patterns/TreeElementPattern.java) | Patterns specifically for checking (PSI) tree structure | [`PyMetaClassCompletionContributor`](upsource:///python/python-psi-impl/src/com/jetbrains/python/codeInsight/completion/PyMetaClassCompletionContributor.java) |
|
||||||
| [`StringPattern`](upsource:///platform/core-api/src/com/intellij/patterns/StringPattern.java) | Check if strings match, have a certain length, have a specific beginning or ending, or are one of a collection of strings | [`AbstractGradleCompletionContributor`](upsource:///plugins/gradle/java/src/codeInsight/AbstractGradleCompletionContributor.kt) |
|
| [`StringPattern`](upsource:///platform/core-api/src/com/intellij/patterns/StringPattern.java) | Check if strings match, have a certain length, have a specific beginning or ending, or are one of a collection of strings | [`AbstractGradleCompletionContributor`](upsource:///plugins/gradle/java/src/codeInsight/AbstractGradleCompletionContributor.kt) |
|
||||||
| [`CharPattern`](upsource:///platform/core-api/src/com/intellij/patterns/CharPattern.java) | Check if characters are whitespace, digits, or Java identifier parts | [`CompletionUtil`](upsource:///platform/analysis-impl/src/com/intellij/codeInsight/completion/CompletionUtil.java) |
|
| [`CharPattern`](upsource:///platform/core-api/src/com/intellij/patterns/CharPattern.java) | Check if characters are whitespace, digits, or Java identifier parts | [`CompletionUtil`](upsource:///platform/analysis-impl/src/com/intellij/codeInsight/completion/CompletionUtil.java) |
|
||||||
|
|
||||||
Some built-in languages in the IntelliJ Platform implement their own pattern classes and can provide additional examples:
|
Some built-in languages in the IntelliJ Platform implement their own pattern classes and can provide additional examples:
|
||||||
|
|
||||||
|
@ -132,11 +132,11 @@ In contrast, if the `compact` attribute is `false`, an action in the menu appear
|
|||||||
Some menus like **Tools** have the `compact` attribute set, so there isn't a way to show an action on the tools menu if it is not enabled.
|
Some menus like **Tools** have the `compact` attribute set, so there isn't a way to show an action on the tools menu if it is not enabled.
|
||||||
|
|
||||||
| Host Menu<br/>`compact` Setting | Action Enabled | Visibility Enabled | Menu Item Visible? | Menu Item Appears Gray? |
|
| Host Menu<br/>`compact` Setting | Action Enabled | Visibility Enabled | Menu Item Visible? | Menu Item Appears Gray? |
|
||||||
| :-----: | :------------: | :----------------: | :----------------: | :---------------------: |
|
|:-------------------------------:|:--------------:|:------------------:|:------------------:|:-----------------------:|
|
||||||
| T | **F** | T | **F** | N/A |
|
| T | **F** | T | **F** | N/A |
|
||||||
| T | T | T | T | F |
|
| T | T | T | T | F |
|
||||||
| F | **F** | T | **T** | **T** |
|
| F | **F** | T | **T** | **T** |
|
||||||
| F | T | T | T | F |
|
| F | T | T | T | F |
|
||||||
|
|
||||||
All other combinations of `compact`, visibility, and enablement produce N/A for gray appearance because the menu item isn't visible.
|
All other combinations of `compact`, visibility, and enablement produce N/A for gray appearance because the menu item isn't visible.
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
All products based on the IntelliJ Platform are built on the same underlying API.
|
All products based on the IntelliJ Platform are built on the same underlying API.
|
||||||
Some of these products share features built on top of the platform, such as Java support in IntelliJ IDEA and Android Studio.
|
Some of these products share features built on top of the platform, such as Java support in IntelliJ IDEA and Android Studio.
|
||||||
Underlying those shared features are shared components.
|
Underlying those shared features are shared components.
|
||||||
When authoring a plugin for the IntelliJ Platform, it is important to understand and declare dependencies on these components.
|
When authoring a plugin for the IntelliJ Platform, it is important to understand and declare dependencies on these components.
|
||||||
Otherwise, it may not be possible to load or run the plugin in a product because the components on which it depends aren't available.
|
Otherwise, it may not be possible to load or run the plugin in a product because the components on which it depends aren't available.
|
||||||
|
|
||||||
> Qualifying Open Source projects can [apply for free licenses](https://www.jetbrains.com/community/opensource/) of JetBrains products.
|
> Qualifying Open Source projects can [apply for free licenses](https://www.jetbrains.com/community/opensource/) of JetBrains products.
|
||||||
@ -43,13 +43,13 @@ The following table lists modules that are currently available in all products.
|
|||||||
>
|
>
|
||||||
{type="note"}
|
{type="note"}
|
||||||
|
|
||||||
| Module for `<depends>` Element<br/>Declaration in <path>plugin.xml</path> File | <br/>Functionality |
|
| Module for `<depends>` Element<br/>Declaration in <path>plugin.xml</path> File | <br/>Functionality |
|
||||||
| ------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------- |
|
|--------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|
|
||||||
| **`com.intellij.modules.platform`** | Messaging, UI Themes, UI Components, Files, Documents, Actions, Components, Services, Extensions, Editors |
|
| **`com.intellij.modules.platform`** | Messaging, UI Themes, UI Components, Files, Documents, Actions, Components, Services, Extensions, Editors |
|
||||||
| `com.intellij.modules.lang` | File Type, Lexer, Parser, Highlighting, References, Code Completion, Find, Rename, Formatter, Code Navigation |
|
| `com.intellij.modules.lang` | File Type, Lexer, Parser, Highlighting, References, Code Completion, Find, Rename, Formatter, Code Navigation |
|
||||||
| `com.intellij.modules.xml` | XML, XML DOM, XSD/DTD, DOM Model |
|
| `com.intellij.modules.xml` | XML, XML DOM, XSD/DTD, DOM Model |
|
||||||
| `com.intellij.modules.vcs` | VCS Revision Numbers, File Status, Change Lists, File History, Annotations |
|
| `com.intellij.modules.vcs` | VCS Revision Numbers, File Status, Change Lists, File History, Annotations |
|
||||||
| `com.intellij.modules.xdebugger` | Debug Session, Stack Frames, Break Points, Source Positions, Memory Views, Tracked Instances |
|
| `com.intellij.modules.xdebugger` | Debug Session, Stack Frames, Break Points, Source Positions, Memory Views, Tracked Instances |
|
||||||
|
|
||||||
As of this writing, if a plugin: **A)** is dependent _only_ on one or more of the modules in the table above, **and B)** declares those module dependencies in <path>plugin.xml</path>, then any product developed by JetBrains based on the IntelliJ Platform will load it.
|
As of this writing, if a plugin: **A)** is dependent _only_ on one or more of the modules in the table above, **and B)** declares those module dependencies in <path>plugin.xml</path>, then any product developed by JetBrains based on the IntelliJ Platform will load it.
|
||||||
|
|
||||||
@ -59,32 +59,32 @@ For example, the `com.intellij.modules.python` module supports the Python langua
|
|||||||
If a plugin uses this module's functionality, such as Python-specific inspections and refactoring, it must declare a dependency on this module.
|
If a plugin uses this module's functionality, such as Python-specific inspections and refactoring, it must declare a dependency on this module.
|
||||||
|
|
||||||
Note that not all products define and declare modules.
|
Note that not all products define and declare modules.
|
||||||
For example, PhpStorm does not have its own module, but the product itself depends on (and ships with) the PHP language plugin.
|
For example, PhpStorm does not have its own module, but the product itself depends on (and ships with) the PHP language plugin.
|
||||||
A plugin project is compatible with PHP functionality if it declares a dependency on this PHP language plugin.
|
A plugin project is compatible with PHP functionality if it declares a dependency on this PHP language plugin.
|
||||||
|
|
||||||
> A high-level feature comparison tool for JetBrains IDEs is available [here](https://www.jetbrains.com/products/compare/).
|
> A high-level feature comparison tool for JetBrains IDEs is available [here](https://www.jetbrains.com/products/compare/).
|
||||||
>
|
>
|
||||||
{type="tip"}
|
{type="tip"}
|
||||||
|
|
||||||
|
|
||||||
The following table lists **(1)** modules or built-in plugins that provide specific functionality, and the products currently shipping with them.
|
The following table lists **(1)** modules or built-in plugins that provide specific functionality, and the products currently shipping with them.
|
||||||
|
|
||||||
| Module or Plugin for `<depends>` Element<br/>Declaration in <path>plugin.xml</path> File | <br/>Functionality | IntelliJ Platform-Based<br/>Product Compatibility |
|
| Module or Plugin for `<depends>` Element<br/>Declaration in <path>plugin.xml</path> File | <br/>Functionality | IntelliJ Platform-Based<br/>Product Compatibility |
|
||||||
| ---------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| `com.intellij.modules.java` See **(2)** below. <br/>`com.intellij.java` | **Java** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | IntelliJ IDEA, Android Studio |
|
| `com.intellij.modules.java` See **(2)** below. <br/>`com.intellij.java` | **Java** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | IntelliJ IDEA, Android Studio |
|
||||||
| `com.intellij.modules.androidstudio` | Android SDK Platform, Build Tools, Platform Tools, SDK Tools | Android Studio |
|
| `com.intellij.modules.androidstudio` | Android SDK Platform, Build Tools, Platform Tools, SDK Tools | Android Studio |
|
||||||
| `com.intellij.modules.appcode` | CocoaPods, Core Data Objects, Device & Simulator Support | AppCode |
|
| `com.intellij.modules.appcode` | CocoaPods, Core Data Objects, Device & Simulator Support | AppCode |
|
||||||
| `com.intellij.modules.cidr.lang` | **C, C++, Objective-C/C++** language PSI Model, Swift/Objective-C Interaction, Inspections, Intentions, Completion, Refactoring, Test Framework | AppCode, CLion |
|
| `com.intellij.modules.cidr.lang` | **C, C++, Objective-C/C++** language PSI Model, Swift/Objective-C Interaction, Inspections, Intentions, Completion, Refactoring, Test Framework | AppCode, CLion |
|
||||||
| `com.intellij.modules.cidr.debugger` | Debugger Watches, Evaluations, Breakpoints, Inline Debugging | AppCode, CLion, RubyMine |
|
| `com.intellij.modules.cidr.debugger` | Debugger Watches, Evaluations, Breakpoints, Inline Debugging | AppCode, CLion, RubyMine |
|
||||||
| `com.intellij.modules.clion` | CMake, Profiler, Embedded Development, Remote Development, Remote Debug, Disassembly | CLion |
|
| `com.intellij.modules.clion` | CMake, Profiler, Embedded Development, Remote Development, Remote Debug, Disassembly | CLion |
|
||||||
| `com.intellij.database` | **Database Tools and SQL** language PSI Model, Inspections, Completion, Refactoring, Queries | DataGrip, IntelliJ IDEA Ultimate, AppCode, PhpStorm, PyCharm Professional, RubyMine, CLion, GoLand, Rider, and WebStorm if the Database Tools and SQL plugin is installed. |
|
| `com.intellij.database` | **Database Tools and SQL** language PSI Model, Inspections, Completion, Refactoring, Queries | DataGrip, IntelliJ IDEA Ultimate, AppCode, PhpStorm, PyCharm Professional, RubyMine, CLion, GoLand, Rider, and WebStorm if the Database Tools and SQL plugin is installed. |
|
||||||
| `com.intellij.modules.go` | **Go** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | GoLand |
|
| `com.intellij.modules.go` | **Go** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | GoLand |
|
||||||
| `com.intellij.modules.python` | **Python** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | PyCharm, and other products if the Python plugin is installed. |
|
| `com.intellij.modules.python` | **Python** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | PyCharm, and other products if the Python plugin is installed. |
|
||||||
| `com.intellij.modules.rider` | Connection to **ReSharper** Process in Background | Rider |
|
| `com.intellij.modules.rider` | Connection to **ReSharper** Process in Background | Rider |
|
||||||
| `com.intellij.modules.ruby` | **Ruby** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | RubyMine, and IntelliJ IDEA Ultimate if the Ruby plugin is installed. |
|
| `com.intellij.modules.ruby` | **Ruby** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | RubyMine, and IntelliJ IDEA Ultimate if the Ruby plugin is installed. |
|
||||||
| `com.intellij.modules.ultimate` | Licensing | All commercial IDEs (IntelliJ IDEA Ultimate, PhpStorm, DataGrip, ...) |
|
| `com.intellij.modules.ultimate` | Licensing | All commercial IDEs (IntelliJ IDEA Ultimate, PhpStorm, DataGrip, ...) |
|
||||||
| `com.jetbrains.php` | **PHP** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | PhpStorm, and other products if the PHP plugin is installed. |
|
| `com.jetbrains.php` | **PHP** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | PhpStorm, and other products if the PHP plugin is installed. |
|
||||||
| `JavaScript` | **JavaScript** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | WebStorm, and other products if the JavaScript plugin is installed. |
|
| `JavaScript` | **JavaScript** language PSI Model, Inspections, Intentions, Completion, Refactoring, Test Framework | WebStorm, and other products if the JavaScript plugin is installed. |
|
||||||
|
|
||||||
**Notes about Module and Plugin Dependency:**
|
**Notes about Module and Plugin Dependency:**
|
||||||
|
|
||||||
@ -123,9 +123,9 @@ Drill down into the JAR files to expose the packages and (decompiled) classes.
|
|||||||
|
|
||||||
### Exploring APIs as an Extender
|
### Exploring APIs as an Extender
|
||||||
If a project is dependent on a plugin or module, in some cases, the project can also [extend](plugin_extensions.md) the functionality available from the plugin or module.
|
If a project is dependent on a plugin or module, in some cases, the project can also [extend](plugin_extensions.md) the functionality available from the plugin or module.
|
||||||
|
|
||||||
> See [Explore the IntelliJ Platform API](explore_api.md) for more information and strategies.
|
> See [Explore the IntelliJ Platform API](explore_api.md) for more information and strategies.
|
||||||
> Dedicated Extension Point Lists specific to IDEs are available under _Part VIII - Product Specific_.
|
> Dedicated Extension Point Lists specific to IDEs are available under _Part VIII - Product Specific_.
|
||||||
>
|
>
|
||||||
{type="tip"}
|
{type="tip"}
|
||||||
|
|
||||||
@ -152,4 +152,4 @@ The compatibility information determines if plugins are available at the plugin
|
|||||||
|
|
||||||
## Platform API Version Compatibility
|
## Platform API Version Compatibility
|
||||||
The API of IntelliJ Platform and bundled plugins may change between releases.
|
The API of IntelliJ Platform and bundled plugins may change between releases.
|
||||||
The significant changes that may break plugins are listed on [Incompatible Changes in IntelliJ Platform and Plugins API](api_changes_list.md) page.
|
The significant changes that may break plugins are listed on [Incompatible Changes in IntelliJ Platform and Plugins API](api_changes_list.md) page.
|
||||||
|
@ -8,7 +8,7 @@ If you intend to use a plugin repository _other than_ the [JetBrains Plugins Rep
|
|||||||
* Upload your plugin JAR/ZIP file to an HTTPS web server.
|
* Upload your plugin JAR/ZIP file to an HTTPS web server.
|
||||||
This can be the same web server you are using for the custom repository or a different HTTPS web server.
|
This can be the same web server you are using for the custom repository or a different HTTPS web server.
|
||||||
* Add the URL for the custom repository to the JetBrains IDE [Repository Settings/Preferences](https://www.jetbrains.com/help/idea/managing-plugins.html#repos).
|
* Add the URL for the custom repository to the JetBrains IDE [Repository Settings/Preferences](https://www.jetbrains.com/help/idea/managing-plugins.html#repos).
|
||||||
|
|
||||||
> Gradle plugin [IntelliJ plugin uploader](https://github.com/brian-mcnamara/plugin_uploader) can be used to automate deployment.
|
> Gradle plugin [IntelliJ plugin uploader](https://github.com/brian-mcnamara/plugin_uploader) can be used to automate deployment.
|
||||||
>
|
>
|
||||||
{type="tip"}
|
{type="tip"}
|
||||||
@ -67,8 +67,8 @@ During plugin installation the IDE reads the plugin JAR/ZIP file, and thereafter
|
|||||||
What additional information might help a user select a plugin when [browsing the custom plugin repository](https://www.jetbrains.com/help/idea/managing-plugins.html#repos) before installation? The answer depends on the plugins and repository consumers.
|
What additional information might help a user select a plugin when [browsing the custom plugin repository](https://www.jetbrains.com/help/idea/managing-plugins.html#repos) before installation? The answer depends on the plugins and repository consumers.
|
||||||
Here are the candidate elements:
|
Here are the candidate elements:
|
||||||
|
|
||||||
| Element | Effects & Requirements |
|
| Element | Effects & Requirements |
|
||||||
|:-------------------------------------------------------------|:----------------------------|
|
|:--------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| `<name>`<br/>My Plugin Name<br/>`</name>` | By default the name of the plugin JAR/ZIP file is displayed before installation. <br/>Using the `<name>` element displays the name of the plugin. <br/>Contents should match the `<name>` element contents in the plugins's `plugin.xml` file to avoid confusion. |
|
| `<name>`<br/>My Plugin Name<br/>`</name>` | By default the name of the plugin JAR/ZIP file is displayed before installation. <br/>Using the `<name>` element displays the name of the plugin. <br/>Contents should match the `<name>` element contents in the plugins's `plugin.xml` file to avoid confusion. |
|
||||||
| `<description>`<br/>My plugin is awesome<br/>`</description>` | By default no description for the plugin is displayed before installation. <br/>Using the `<description>` element will cause a description to be displayed before installation. <br/>Contents should match the `<description>` element contents in the plugins's `plugin.xml` file to avoid confusion. <br/>Optionally, an enclosing `<![CDATA[ ]]>` element can be used if the description needs to contain HTML tags. |
|
| `<description>`<br/>My plugin is awesome<br/>`</description>` | By default no description for the plugin is displayed before installation. <br/>Using the `<description>` element will cause a description to be displayed before installation. <br/>Contents should match the `<description>` element contents in the plugins's `plugin.xml` file to avoid confusion. <br/>Optionally, an enclosing `<![CDATA[ ]]>` element can be used if the description needs to contain HTML tags. |
|
||||||
| `<change-notes>`<br/>Added cool feature<br/>`</change-notes>` | By default no change notes for the plugin are displayed before installation. <br/>Using the `<change-notes>` element will cause a description of changes to be displayed before installation. <br/>Contents should match the `<change-notes>` element contents in the plugin's `plugin.xml` file to avoid confusion. <br/>Optionally, an enclosing `<![CDATA[ ]]>` element can be used if the change notes need to contain HTML tags. |
|
| `<change-notes>`<br/>Added cool feature<br/>`</change-notes>` | By default no change notes for the plugin are displayed before installation. <br/>Using the `<change-notes>` element will cause a description of changes to be displayed before installation. <br/>Contents should match the `<change-notes>` element contents in the plugin's `plugin.xml` file to avoid confusion. <br/>Optionally, an enclosing `<![CDATA[ ]]>` element can be used if the change notes need to contain HTML tags. |
|
||||||
|
@ -18,7 +18,7 @@ _Common Utility Method:_
|
|||||||
```
|
```
|
||||||
|
|
||||||
### Retrieve Stored Credentials
|
### Retrieve Stored Credentials
|
||||||
|
|
||||||
```java
|
```java
|
||||||
String key = null; // e.g. serverURL, accountID
|
String key = null; // e.g. serverURL, accountID
|
||||||
CredentialAttributes credentialAttributes = createCredentialAttributes(key);
|
CredentialAttributes credentialAttributes = createCredentialAttributes(key);
|
||||||
@ -47,7 +47,7 @@ To remove stored credentials, pass `null` for the `credentials` parameter.
|
|||||||
The default storage format depends on the OS.
|
The default storage format depends on the OS.
|
||||||
|
|
||||||
| OS | Storage |
|
| OS | Storage |
|
||||||
| ------- | ----------------------------------------------------- |
|
|---------|-------------------------------------------------------|
|
||||||
| Windows | File in [KeePass][Windows] format |
|
| Windows | File in [KeePass][Windows] format |
|
||||||
| macOS | Keychain using [Security Framework][macOS] |
|
| macOS | Keychain using [Security Framework][macOS] |
|
||||||
| Linux | [Secret Service API][linux] using [libsecret][linux2] |
|
| Linux | [Secret Service API][linux] using [libsecret][linux2] |
|
||||||
@ -57,4 +57,4 @@ The default storage format depends on the OS.
|
|||||||
[linux]: https://specifications.freedesktop.org/secret-service/latest/
|
[linux]: https://specifications.freedesktop.org/secret-service/latest/
|
||||||
[linux2]: https://wiki.gnome.org/Projects/Libsecret
|
[linux2]: https://wiki.gnome.org/Projects/Libsecret
|
||||||
|
|
||||||
Users can override the default behavior in <menupath>Settings/Preferences | Appearance & Behavior | System Settings | Passwords</menupath>.
|
Users can override the default behavior in <menupath>Settings/Preferences | Appearance & Behavior | System Settings | Passwords</menupath>.
|
||||||
|
@ -15,7 +15,7 @@ They also appear in the Settings/Preferences [Plugin Manager](https://www.jetbra
|
|||||||
Whether online or in the product UI, a Plugin Logo helps users to identify a plugin more quickly in a list, as shown below:
|
Whether online or in the product UI, a Plugin Logo helps users to identify a plugin more quickly in a list, as shown below:
|
||||||
|
|
||||||
{width="800"}
|
{width="800"}
|
||||||
|
|
||||||
> When browsing [custom plugin repositories](update_plugins_format.md), there is no support for showing logos for plugins hosted there but not yet installed.
|
> When browsing [custom plugin repositories](update_plugins_format.md), there is no support for showing logos for plugins hosted there but not yet installed.
|
||||||
>
|
>
|
||||||
{type="note"}
|
{type="note"}
|
||||||
@ -49,11 +49,11 @@ See more examples of [visual weight compensation](https://jetbrains.design/intel
|
|||||||
For basic shapes, use the following sizes.
|
For basic shapes, use the following sizes.
|
||||||
Note the different areas of transparent padding used for each shape:
|
Note the different areas of transparent padding used for each shape:
|
||||||
|
|
||||||
| {width="225"} | {:width="225"} |
|
| {width="225"} | {:width="225"} |
|
||||||
|:---:|:---:|
|
|:---------------------------------------------------------------------------:|:------------------------------------------------------------------------:|
|
||||||
| _Square logo 32px by 32px_ | _Circular logo 36px in diameter_ |
|
| _Square logo 32px by 32px_ | _Circular logo 36px in diameter_ |
|
||||||
| {width="225"} | {:width="225"} |
|
| {width="225"} | {:width="225"} |
|
||||||
| _Horizontal rectangular logo 36px by 26px_ | _Vertical rectangular logo 26px by 36px_ |
|
| _Horizontal rectangular logo 36px by 26px_ | _Vertical rectangular logo 26px by 36px_ |
|
||||||
|
|
||||||
|
|
||||||
### Plugin Logo Colors
|
### Plugin Logo Colors
|
||||||
@ -62,17 +62,17 @@ Check the license terms before using the logo.
|
|||||||
If there is no existing logo, or its use is prohibited, create a custom logo based on the [Action Colors Palette](https://jetbrains.design/intellij/principles/icons/#action-icons) in the IntelliJ Platform UI Guidelines for Icons.
|
If there is no existing logo, or its use is prohibited, create a custom logo based on the [Action Colors Palette](https://jetbrains.design/intellij/principles/icons/#action-icons) in the IntelliJ Platform UI Guidelines for Icons.
|
||||||
|
|
||||||
| {height="200" width="200"} | {:height="200" width="200"} |
|
| {height="200" width="200"} | {:height="200" width="200"} |
|
||||||
|:---:|:---:|
|
|:--------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------:|
|
||||||
| _The YouTrack Plugin Logo uses<br/>the YouTrack product logo_ | _The Keymap Plugin Logo uses a color<br/>from the Action Colors Palette_ |
|
| _The YouTrack Plugin Logo uses<br/>the YouTrack product logo_ | _The Keymap Plugin Logo uses a color<br/>from the Action Colors Palette_ |
|
||||||
|
|
||||||
Ensure a Plugin Logo is visible on both light and dark backgrounds.
|
Ensure a Plugin Logo is visible on both light and dark backgrounds.
|
||||||
If one Plugin Logo design does not work on both light and dark backgrounds, create separate light and dark versions of the Plugin Logo.
|
If one Plugin Logo design does not work on both light and dark backgrounds, create separate light and dark versions of the Plugin Logo.
|
||||||
The examples below illustrate how a Plugin Logo design may work well for a light background but not for a dark background.
|
The examples below illustrate how a Plugin Logo design may work well for a light background but not for a dark background.
|
||||||
Consequently, a separate Plugin Logo for dark backgrounds is needed.
|
Consequently, a separate Plugin Logo for dark backgrounds is needed.
|
||||||
|
|
||||||
| {width="225"} | {:width="225"} | {:width="225"} |
|
| {width="225"} | {:width="225"} | {:width="225"} |
|
||||||
|:---:|:---:|:---:|
|
|:----------------------------------------------------------------:|:------------------------------------------------------------------------:|:---------------------------------------------------------------------:|
|
||||||
| _The light Plugin Logo design<br/>works well on light UI Theme_ | _The light Plugin Logo design does<br/>not work well on a dark UI Theme_ | _A separate, dark Plugin Logo design<br/>works well on dark UI Theme_ |
|
| _The light Plugin Logo design<br/>works well on light UI Theme_ | _The light Plugin Logo design does<br/>not work well on a dark UI Theme_ | _A separate, dark Plugin Logo design<br/>works well on dark UI Theme_ |
|
||||||
|
|
||||||
### Plugin Logo File Format
|
### Plugin Logo File Format
|
||||||
All Plugin Logo images must be in SVG format.
|
All Plugin Logo images must be in SVG format.
|
||||||
@ -90,4 +90,4 @@ The Plugin Logo files must be in the <path>META-INF</path> folder of the plugin
|
|||||||
To include Plugin Logo files in your distribution file, place the Plugin Logo files into a plugin project's <path>resources/META-INF</path> folder.
|
To include Plugin Logo files in your distribution file, place the Plugin Logo files into a plugin project's <path>resources/META-INF</path> folder.
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
{width="450"}
|
{width="450"}
|
||||||
|
@ -25,8 +25,8 @@ Instead, configure AppCode plugin projects to use the `intellij.localPath` attri
|
|||||||
The table below summarizes the `gradle-intellij-plugin` attributes to set in the plugin project's <path>build.gradle</path> file.
|
The table below summarizes the `gradle-intellij-plugin` attributes to set in the plugin project's <path>build.gradle</path> file.
|
||||||
Click on an entry in the table's *Attribute* column to go to the documentation about that attribute.
|
Click on an entry in the table's *Attribute* column to go to the documentation about that attribute.
|
||||||
|
|
||||||
| `gradle-intellij-plugin` Attribute | Attribute Value |
|
| `gradle-intellij-plugin` Attribute | Attribute Value |
|
||||||
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| [`intellij.localPath`][properties] | Path to locally installed target version of AppCode. For example, for macOS:<br/><path>/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/AppCode/ch-0/193.5662.55/AppCode.app/Contents</path>. |
|
| [`intellij.localPath`][properties] | Path to locally installed target version of AppCode. For example, for macOS:<br/><path>/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/AppCode/ch-0/193.5662.55/AppCode.app/Contents</path>. |
|
||||||
| [`runIde.ideDir`][dsl] | Path to locally installed target version of AppCode. For example, for macOS:<br/><path>/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/AppCode/ch-0/193.5662.55/AppCode.app/Contents</path>. |
|
| [`runIde.ideDir`][dsl] | Path to locally installed target version of AppCode. For example, for macOS:<br/><path>/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/AppCode/ch-0/193.5662.55/AppCode.app/Contents</path>. |
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ The table below summarizes the `gradle-intellij-plugin` attributes to set in the
|
|||||||
Click on an entry in the table's *Attribute* column to go to the documentation about that attribute.
|
Click on an entry in the table's *Attribute* column to go to the documentation about that attribute.
|
||||||
|
|
||||||
| `gradle-intellij-plugin` Attribute | Attribute Value |
|
| `gradle-intellij-plugin` Attribute | Attribute Value |
|
||||||
| ---------------------------------------- | ------------------------------------------------------------------------------ |
|
|------------------------------------------|--------------------------------------------------------------------------------|
|
||||||
| [`intellij.type`][properties] | `CL` for the product CLion. |
|
| [`intellij.type`][properties] | `CL` for the product CLion. |
|
||||||
| [`intellij.version`][properties] | Set to the targeted CLion version, e.g. `2019.3.1`. |
|
| [`intellij.version`][properties] | Set to the targeted CLion version, e.g. `2019.3.1`. |
|
||||||
| [`intellij.plugins`][properties] | No specific declaration is needed. |
|
| [`intellij.plugins`][properties] | No specific declaration is needed. |
|
||||||
|
@ -22,7 +22,7 @@ Click on an entry in the table's *Attribute* column to go to the documentation a
|
|||||||
To see how these attributes appear in a similar <path>build.gradle</path> file for PhpStorm, see [Configuring build.gradle using the IntelliJ IDEA Product Attribute](dev_alternate_products.md#configuring-buildgradle-using-the-intellij-idea-product-attribute).
|
To see how these attributes appear in a similar <path>build.gradle</path> file for PhpStorm, see [Configuring build.gradle using the IntelliJ IDEA Product Attribute](dev_alternate_products.md#configuring-buildgradle-using-the-intellij-idea-product-attribute).
|
||||||
|
|
||||||
| `gradle-intellij-plugin` Attribute | Attribute Value |
|
| `gradle-intellij-plugin` Attribute | Attribute Value |
|
||||||
| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| [`intellij.type`][properties] | `IU` for IntelliJ IDEA Ultimate.<br/>(`IC` is incompatible with the required `DatabaseTools` plugin.) |
|
| [`intellij.type`][properties] | `IU` for IntelliJ IDEA Ultimate.<br/>(`IC` is incompatible with the required `DatabaseTools` plugin.) |
|
||||||
| [`intellij.version`][properties] | `2019.3` Set to the same version as the DataGrip target version, as set by `runIde.ideDir`. |
|
| [`intellij.version`][properties] | `2019.3` Set to the same version as the DataGrip target version, as set by `runIde.ideDir`. |
|
||||||
| [`intellij.plugins`][properties] | `plugins 'DatabaseTools'` Dependency on the bundled `DatabaseTools` plugin. |
|
| [`intellij.plugins`][properties] | `plugins 'DatabaseTools'` Dependency on the bundled `DatabaseTools` plugin. |
|
||||||
|
@ -41,11 +41,11 @@ To see how these attributes appear in a similar <path>build.gradle</path> file f
|
|||||||
The Go plugin version is explicitly declared because it isn't bundled with IntelliJ IDEA Ultimate Edition.
|
The Go plugin version is explicitly declared because it isn't bundled with IntelliJ IDEA Ultimate Edition.
|
||||||
Select a [version](https://plugins.jetbrains.com/plugin/9568-go/versions) of the Go plugin compatible with the IntelliJ Idea Ultimate version.
|
Select a [version](https://plugins.jetbrains.com/plugin/9568-go/versions) of the Go plugin compatible with the IntelliJ Idea Ultimate version.
|
||||||
|
|
||||||
| `gradle-intellij-plugin` Attribute | Attribute Value |
|
| `gradle-intellij-plugin` Attribute | Attribute Value |
|
||||||
| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| [`intellij.type`][properties] | `IU` for IntelliJ IDEA Ultimate. The Go plugin isn't compatible with IntelliJ IDEA Community Edition. |
|
| [`intellij.type`][properties] | `IU` for IntelliJ IDEA Ultimate. The Go plugin isn't compatible with IntelliJ IDEA Community Edition. |
|
||||||
| [`intellij.version`][properties] | Set to the same `IU` BRANCH.BUILD as the GoLand target version, e.g. `193.5233.102`. |
|
| [`intellij.version`][properties] | Set to the same `IU` BRANCH.BUILD as the GoLand target version, e.g. `193.5233.102`. |
|
||||||
| [`intellij.plugins`][properties] | `org.jetbrains.plugins.go:193.5233.102.83` for the Go plugin.<br/>See below for Go plugin version information. |
|
| [`intellij.plugins`][properties] | `org.jetbrains.plugins.go:193.5233.102.83` for the Go plugin.<br/>See below for Go plugin version information. |
|
||||||
| [`runIde.ideDir`][dsl] | Path to locally installed target version of GoLand. For example, on macOS:<br/><path>/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/Goland/ch-0/193.5233.112/GoLand.app/Contents</path>. |
|
| [`runIde.ideDir`][dsl] | Path to locally installed target version of GoLand. For example, on macOS:<br/><path>/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/Goland/ch-0/193.5233.112/GoLand.app/Contents</path>. |
|
||||||
|
|
||||||
[properties]: https://github.com/JetBrains/gradle-intellij-plugin/blob/master/README.md#intellij-platform-properties
|
[properties]: https://github.com/JetBrains/gradle-intellij-plugin/blob/master/README.md#intellij-platform-properties
|
||||||
|
@ -58,7 +58,7 @@ Nette is a family of mature and stand-alone components for PHP that create a fra
|
|||||||
* [Official Nette web site](https://nette.org/en/)
|
* [Official Nette web site](https://nette.org/en/)
|
||||||
|
|
||||||
| Name | Description | Website | GitHub | Plugin |
|
| Name | Description | Website | GitHub | Plugin |
|
||||||
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | -------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
|
|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------|----------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|
|
||||||
| Nette framework helpers | Nette framework helpers make application development in Nette easier. The plugin provides code completion and navigation for Nette components, annotations, and DI service methods in PHP code. It also implements PHP type by `PhpTypeProvider`. | [Nette web](https://nette.org/en) | [intellij-nette](https://github.com/nette-intellij/intellij-nette) | [Nette plugin](https://plugins.jetbrains.com/plugin/7231-nette-framework-helpers) |
|
| Nette framework helpers | Nette framework helpers make application development in Nette easier. The plugin provides code completion and navigation for Nette components, annotations, and DI service methods in PHP code. It also implements PHP type by `PhpTypeProvider`. | [Nette web](https://nette.org/en) | [intellij-nette](https://github.com/nette-intellij/intellij-nette) | [Nette plugin](https://plugins.jetbrains.com/plugin/7231-nette-framework-helpers) |
|
||||||
| Latte | Nette Latte plugin supports Latte language – the safest & truly intuitive templates for PHP. The plugin implements custom language. Partially support PHP like in .php files (code completion, inspections, references to classes, methods, properties, etc.). Supports load config from XML files located in the project. It implements Stub indexes and more around custom language. | [Latte web](https://latte.nette.org/en) | [intellij-latte](https://github.com/nette-intellij/intellij-latte) | [Latte plugin](https://plugins.jetbrains.com/plugin/7457-latte) |
|
| Latte | Nette Latte plugin supports Latte language – the safest & truly intuitive templates for PHP. The plugin implements custom language. Partially support PHP like in .php files (code completion, inspections, references to classes, methods, properties, etc.). Supports load config from XML files located in the project. It implements Stub indexes and more around custom language. | [Latte web](https://latte.nette.org/en) | [intellij-latte](https://github.com/nette-intellij/intellij-latte) | [Latte plugin](https://plugins.jetbrains.com/plugin/7457-latte) |
|
||||||
| Neon | Nette Neon is commonly used for any structured data, such as settings, language translations, etc. It is very similar to YAML. The plugin implements custom language. Easy implementation for Go to PHP classes and completion for classes. | [Neon web](https://ne-on.org) | [intellij-neon](https://github.com/nette-intellij/intellij-neon) | [Neon plugin](https://plugins.jetbrains.com/plugin/7060-neon-support) |
|
| Neon | Nette Neon is commonly used for any structured data, such as settings, language translations, etc. It is very similar to YAML. The plugin implements custom language. Easy implementation for Go to PHP classes and completion for classes. | [Neon web](https://ne-on.org) | [intellij-neon](https://github.com/nette-intellij/intellij-neon) | [Neon plugin](https://plugins.jetbrains.com/plugin/7060-neon-support) |
|
||||||
@ -68,4 +68,4 @@ Nette is a family of mature and stand-alone components for PHP that create a fra
|
|||||||
The PHP Annotations plugin extends PhpStorm to support annotations in PHPDoc blocks.
|
The PHP Annotations plugin extends PhpStorm to support annotations in PHPDoc blocks.
|
||||||
|
|
||||||
* [PHP Annotations in PhpStorm Plugins Repository](https://plugins.jetbrains.com/plugin/7320-php-annotations)
|
* [PHP Annotations in PhpStorm Plugins Repository](https://plugins.jetbrains.com/plugin/7320-php-annotations)
|
||||||
* [GitHub](https://github.com/Haehnchen/idea-php-annotation-plugin)
|
* [GitHub](https://github.com/Haehnchen/idea-php-annotation-plugin)
|
||||||
|
@ -24,11 +24,11 @@ The table below summarizes the `gradle-intellij-plugin` attributes to set in the
|
|||||||
Click on an entry in the table's *Attribute* column to go to the documentation about that attribute.
|
Click on an entry in the table's *Attribute* column to go to the documentation about that attribute.
|
||||||
To see how these attributes appear in the <path>build.gradle</path> file for PhpStorm, see [Configuring build.gradle using the IntelliJ IDEA Product Attribute](dev_alternate_products.md#configuring-buildgradle-using-the-intellij-idea-product-attribute).
|
To see how these attributes appear in the <path>build.gradle</path> file for PhpStorm, see [Configuring build.gradle using the IntelliJ IDEA Product Attribute](dev_alternate_products.md#configuring-buildgradle-using-the-intellij-idea-product-attribute).
|
||||||
|
|
||||||
| `gradle-intellij-plugin` Attribute | Attribute Value |
|
| `gradle-intellij-plugin` Attribute | Attribute Value |
|
||||||
| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| [`intellij.type`][properties] | `IU` for IntelliJ IDEA Ultimate. The required PHP plugin isn't compatible with IntelliJ IDEA Community Edition. |
|
| [`intellij.type`][properties] | `IU` for IntelliJ IDEA Ultimate. The required PHP plugin isn't compatible with IntelliJ IDEA Community Edition. |
|
||||||
| [`intellij.version`][properties] | Set to the same `IU` BRANCH.BUILD as the PhpStorm target version, e.g. `193.5233.102`. |
|
| [`intellij.version`][properties] | Set to the same `IU` BRANCH.BUILD as the PhpStorm target version, e.g. `193.5233.102`. |
|
||||||
| [`intellij.plugins`][properties] | `com.jetbrains.php:193.5233.102` for the PHP plugin.<br/>See below for PHP plugin version information. |
|
| [`intellij.plugins`][properties] | `com.jetbrains.php:193.5233.102` for the PHP plugin.<br/>See below for PHP plugin version information. |
|
||||||
| [`runIde.ideDir`][dsl] | Path to locally installed target version of PhpStorm. For example, on macOS:<br/><path>/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/PhpStorm/ch-0/193.5233.101/PhpStorm.app/Contents</path>. |
|
| [`runIde.ideDir`][dsl] | Path to locally installed target version of PhpStorm. For example, on macOS:<br/><path>/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/PhpStorm/ch-0/193.5233.101/PhpStorm.app/Contents</path>. |
|
||||||
|
|
||||||
[properties]: https://github.com/JetBrains/gradle-intellij-plugin/blob/master/README.md#intellij-platform-properties
|
[properties]: https://github.com/JetBrains/gradle-intellij-plugin/blob/master/README.md#intellij-platform-properties
|
||||||
|
@ -16,7 +16,7 @@ The table below summarizes the `gradle-intellij-plugin` attributes to set in the
|
|||||||
Click on an entry in the table's *Attribute* column to go to the documentation about that attribute.
|
Click on an entry in the table's *Attribute* column to go to the documentation about that attribute.
|
||||||
|
|
||||||
| `gradle-intellij-plugin` Attribute | Attribute Value |
|
| `gradle-intellij-plugin` Attribute | Attribute Value |
|
||||||
| ---------------------------------------- | ------------------------------------------------------------------------------ |
|
|------------------------------------------|--------------------------------------------------------------------------------|
|
||||||
| [`intellij.type`][properties] | `PY` for PyCharm Professional Edition, or `PC` for PyCharm Community Edition. |
|
| [`intellij.type`][properties] | `PY` for PyCharm Professional Edition, or `PC` for PyCharm Community Edition. |
|
||||||
| [`intellij.version`][properties] | Set to the targeted `PY` or `PC` version. |
|
| [`intellij.version`][properties] | Set to the targeted `PY` or `PC` version. |
|
||||||
| [`intellij.plugins`][properties] | No specific declaration is needed to use `PY` or `PC` APIs. |
|
| [`intellij.plugins`][properties] | No specific declaration is needed to use `PY` or `PC` APIs. |
|
||||||
|
@ -17,11 +17,11 @@ The table below summarizes the `gradle-intellij-plugin` attributes to set in the
|
|||||||
Click on an entry in the table's *Attribute* column to go to the documentation about that attribute.
|
Click on an entry in the table's *Attribute* column to go to the documentation about that attribute.
|
||||||
To see how these attributes appear in a similar <path>build.gradle</path> file for PhpStorm, see [Configuring build.gradle using the IntelliJ IDEA Product Attribute](dev_alternate_products.md#configuring-buildgradle-using-the-intellij-idea-product-attribute).
|
To see how these attributes appear in a similar <path>build.gradle</path> file for PhpStorm, see [Configuring build.gradle using the IntelliJ IDEA Product Attribute](dev_alternate_products.md#configuring-buildgradle-using-the-intellij-idea-product-attribute).
|
||||||
|
|
||||||
| `gradle-intellij-plugin` Attribute | Attribute Value |
|
| `gradle-intellij-plugin` Attribute | Attribute Value |
|
||||||
| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| [`intellij.type`][properties] | `IU` for IntelliJ IDEA Ultimate. |
|
| [`intellij.type`][properties] | `IU` for IntelliJ IDEA Ultimate. |
|
||||||
| [`intellij.version`][properties] | Set to the same `IU` BRANCH.BUILD as the RubyMine target version, e.g. `192.7142.36`. |
|
| [`intellij.version`][properties] | Set to the same `IU` BRANCH.BUILD as the RubyMine target version, e.g. `192.7142.36`. |
|
||||||
| [`intellij.plugins`][properties] | `org.jetbrains.plugins.ruby:2019.2.20191029` for the Ruby plugin.<br/>See below for Ruby plugin version information. |
|
| [`intellij.plugins`][properties] | `org.jetbrains.plugins.ruby:2019.2.20191029` for the Ruby plugin.<br/>See below for Ruby plugin version information. |
|
||||||
| [`runIde.ideDir`][dsl] | Path to locally installed target version of RubyMine. For example, on macOS:<br/><path>/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/RubyMine/ch-0/192.7142.37/RubyMine.app/Contents</path>. |
|
| [`runIde.ideDir`][dsl] | Path to locally installed target version of RubyMine. For example, on macOS:<br/><path>/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/RubyMine/ch-0/192.7142.37/RubyMine.app/Contents</path>. |
|
||||||
|
|
||||||
[properties]: https://github.com/JetBrains/gradle-intellij-plugin/blob/master/README.md#intellij-platform-properties
|
[properties]: https://github.com/JetBrains/gradle-intellij-plugin/blob/master/README.md#intellij-platform-properties
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
## Introduction
|
## Introduction
|
||||||
[WebStorm](https://www.jetbrains.com/webstorm/) is an IntelliJ Platform-based product.
|
[WebStorm](https://www.jetbrains.com/webstorm/) is an IntelliJ Platform-based product.
|
||||||
Plugin projects for WebStorm can be developed using IntelliJ IDEA with the `gradle-intellij-plugin`.
|
Plugin projects for WebStorm can be developed using IntelliJ IDEA with the `gradle-intellij-plugin`.
|
||||||
|
|
||||||
> Follow _Building a Plugin for WebStorm – Tutorial for JavaScript Developers_ blog post series to get started: [Part 1](https://blog.jetbrains.com/webstorm/2021/09/building-a-plugin-for-webstorm-part-1/)
|
> Follow _Building a Plugin for WebStorm – Tutorial for JavaScript Developers_ blog post series to get started: [Part 1](https://blog.jetbrains.com/webstorm/2021/09/building-a-plugin-for-webstorm-part-1/)
|
||||||
>
|
>
|
||||||
{type="note"}
|
{type="note"}
|
||||||
@ -21,11 +21,11 @@ The table below summarizes the `gradle-intellij-plugin` attributes to set in the
|
|||||||
Click on an entry in the table's *Attribute* column to go to the documentation about that attribute.
|
Click on an entry in the table's *Attribute* column to go to the documentation about that attribute.
|
||||||
To see how these attributes appear in a similar <path>build.gradle</path> file for PhpStorm, see [Configuring build.gradle using the IntelliJ IDEA Product Attribute](dev_alternate_products.md#configuring-buildgradle-using-the-intellij-idea-product-attribute).
|
To see how these attributes appear in a similar <path>build.gradle</path> file for PhpStorm, see [Configuring build.gradle using the IntelliJ IDEA Product Attribute](dev_alternate_products.md#configuring-buildgradle-using-the-intellij-idea-product-attribute).
|
||||||
|
|
||||||
| `gradle-intellij-plugin` Attribute | Attribute Value |
|
| `gradle-intellij-plugin` Attribute | Attribute Value |
|
||||||
| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| [`intellij.type`][properties] | `IU` for IntelliJ IDEA Ultimate.<br/>(`IC` is incompatible with the required `JavaScriptLanguage` plugin) |
|
| [`intellij.type`][properties] | `IU` for IntelliJ IDEA Ultimate.<br/>(`IC` is incompatible with the required `JavaScriptLanguage` plugin) |
|
||||||
| [`intellij.version`][properties] | `192.7142.36` Set to the same BRANCH.BUILD as the WebStorm target version. |
|
| [`intellij.version`][properties] | `192.7142.36` Set to the same BRANCH.BUILD as the WebStorm target version. |
|
||||||
| [`intellij.plugins`][properties] | Dependency on the `JavaScriptLanguage` plugin. |
|
| [`intellij.plugins`][properties] | Dependency on the `JavaScriptLanguage` plugin. |
|
||||||
| [`runIde.ideDir`][dsl] | Path to locally installed target version of WebStorm. For example, for macOS:<br/><path>/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/WebStorm/ch-0/192.7142.35/WebStorm.app/Contents</path>. |
|
| [`runIde.ideDir`][dsl] | Path to locally installed target version of WebStorm. For example, for macOS:<br/><path>/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/WebStorm/ch-0/192.7142.35/WebStorm.app/Contents</path>. |
|
||||||
|
|
||||||
[properties]: https://github.com/JetBrains/gradle-intellij-plugin/blob/master/README.md#intellij-platform-properties
|
[properties]: https://github.com/JetBrains/gradle-intellij-plugin/blob/master/README.md#intellij-platform-properties
|
||||||
@ -44,7 +44,7 @@ Consequently, without the `com.intellij.modules.platform` declaration the plugin
|
|||||||
|
|
||||||
Use the [Exploring APIs as a Consumer](plugin_compatibility.md#exploring-apis-as-a-consumer) process to identify the libraries <path>JavaScriptLanguage.jar</path>, and <path>javascript-openapi.jar</path>.
|
Use the [Exploring APIs as a Consumer](plugin_compatibility.md#exploring-apis-as-a-consumer) process to identify the libraries <path>JavaScriptLanguage.jar</path>, and <path>javascript-openapi.jar</path>.
|
||||||
Test your plugin with any version of WebStorm you wish to support.
|
Test your plugin with any version of WebStorm you wish to support.
|
||||||
|
|
||||||
### Javascript Testframework
|
### Javascript Testframework
|
||||||
To use existing test base classes, specify `com.jetbrains.intellij.javascript:javascript-test-framework:$VERSION$` as `testImplementation` dependency explicitly (see [IntelliJ Platform Artifacts Repositories](intellij_artifacts.md#gradle-example-for-an-individual-module-from-the-intellij-platform)) (2020.3 and later).
|
To use existing test base classes, specify `com.jetbrains.intellij.javascript:javascript-test-framework:$VERSION$` as `testImplementation` dependency explicitly (see [IntelliJ Platform Artifacts Repositories](intellij_artifacts.md#gradle-example-for-an-individual-module-from-the-intellij-platform)) (2020.3 and later).
|
||||||
|
|
||||||
|
@ -22,15 +22,15 @@ Both the Releases and Snapshots repositories have two types of content:
|
|||||||
* Artifacts for individual modules from the IntelliJ Platform.
|
* Artifacts for individual modules from the IntelliJ Platform.
|
||||||
These may be downloaded, or accessed directly from a `build.gradle` file, as explained below.
|
These may be downloaded, or accessed directly from a `build.gradle` file, as explained below.
|
||||||
|
|
||||||
### Third-Party Dependencies
|
### Third-Party Dependencies
|
||||||
|
|
||||||
Artifacts for IntelliJ Platform third-party dependencies are hosted at a separate [intellij-dependencies](https://cache-redirector.jetbrains.com/intellij-dependencies) repository.
|
Artifacts for IntelliJ Platform third-party dependencies are hosted at a separate [intellij-dependencies](https://cache-redirector.jetbrains.com/intellij-dependencies) repository.
|
||||||
A link to this repository should be added to `pom.xml`/`build.gradle` files when individual modules from an IntelliJ Platform artifacts repository are used.
|
A link to this repository should be added to `pom.xml`/`build.gradle` files when individual modules from an IntelliJ Platform artifacts repository are used.
|
||||||
|
|
||||||
> Usages of deprecated URL `https://jetbrains.bintray.com/intellij-third-party-dependencies` must be replaced with `https://cache-redirector.jetbrains.com/intellij-dependencies` in build scripts.
|
> Usages of deprecated URL `https://jetbrains.bintray.com/intellij-third-party-dependencies` must be replaced with `https://cache-redirector.jetbrains.com/intellij-dependencies` in build scripts.
|
||||||
>
|
>
|
||||||
{type="warning"}
|
{type="warning"}
|
||||||
|
|
||||||
## Using IntelliJ Platform Module Artifacts
|
## Using IntelliJ Platform Module Artifacts
|
||||||
IntelliJ Platform module artifacts are utilized by adding information to a project's `build.gradle` file.
|
IntelliJ Platform module artifacts are utilized by adding information to a project's `build.gradle` file.
|
||||||
More information about [Gradle support](https://www.jetbrains.com/help/idea/gradle.html) is available in the IntelliJ IDEA Help documentation.
|
More information about [Gradle support](https://www.jetbrains.com/help/idea/gradle.html) is available in the IntelliJ IDEA Help documentation.
|
||||||
@ -61,7 +61,7 @@ Portions of the module name expressed in `camelCase` format are divided and used
|
|||||||
The table below shows some example module names and their corresponding groupId and artifactId.
|
The table below shows some example module names and their corresponding groupId and artifactId.
|
||||||
|
|
||||||
| Module Name | groupId | artifactId |
|
| Module Name | groupId | artifactId |
|
||||||
| ------------------------------- | ------------------------------- | ----------------------- |
|
|---------------------------------|---------------------------------|-------------------------|
|
||||||
| intellij.java.compiler.antTasks | com.jetbrains.intellij.java | java-compiler-ant-tasks |
|
| intellij.java.compiler.antTasks | com.jetbrains.intellij.java | java-compiler-ant-tasks |
|
||||||
| intellij.java.debugger | com.jetbrains.intellij.java | java-debugger |
|
| intellij.java.debugger | com.jetbrains.intellij.java | java-debugger |
|
||||||
| intellij.platform.util | com.jetbrains.intellij.platform | util |
|
| intellij.platform.util | com.jetbrains.intellij.platform | util |
|
||||||
|
@ -24,14 +24,14 @@ The _UI Inspector_ displays that the icon has the internal path `AllIcons.Action
|
|||||||
Various components used in the IntelliJ Platform expose additional properties.
|
Various components used in the IntelliJ Platform expose additional properties.
|
||||||
These can be useful to locate the underlying implementation, related Action, etc.
|
These can be useful to locate the underlying implementation, related Action, etc.
|
||||||
|
|
||||||
| Type | Place | Properties |
|
| Type | Place | Properties |
|
||||||
| ----------------------------------------------- | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
|
|-------------------------------------------------|-----------------------------|--------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| [`AnAction`][ActionSystem] | Action Button<br/>Menu Item | `Action` - [`AnAction`][us:AnAction] implementation<br/>`Action ID` - Action `id`<br/>`Action Plugin ID` - contributing plugin |
|
| [`AnAction`][ActionSystem] | Action Button<br/>Menu Item | `Action` - [`AnAction`][us:AnAction] implementation<br/>`Action ID` - Action `id`<br/>`Action Plugin ID` - contributing plugin |
|
||||||
| [`ActionToolbar`][ActionSystem] | Action Toolbar | `Toolbar Group` - Action Group ID<br/>`All Groups` - contained Action Group IDs |
|
| [`ActionToolbar`][ActionSystem] | Action Toolbar | `Toolbar Group` - Action Group ID<br/>`All Groups` - contained Action Group IDs |
|
||||||
| [`DialogWrapper`][DialogWrapper] | Modal Dialog | `dialogWrapperClass` - [`DialogWrapper`][us:DialogWrapper] implementation |
|
| [`DialogWrapper`][DialogWrapper] | Modal Dialog | `dialogWrapperClass` - [`DialogWrapper`][us:DialogWrapper] implementation |
|
||||||
| [`GutterMark`][us:GutterMark] | Editor Gutter Icon | `gutter renderer` - [`GutterMark`][us:GutterMark] implementation |
|
| [`GutterMark`][us:GutterMark] | Editor Gutter Icon | `gutter renderer` - [`GutterMark`][us:GutterMark] implementation |
|
||||||
| [`IntentionAction`/`QuickFix`][IntentionAction] | Popup Menu in Editor | `intention action`/`quick fix` - [`IntentionAction`][us:IntentionAction] / [`QuickFix`][us:QuickFix] implementation |
|
| [`IntentionAction`/`QuickFix`][IntentionAction] | Popup Menu in Editor | `intention action`/`quick fix` - [`IntentionAction`][us:IntentionAction] / [`QuickFix`][us:QuickFix] implementation |
|
||||||
| [`Tree`][Tree] | Tree | `treeModelClass` - `javax.swing.tree.TreeModel` implementation |
|
| [`Tree`][Tree] | Tree | `treeModelClass` - `javax.swing.tree.TreeModel` implementation |
|
||||||
|
|
||||||
[ActionSystem]: basic_action_system.md
|
[ActionSystem]: basic_action_system.md
|
||||||
[DialogWrapper]: dialog_wrapper.md
|
[DialogWrapper]: dialog_wrapper.md
|
||||||
@ -43,4 +43,4 @@ These can be useful to locate the underlying implementation, related Action, etc
|
|||||||
[us:IntentionAction]: upsource:///platform/analysis-api/src/com/intellij/codeInsight/intention/IntentionAction.java
|
[us:IntentionAction]: upsource:///platform/analysis-api/src/com/intellij/codeInsight/intention/IntentionAction.java
|
||||||
[us:QuickFix]: upsource:///platform/analysis-api/src/com/intellij/codeInspection/QuickFix.java
|
[us:QuickFix]: upsource:///platform/analysis-api/src/com/intellij/codeInspection/QuickFix.java
|
||||||
|
|
||||||
Custom Swing components can also provide additional properties via [`UiInspectorContextProvider`](upsource:///platform/platform-impl/src/com/intellij/internal/inspector/UiInspectorContextProvider.java) (2020.1 and later).
|
Custom Swing components can also provide additional properties via [`UiInspectorContextProvider`](upsource:///platform/platform-impl/src/com/intellij/internal/inspector/UiInspectorContextProvider.java) (2020.1 and later).
|
||||||
|
@ -8,7 +8,7 @@ These parent groups are the existing categories of Settings in the IntelliJ Plat
|
|||||||
However, suppose the custom Settings are rich enough to require multiple levels?
|
However, suppose the custom Settings are rich enough to require multiple levels?
|
||||||
For example, a custom Setting implementation has multiple sub-Settings implementations.
|
For example, a custom Setting implementation has multiple sub-Settings implementations.
|
||||||
Extension Point declarations can create this kind of multilayer Settings hierarchy.
|
Extension Point declarations can create this kind of multilayer Settings hierarchy.
|
||||||
|
|
||||||
## Extension Points for Parent-Child Settings Relationships
|
## Extension Points for Parent-Child Settings Relationships
|
||||||
There are multiple ways of creating parent-child relationships in groups of Settings: in implementations, or Extension Point declarations.
|
There are multiple ways of creating parent-child relationships in groups of Settings: in implementations, or Extension Point declarations.
|
||||||
However, there are performance penalties for creating these relationships in implementations because the objects must be instantiated to determine the relationships.
|
However, there are performance penalties for creating these relationships in implementations because the objects must be instantiated to determine the relationships.
|
||||||
@ -75,9 +75,9 @@ The other attributes are the same as discussed in [Settings EP Attributes](setti
|
|||||||
|
|
||||||
For the child of a parent, the `id` attribute becomes compound:
|
For the child of a parent, the `id` attribute becomes compound:
|
||||||
|
|
||||||
| Attribute | Required | Value |
|
| Attribute | Required | Value |
|
||||||
|:--- | :---: |:--- |
|
|:----------|:--------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| `id` | Y | Compound FQN of implementation based on `com.intellij.openapi.options.Configurable` in the form: `XX.YY` where:<br/>`XX` is the parent Settings component FQN-based id.<br/>`YY` is unique to the child among other siblings. |
|
| `id` | Y | Compound FQN of implementation based on `com.intellij.openapi.options.Configurable` in the form: `XX.YY` where:<br/>`XX` is the parent Settings component FQN-based id.<br/>`YY` is unique to the child among other siblings. |
|
||||||
|
|
||||||
> All children share the parent's `id` as the basis of their own `id`.
|
> All children share the parent's `id` as the basis of their own `id`.
|
||||||
> All children have an `id` suffix that is unique among their siblings.
|
> All children have an `id` suffix that is unique among their siblings.
|
||||||
@ -91,4 +91,4 @@ For more information about creating Settings implementations, see [Implementatio
|
|||||||
### Configurable Marker Interfaces
|
### Configurable Marker Interfaces
|
||||||
The `Configurable.Composite` interface indicates a configurable component has child components.
|
The `Configurable.Composite` interface indicates a configurable component has child components.
|
||||||
The preferred approach is to specify child components in the [EP declaration](#extension-points-for-parent-child-settings-relationships).
|
The preferred approach is to specify child components in the [EP declaration](#extension-points-for-parent-child-settings-relationships).
|
||||||
Using the `Composite` interface incurs the penalty of loading child classes while building the tree of Settings Swing components.
|
Using the `Composite` interface incurs the penalty of loading child classes while building the tree of Settings Swing components.
|
||||||
|
@ -57,18 +57,18 @@ This section provides some additional clarification of those comments.
|
|||||||
#### Table of Attributes
|
#### Table of Attributes
|
||||||
The attributes supported by `com.intellij.applicationConfigurable` and `com.intellij.projectConfigurable` EPs are in the table below:
|
The attributes supported by `com.intellij.applicationConfigurable` and `com.intellij.projectConfigurable` EPs are in the table below:
|
||||||
|
|
||||||
| Attribute |Implementation<br/>Basis | Required   | Attribute<br/>Value |
|
| Attribute | Implementation<br/>Basis | Required   | Attribute<br/>Value |
|
||||||
| :---------- | :----- | :--------: |:------ |
|
|:-----------------------|:------------------------------------------|:--------------------:|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| `instance` | `Configurable` | (1) | FQN of implementation. See [The Configurable Interface](#the-configurable-interface) for more information. |
|
| `instance` | `Configurable` | (1) | FQN of implementation. See [The Configurable Interface](#the-configurable-interface) for more information. |
|
||||||
| `provider` | `ConfigurableProvider` | (1) | FQN of implementation. See [The ConfigurableProvider Class](#the-configurableprovider-class) for more information. |
|
| `provider` | `ConfigurableProvider` | (1) | FQN of implementation. See [The ConfigurableProvider Class](#the-configurableprovider-class) for more information. |
|
||||||
| `nonDefaultProject` | `Configurable` | Y | Applicable _only_ to the `com.intellij.projectConfigurable` (project Settings) EP.<br/>`true` = show Settings for all projects _except_ the [default project](https://www.jetbrains.com/help/idea/configure-project-settings.html#new-default-settings).<br/>`false` = show Settings for all projects. |
|
| `nonDefaultProject` | `Configurable` | Y | Applicable _only_ to the `com.intellij.projectConfigurable` (project Settings) EP.<br/>`true` = show Settings for all projects _except_ the [default project](https://www.jetbrains.com/help/idea/configure-project-settings.html#new-default-settings).<br/>`false` = show Settings for all projects. |
|
||||||
| `displayName` | `Configurable`<br/>`ConfigurableProvider` | (2) | The non-localized Settings name visible to users, which is needed for the Settings dialog left-side menu.<br/>For a _localized_ visible name omit `displayName` and use the `key` and `bundle` attributes. |
|
| `displayName` | `Configurable`<br/>`ConfigurableProvider` | (2) | The non-localized Settings name visible to users, which is needed for the Settings dialog left-side menu.<br/>For a _localized_ visible name omit `displayName` and use the `key` and `bundle` attributes. |
|
||||||
| `key` and<br/>`bundle` | `Configurable`<br/>`ConfigurableProvider` | (2) | The [localization](localization_guide.md) key and bundle for the Settings name visible to users.<br/>For non-localized visible names omit `key` and `bundle` and use `displayName`. |
|
| `key` and<br/>`bundle` | `Configurable`<br/>`ConfigurableProvider` | (2) | The [localization](localization_guide.md) key and bundle for the Settings name visible to users.<br/>For non-localized visible names omit `key` and `bundle` and use `displayName`. |
|
||||||
| `id` | `Configurable`<br/>`ConfigurableProvider` | Y | The unique, FQN identifier for this implementation.<br/>The FQN should be based on the plugin `id` to ensure uniqueness. |
|
| `id` | `Configurable`<br/>`ConfigurableProvider` | Y | The unique, FQN identifier for this implementation.<br/>The FQN should be based on the plugin `id` to ensure uniqueness. |
|
||||||
| `parentId` | `Configurable`<br/>`ConfigurableProvider` | Y | This attribute is used to create a hierarchy of Settings. This component is declared one of the specified `parentId` component's children. Typically used for placing a Settings panel within the Settings Dialog menu. Acceptable values for `parentId` are given in [Values for Parent ID Attribute](#values-for-parent-id-attribute).<br/>`groupId` is deprecated.(3) |
|
| `parentId` | `Configurable`<br/>`ConfigurableProvider` | Y | This attribute is used to create a hierarchy of Settings. This component is declared one of the specified `parentId` component's children. Typically used for placing a Settings panel within the Settings Dialog menu. Acceptable values for `parentId` are given in [Values for Parent ID Attribute](#values-for-parent-id-attribute).<br/>`groupId` is deprecated.(3) |
|
||||||
| `groupWeight` | `Configurable`<br/>`ConfigurableProvider` | N | Specifies the weight (stacking order) of this component within the group of a parent configurable component. The default weight is 0, meaning lowest in the order.<br/>If one child in a group or a parent component has non-zero weight, all children will be sorted descending by their weight. If the weights are equal, the components will be sorted ascending by their display name. |
|
| `groupWeight` | `Configurable`<br/>`ConfigurableProvider` | N | Specifies the weight (stacking order) of this component within the group of a parent configurable component. The default weight is 0, meaning lowest in the order.<br/>If one child in a group or a parent component has non-zero weight, all children will be sorted descending by their weight. If the weights are equal, the components will be sorted ascending by their display name. |
|
||||||
| `dynamic` | `Configurable.Composite` | N | This component's children are dynamically calculated by calling the `getConfigurables()` method.<br/>Not recommended because it requires loading additional classes while building a Settings tree. If possible, use XML attributes instead. |
|
| `dynamic` | `Configurable.Composite` | N | This component's children are dynamically calculated by calling the `getConfigurables()` method.<br/>Not recommended because it requires loading additional classes while building a Settings tree. If possible, use XML attributes instead. |
|
||||||
| `childrenEPName` | `Configurable` | N | Specifies the FQN name of the Extension Point that will be used to calculate the children of this component. |
|
| `childrenEPName` | `Configurable` | N | Specifies the FQN name of the Extension Point that will be used to calculate the children of this component. |
|
||||||
|
|
||||||
**Attribute Notes:**
|
**Attribute Notes:**
|
||||||
1) Either `instance` or `provider` must be specified depending on the implementation.
|
1) Either `instance` or `provider` must be specified depending on the implementation.
|
||||||
@ -79,18 +79,18 @@ The attributes supported by `com.intellij.applicationConfigurable` and `com.inte
|
|||||||
The table below shows the allowed values for the `parentId` attribute.
|
The table below shows the allowed values for the `parentId` attribute.
|
||||||
See the [previous section](#table-of-attributes) for all supported attributes.
|
See the [previous section](#table-of-attributes) for all supported attributes.
|
||||||
|
|
||||||
| `parentId` Value | Group | Details |
|
| `parentId` Value | Group | Details |
|
||||||
| :--------------- | :---- | :------ |
|
|:-----------------|:-----------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
|_default_ | `other` | If neither `parentId` nor `groupId` attribute is set, the component is added to the `other` Settings group. This is undesirable; see `other` group description. |
|
| _default_ | `other` | If neither `parentId` nor `groupId` attribute is set, the component is added to the `other` Settings group. This is undesirable; see `other` group description. |
|
||||||
|`appearance` | Appearance & Behavior | This child group contains Settings to personalize IDE appearance, such as: changing themes and font size. Also, it covers Settings to customize behavior such as keymaps, configuring plugins, and system Settings such as password policies, HTTP proxy, updates, and more. |
|
| `appearance` | Appearance & Behavior | This child group contains Settings to personalize IDE appearance, such as: changing themes and font size. Also, it covers Settings to customize behavior such as keymaps, configuring plugins, and system Settings such as password policies, HTTP proxy, updates, and more. |
|
||||||
|`build` | Build, Execution, Deployment | Child group containing Settings to configure project integration with different build tools, modify the default compiler Settings, manage server access configurations, customize the debugger behavior, etc. |
|
| `build` | Build, Execution, Deployment | Child group containing Settings to configure project integration with different build tools, modify the default compiler Settings, manage server access configurations, customize the debugger behavior, etc. |
|
||||||
|`build.tools` | Build Integration | A subgroup of `build`. This subgroup configures project integration with build tools such as Maven, Gradle, or Gant. |
|
| `build.tools` | Build Integration | A subgroup of `build`. This subgroup configures project integration with build tools such as Maven, Gradle, or Gant. |
|
||||||
|`editor` | Editor | Child group containing Settings to personalize source code appearance, such as fonts, highlighting styles, indents, etc. It also contains Settings to customize the editor's appearance, such as line numbers, caret placement, tabs, source code inspections, setting up templates, and file encodings. | |
|
| `editor` | Editor | Child group containing Settings to personalize source code appearance, such as fonts, highlighting styles, indents, etc. It also contains Settings to customize the editor's appearance, such as line numbers, caret placement, tabs, source code inspections, setting up templates, and file encodings. | |
|
||||||
|`language` | Languages and Frameworks | Child group containing Settings related to specific language frameworks and technologies used in the project. |
|
| `language` | Languages and Frameworks | Child group containing Settings related to specific language frameworks and technologies used in the project. |
|
||||||
|`tools` | 3rd Party Settings | Child group containing Settings to configure integration with third-party applications, specify the SSH Terminal connection Settings, manage server certificates and tasks, configure diagrams layout, etc. |
|
| `tools` | 3rd Party Settings | Child group containing Settings to configure integration with third-party applications, specify the SSH Terminal connection Settings, manage server certificates and tasks, configure diagrams layout, etc. |
|
||||||
|`root` | Super Parent | The invisible parent of all existing groups. Not used except for IDEs built on top of the IntelliJ Platform, or extensive suites of Settings. You should not place settings in this group. |
|
| `root` | Super Parent | The invisible parent of all existing groups. Not used except for IDEs built on top of the IntelliJ Platform, or extensive suites of Settings. You should not place settings in this group. |
|
||||||
|`other` | Catch-all | The IntelliJ Platform no longer uses this group. Do not use this group. Use the `tools` group instead. |
|
| `other` | Catch-all | The IntelliJ Platform no longer uses this group. Do not use this group. Use the `tools` group instead. |
|
||||||
|`project` | Project-related Settings | The IntelliJ Platform no longer uses this group. It was intended to store some project-related settings. Do not use this group. |
|
| `project` | Project-related Settings | The IntelliJ Platform no longer uses this group. It was intended to store some project-related settings. Do not use this group. |
|
||||||
|
|
||||||
## Implementations for Settings Extension Points
|
## Implementations for Settings Extension Points
|
||||||
Implementations for `com.intellij.projectConfigurable` and `com.intellij.applicationConfigurable` EPs can have one of two bases:
|
Implementations for `com.intellij.projectConfigurable` and `com.intellij.applicationConfigurable` EPs can have one of two bases:
|
||||||
@ -149,4 +149,4 @@ If the Settings make sense to display, `canCreateConfigurable()` returns `true`.
|
|||||||
In that case the IntelliJ Platform calls `ConfigurableProvider.createConfigurable()`, which returns the `Configurable` object for its Settings implementation.
|
In that case the IntelliJ Platform calls `ConfigurableProvider.createConfigurable()`, which returns the `Configurable` object for its Settings implementation.
|
||||||
|
|
||||||
By choosing not to provide a `Configuration` implementation in some circumstances, the `ConfigurableProvider` opts out of the Settings display and modification process.
|
By choosing not to provide a `Configuration` implementation in some circumstances, the `ConfigurableProvider` opts out of the Settings display and modification process.
|
||||||
The use of `ConfigurableProvider` as a basis for a Settings implementation is declared using [attributes](#table-of-attributes) in the EP declaration.
|
The use of `ConfigurableProvider` as a basis for a Settings implementation is declared using [attributes](#table-of-attributes) in the EP declaration.
|
||||||
|
@ -132,7 +132,7 @@ The color of a replaced icon takes precedence over any `ColorPalette` overrides.
|
|||||||
UI Themes can change the appearance of more general controls in the IntelliJ Platform UI.
|
UI Themes can change the appearance of more general controls in the IntelliJ Platform UI.
|
||||||
Examples of these controls are labels, buttons, checkboxes, trees, lists, and menus.
|
Examples of these controls are labels, buttons, checkboxes, trees, lists, and menus.
|
||||||
|
|
||||||
See also [Platform theme colors — UI components](https://jetbrains.design/intellij/principles/platform_theme_colors/#UI-components) in IntelliJ Platform UI Guidelines.
|
See also [Platform theme colors — UI components](https://jetbrains.design/intellij/principles/platform_theme_colors/#UI-components) in IntelliJ Platform UI Guidelines.
|
||||||
|
|
||||||
### Custom UI Control Colors
|
### Custom UI Control Colors
|
||||||
A UI control's custom color is specified by adding a key-value pair to the `"ui": {}` section of a Theme description file.
|
A UI control's custom color is specified by adding a key-value pair to the `"ui": {}` section of a Theme description file.
|
||||||
@ -197,7 +197,7 @@ The control keys for UI Tabs were expanded from release 2019.1 to 2019.2 of the
|
|||||||
The 2019.1 release control keys are compatible with release 2019.2 and later versions of the IntelliJ Platform.
|
The 2019.1 release control keys are compatible with release 2019.2 and later versions of the IntelliJ Platform.
|
||||||
|
|
||||||
| Release 2019.1 Element | Release 2019.2 Element | Description of Release 2019.2 Element |
|
| Release 2019.1 Element | Release 2019.2 Element | Description of Release 2019.2 Element |
|
||||||
| -------------------------- | -------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
|
|----------------------------|----------------------------|------------------------------------------------------------------------------------------------------------------------|
|
||||||
| N/A | **`DefaultTabs`** | Applied to all tabs except `TabbedPane`, _unless_ overridden by a more specific Tab control element. |
|
| N/A | **`DefaultTabs`** | Applied to all tabs except `TabbedPane`, _unless_ overridden by a more specific Tab control element. |
|
||||||
| **`EditorTabs`** | **`EditorTabs`** | Applied only to Editor tabs. Overrides any `DefaultTab` settings. 192 has many more `property` settings than 191. |
|
| **`EditorTabs`** | **`EditorTabs`** | Applied only to Editor tabs. Overrides any `DefaultTab` settings. 192 has many more `property` settings than 191. |
|
||||||
| **`ToolWindow.HeaderTab`** | **`ToolWindow.HeaderTab`** | Applied only to Tool Window tabs. Overrides any `DefaultTab` settings. 192 has many more `property` settings than 191. |
|
| **`ToolWindow.HeaderTab`** | **`ToolWindow.HeaderTab`** | Applied only to Tool Window tabs. Overrides any `DefaultTab` settings. 192 has many more `property` settings than 191. |
|
||||||
@ -280,4 +280,4 @@ The Code Completion popup is similar, but the format is e.g., _[Since 2019.2]_.
|
|||||||
|
|
||||||
### Finding a UI Control Key Using Laf Defaults UI
|
### Finding a UI Control Key Using Laf Defaults UI
|
||||||
Using the [Laf Defaults](internal_ui_laf_defaults.md) inspector, enter the `element` portion of the key.
|
Using the [Laf Defaults](internal_ui_laf_defaults.md) inspector, enter the `element` portion of the key.
|
||||||
The Laf Defaults inspector will prompt with a list of UI Control keys and their default color.
|
The Laf Defaults inspector will prompt with a list of UI Control keys and their default color.
|
||||||
|
@ -7,10 +7,10 @@ The following minimal sample demonstrates all details required when exposing UI
|
|||||||
`/resources/META-INF/plugin.xml`:
|
`/resources/META-INF/plugin.xml`:
|
||||||
|
|
||||||
```xml
|
```xml
|
||||||
<idea-plugin>
|
<idea-plugin>
|
||||||
<extensions defaultExtensionNs="com.intellij">
|
<extensions defaultExtensionNs="com.intellij">
|
||||||
<themeMetadataProvider path="/META-INF/MyPlugin.themeMetadata.json"/>
|
<themeMetadataProvider path="/META-INF/MyPlugin.themeMetadata.json"/>
|
||||||
</extensions>
|
</extensions>
|
||||||
</idea-plugin>
|
</idea-plugin>
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -78,7 +78,7 @@ All keys must follow this Naming Pattern:
|
|||||||
#### Property
|
#### Property
|
||||||
|
|
||||||
| Word | Use for | Example |
|
| Word | Use for | Example |
|
||||||
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
|
|-------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------|
|
||||||
| **`foreground`** | Text color. | `Label.foreground` |
|
| **`foreground`** | Text color. | `Label.foreground` |
|
||||||
| **`background`** | Background color for objects with text. | `Label.background` |
|
| **`background`** | Background color for objects with text. | `Label.background` |
|
||||||
| **`<part>Color`** | Objects with a single color (do not have foreground/background). Do not use the word “Color” separately, always use with the “part” word. <br/><br/>_The word “Color” shows that this is a color property. Otherwise, it can be confused with a property of another type._ | `Popup.borderColor` <br/> `Group.separatorColor` |
|
| **`<part>Color`** | Objects with a single color (do not have foreground/background). Do not use the word “Color” separately, always use with the “part” word. <br/><br/>_The word “Color” shows that this is a color property. Otherwise, it can be confused with a property of another type._ | `Popup.borderColor` <br/> `Group.separatorColor` |
|
||||||
@ -86,7 +86,7 @@ All keys must follow this Naming Pattern:
|
|||||||
#### State
|
#### State
|
||||||
|
|
||||||
| Word | Use for | Example |
|
| Word | Use for | Example |
|
||||||
| --------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
|
|-----------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------|
|
||||||
| ~~**`Active`**~~ | Enabled components, default state. Omit this word. The default state does not need explicit naming. | `Notification.background` |
|
| ~~**`Active`**~~ | Enabled components, default state. Omit this word. The default state does not need explicit naming. | `Notification.background` |
|
||||||
| **`Inactive`** | Enabled components that might be perceived as interactive but are actually not. Example: a tree with visible selection but not in focus. Goes after other state words. | `Tree.inactiveBackground` <br/> `ToolWindow.HeaderTab.hoverInactiveBackground` |
|
| **`Inactive`** | Enabled components that might be perceived as interactive but are actually not. Example: a tree with visible selection but not in focus. Goes after other state words. | `Tree.inactiveBackground` <br/> `ToolWindow.HeaderTab.hoverInactiveBackground` |
|
||||||
| **`Focused`** | The current focused component. | `Button.focusedBorderColor` |
|
| **`Focused`** | The current focused component. | `Button.focusedBorderColor` |
|
||||||
@ -102,7 +102,7 @@ A part is an internal element of a component, e.g., an arrow button in a combo b
|
|||||||
If a part is common among several components, use the same name for it. Notable examples of common parts:
|
If a part is common among several components, use the same name for it. Notable examples of common parts:
|
||||||
|
|
||||||
| Common parts | Use for | Example |
|
| Common parts | Use for | Example |
|
||||||
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
|
|----------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| **`Accelerator`** <br/> **`Shortcut`** | Shortcut foreground. | `Menu.acceleratorForeground` <br/> `Editor.shortcutForeground` |
|
| **`Accelerator`** <br/> **`Shortcut`** | Shortcut foreground. | `Menu.acceleratorForeground` <br/> `Editor.shortcutForeground` |
|
||||||
| **`Border`** | A line around a component. | `NavBar.borderColor` |
|
| **`Border`** | A line around a component. | `NavBar.borderColor` |
|
||||||
| **`Caret`** | The vertical line that denotes typing place. | `TextField.caretForeground` |
|
| **`Caret`** | The vertical line that denotes typing place. | `TextField.caretForeground` |
|
||||||
@ -134,7 +134,7 @@ Capitalize Object and SubObject. Use lowerCamelCase for property.
|
|||||||
#### Do Not Use
|
#### Do Not Use
|
||||||
|
|
||||||
| Do not use | Use instead |
|
| Do not use | Use instead |
|
||||||
| ----------------------------------------- | ------------- |
|
|-------------------------------------------|---------------|
|
||||||
| `Color` _as a separate word_ | `<Part>Color` |
|
| `Color` _as a separate word_ | `<Part>Color` |
|
||||||
| `Outline` | `borderColor` |
|
| `Outline` | `borderColor` |
|
||||||
| `Text` | `Foreground` |
|
| `Text` | `Foreground` |
|
||||||
@ -163,4 +163,4 @@ Metadata is split up as follows:
|
|||||||
New keys should be added to `IntelliJPlatform.themeMetadata.json` only (or corresponding "local" `*.themeMetadata.json` file of the plugin if applicable).
|
New keys should be added to `IntelliJPlatform.themeMetadata.json` only (or corresponding "local" `*.themeMetadata.json` file of the plugin if applicable).
|
||||||
|
|
||||||
Please make sure to add a `description` and use `since` and `deprecated` attributes explained in [Attributes](#attributes).
|
Please make sure to add a `description` and use `since` and `deprecated` attributes explained in [Attributes](#attributes).
|
||||||
Respect [Key Naming Scheme](#key-naming-scheme) and keep alphabetical ordering of keys.
|
Respect [Key Naming Scheme](#key-naming-scheme) and keep alphabetical ordering of keys.
|
||||||
|
@ -94,7 +94,7 @@ In some cases, you can skip dark variants if the original icon looks good under
|
|||||||
Required icon sizes depend on the usage as listed in the following table:
|
Required icon sizes depend on the usage as listed in the following table:
|
||||||
|
|
||||||
| Usage | Icon Size (pixels) |
|
| Usage | Icon Size (pixels) |
|
||||||
| ---------------------- | ------------------ |
|
|------------------------|--------------------|
|
||||||
| Node, Action, Filetype | 16x16 |
|
| Node, Action, Filetype | 16x16 |
|
||||||
| Tool window | 13x13 |
|
| Tool window | 13x13 |
|
||||||
| Editor gutter | 12x12 |
|
| Editor gutter | 12x12 |
|
||||||
@ -143,8 +143,8 @@ The `IconLoader` class will load the icon that matches the best depending on the
|
|||||||
|
|
||||||
Here are examples of <path>toolWindowStructure.png</path> icon representations:
|
Here are examples of <path>toolWindowStructure.png</path> icon representations:
|
||||||
|
|
||||||
| Theme/Resolution | File name | Image |
|
| Theme/Resolution | File name | Image |
|
||||||
| ---------------- | -------------------------------------------- | --------------------------------------------------------------------------- |
|
|------------------|----------------------------------------------|-------------------------------------------------------------------------|
|
||||||
| Default | <path>toolWindowStructure.png</path> |  |
|
| Default | <path>toolWindowStructure.png</path> |  |
|
||||||
| Darcula | <path>toolWindowStructure_dark.png</path> |  |
|
| Darcula | <path>toolWindowStructure_dark.png</path> |  |
|
||||||
| Default + Retina | <path>toolWindowStructure@2x.png</path> |  |
|
| Default + Retina | <path>toolWindowStructure@2x.png</path> |  |
|
||||||
|
@ -15,11 +15,11 @@ It shares similarities with [Jetpack Compose](https://developer.android.com/jetp
|
|||||||
{type="note"}
|
{type="note"}
|
||||||
|
|
||||||
## Layout Structure
|
## Layout Structure
|
||||||
|
|
||||||
> See [Layout](https://jetbrains.design/intellij/principles/layout) topic in IntelliJ Platform UI Guidelines for recommendations on arranging UI controls in dialogs.
|
> See [Layout](https://jetbrains.design/intellij/principles/layout) topic in IntelliJ Platform UI Guidelines for recommendations on arranging UI controls in dialogs.
|
||||||
>
|
>
|
||||||
{type="tip"}
|
{type="tip"}
|
||||||
|
|
||||||
Use [`panel`](upsource:///platform/platform-impl/src/com/intellij/ui/layout/layout.kt) to create UI:
|
Use [`panel`](upsource:///platform/platform-impl/src/com/intellij/ui/layout/layout.kt) to create UI:
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
@ -79,7 +79,7 @@ row {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
> To visually debug layout, enable <control>UI DSL Debug Mode</control> from [Internal Actions - UI Submenu](internal_ui_sub.md).
|
> To visually debug layout, enable <control>UI DSL Debug Mode</control> from [Internal Actions - UI Submenu](internal_ui_sub.md).
|
||||||
>
|
>
|
||||||
{type="tip"}
|
{type="tip"}
|
||||||
|
|
||||||
@ -215,10 +215,10 @@ Use the `link` method:
|
|||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
link("Forgot password?") {
|
link("Forgot password?") {
|
||||||
// handle click, e.g. showing dialog
|
// handle click, e.g. showing dialog
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
To open URL in the browser, use `browserLink`:
|
To open URL in the browser, use `browserLink`:
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
@ -251,7 +251,7 @@ A panel returned by the `panel` method is an instance of [`DialogPanel`](upsourc
|
|||||||
This base class supports the standard `apply()`, `reset()`, and `isModified()` methods.
|
This base class supports the standard `apply()`, `reset()`, and `isModified()` methods.
|
||||||
|
|
||||||
### Dialogs
|
### Dialogs
|
||||||
|
|
||||||
**Reference**: [DialogWrapper](dialog_wrapper.md)
|
**Reference**: [DialogWrapper](dialog_wrapper.md)
|
||||||
|
|
||||||
If you're using a [`DialogPanel`](upsource:///platform/platform-api/src/com/intellij/openapi/ui/DialogPanel.kt) as the main panel of a `DialogWrapper`, the `apply()` method will be automatically called when the dialog is closed using <control>OK</control> action.
|
If you're using a [`DialogPanel`](upsource:///platform/platform-api/src/com/intellij/openapi/ui/DialogPanel.kt) as the main panel of a `DialogWrapper`, the `apply()` method will be automatically called when the dialog is closed using <control>OK</control> action.
|
||||||
@ -268,7 +268,7 @@ return panel {
|
|||||||
```
|
```
|
||||||
|
|
||||||
### Configurables
|
### Configurables
|
||||||
|
|
||||||
**Reference**: [Settings Guide](settings_guide.md)
|
**Reference**: [Settings Guide](settings_guide.md)
|
||||||
|
|
||||||
If you're using the UI DSL to implement a [`Configurable`](upsource:///platform/platform-api/src/com/intellij/openapi/options/Configurable.java), use [`BoundConfigurable`](upsource:///platform/platform-api/src/com/intellij/openapi/options/BoundConfigurable.kt) as the base class.
|
If you're using the UI DSL to implement a [`Configurable`](upsource:///platform/platform-api/src/com/intellij/openapi/options/Configurable.java), use [`BoundConfigurable`](upsource:///platform/platform-api/src/com/intellij/openapi/options/BoundConfigurable.kt) as the base class.
|
||||||
@ -297,18 +297,18 @@ checkBox("Hide tabs if there is no space", uiSettings::hideTabsIfNeed)
|
|||||||
```
|
```
|
||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
Sample usages in IntelliJ Platform IDEs:
|
Sample usages in IntelliJ Platform IDEs:
|
||||||
|
|
||||||
| User Interface | Implementation |
|
| User Interface | Implementation |
|
||||||
|----------------|----------------|
|
|-------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
| <menupath>Settings/Preferences | Editor | Reader Mode</menupath> | [`ReaderModeConfigurable`](upsource:///platform/lang-impl/src/com/intellij/codeInsight/actions/ReaderModeConfigurable.kt) |
|
| <menupath>Settings/Preferences | Editor | Reader Mode</menupath> | [`ReaderModeConfigurable`](upsource:///platform/lang-impl/src/com/intellij/codeInsight/actions/ReaderModeConfigurable.kt) |
|
||||||
| <control>New Branch</control> dialog in Git ([Manage Git branches](https://www.jetbrains.com/help/idea/manage-branches.html)) | [`GitNewBranchDialog`](upsource:///plugins/git4idea/src/git4idea/branch/GitNewBranchDialog.kt) |
|
| <control>New Branch</control> dialog in Git ([Manage Git branches](https://www.jetbrains.com/help/idea/manage-branches.html)) | [`GitNewBranchDialog`](upsource:///plugins/git4idea/src/git4idea/branch/GitNewBranchDialog.kt) |
|
||||||
| <menupath>Settings/Preferences | Tools | Diff & Merge</menupath> | [`DiffSettingsConfigurable`](upsource:///platform/diff-impl/src/com/intellij/diff/settings/DiffSettingsConfigurable.kt) |
|
| <menupath>Settings/Preferences | Tools | Diff & Merge</menupath> | [`DiffSettingsConfigurable`](upsource:///platform/diff-impl/src/com/intellij/diff/settings/DiffSettingsConfigurable.kt) |
|
||||||
| <menupath>Settings/Preferences | Editor | General | Editor Tabs</menupath> | [`EditorTabsConfigurable`](upsource:///platform/platform-impl/src/com/intellij/application/options/editor/EditorTabsConfigurable.kt) |
|
| <menupath>Settings/Preferences | Editor | General | Editor Tabs</menupath> | [`EditorTabsConfigurable`](upsource:///platform/platform-impl/src/com/intellij/application/options/editor/EditorTabsConfigurable.kt) |
|
||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
|
|
||||||
### One Cell Is Minimum, Second One Is Maximum
|
### One Cell Is Minimum, Second One Is Maximum
|
||||||
|
|
||||||
Set `CCFlags.growX` and `CCFlags.pushX` for some component in the second cell.
|
Set `CCFlags.growX` and `CCFlags.pushX` for some component in the second cell.
|
||||||
|
@ -11,28 +11,28 @@ Popups can optionally display a title, are optionally movable and resizable (and
|
|||||||
|
|
||||||
The [`JBPopupFactory`](upsource:///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`](upsource:///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. |
|
| `createComponentPopupBuilder()` | Generic, allows showing any [Swing](https://docs.oracle.com/javase/tutorial/uiswing/start/index.html) component. |
|
||||||
| `createPopupChooserBuilder()` | For choosing one or more items from a plain `java.util.List`. |
|
| `createPopupChooserBuilder()` | For choosing one or more items from a plain `java.util.List`. |
|
||||||
| `createConfirmation()` | For choosing between two options, and performing different actions depending on which option is selected. |
|
| `createConfirmation()` | For choosing between two options, and performing different actions depending on which option is selected. |
|
||||||
| `createActionGroupPopup()` | Show actions from an [Action Group](grouping_action.md) and executes the action selected by the user. |
|
| `createActionGroupPopup()` | Show actions from an [Action Group](grouping_action.md) and executes the action selected by the user. |
|
||||||
|
|
||||||
### Action Groups
|
### Action Groups
|
||||||
|
|
||||||
Action group popups support different ways of choosing an action from the keyboard, in additional to the normal arrow keys.
|
Action group popups support different ways of choosing an action from the keyboard, in additional to the normal arrow keys.
|
||||||
By passing one of the constants in the [`JBPopupFactory.ActionSelectionAid`](upsource:///platform/platform-api/src/com/intellij/openapi/ui/popup/JBPopupFactory.java) enumeration, you can choose whether an action can be selected by pressing a key corresponding to its sequential number, typing part of its text (speed search) or pressing a mnemonic character.
|
By passing one of the constants in the [`JBPopupFactory.ActionSelectionAid`](upsource:///platform/platform-api/src/com/intellij/openapi/ui/popup/JBPopupFactory.java) enumeration, you can choose whether an action can be selected by pressing a key corresponding to its sequential number, typing part of its text (speed search) or pressing a mnemonic character.
|
||||||
For popups with a fixed set of items, the recommended selection method is sequential numbering;
|
For popups with a fixed set of items, the recommended selection method is sequential numbering;
|
||||||
for popups with a variable and potentially large number of items, speed search typically works best.
|
for popups with a variable and potentially large number of items, speed search typically works best.
|
||||||
|
|
||||||
### List Popups
|
### List Popups
|
||||||
|
|
||||||
If you need to create a list-like popup which is more flexible than a simple [`JList`](https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html) but don't want to represent the possible choices as actions in an action group, you can work directly with the [`ListPopupStep`](upsource:///platform/platform-api/src/com/intellij/openapi/ui/popup/ListPopupStep.java) interface and the [`JBPopupFactory.createListPopup()`](upsource:///platform/platform-api/src/com/intellij/openapi/ui/popup/JBPopupFactory.java) method.
|
If you need to create a list-like popup which is more flexible than a simple [`JList`](https://docs.oracle.com/javase/8/docs/api/javax/swing/JList.html) but don't want to represent the possible choices as actions in an action group, you can work directly with the [`ListPopupStep`](upsource:///platform/platform-api/src/com/intellij/openapi/ui/popup/ListPopupStep.java) interface and the [`JBPopupFactory.createListPopup()`](upsource:///platform/platform-api/src/com/intellij/openapi/ui/popup/JBPopupFactory.java) method.
|
||||||
Normally you don't need to implement the entire interface; instead, you can derive from the [`BaseListPopupStep`](upsource:///platform/platform-api/src/com/intellij/openapi/ui/popup/util/BaseListPopupStep.java) class.
|
Normally you don't need to implement the entire interface; instead, you can derive from the [`BaseListPopupStep`](upsource:///platform/platform-api/src/com/intellij/openapi/ui/popup/util/BaseListPopupStep.java) class.
|
||||||
The key methods to override are `getTextFor()` (returning the text to display for an item) and `onChosen()` (called when an item is selected).
|
The key methods to override are `getTextFor()` (returning the text to display for an item) and `onChosen()` (called when an item is selected).
|
||||||
By returning a new popup step from the `onChosen()` method, you can implement hierarchical (nested) popups.
|
By returning a new popup step from the `onChosen()` method, you can implement hierarchical (nested) popups.
|
||||||
|
|
||||||
### Showing Popup
|
### Showing Popup
|
||||||
|
|
||||||
Once you've created the popup, you need to display it by calling one of the `show()` methods.
|
Once you've created the popup, you need to display it by calling one of the `show()` methods.
|
||||||
@ -42,4 +42,4 @@ You can let the IntelliJ Platform automatically choose the position based on the
|
|||||||
>
|
>
|
||||||
{type="note"}
|
{type="note"}
|
||||||
|
|
||||||
If you need to perform some action when the popup is closed, you can either attach a listener to it using the `addListener()` method, override a method of the popup contents such as [`PopupStep.onChosen()`](upsource:///platform/core-ui/src/openapi/ui/popup/PopupStep.java), or attach an event handler to your own component within the popup.
|
If you need to perform some action when the popup is closed, you can either attach a listener to it using the `addListener()` method, override a method of the popup contents such as [`PopupStep.onChosen()`](upsource:///platform/core-ui/src/openapi/ui/popup/PopupStep.java), or attach an event handler to your own component within the popup.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user