From cd55ae8e7e56fc07c95d314c6656d4cf0e5dc94f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yann=20C=C3=A9bron?= Date: Mon, 8 Nov 2021 17:49:10 +0100 Subject: [PATCH] markdown: table cleanup --- topics/appendix/resources/consulting.md | 16 ++--- .../resources/extension_point_list.md | 14 ++--- .../element_patterns.md | 14 ++--- topics/basics/basic_action_system.md | 10 +-- .../getting_started/plugin_compatibility.md | 62 +++++++++---------- .../getting_started/update_plugins_format.md | 12 ++-- topics/basics/persisting_sensitive_data.md | 6 +- .../plugin_structure/plugin_icon_file.md | 22 +++---- topics/products/appcode/app_code.md | 4 +- topics/products/clion/clion.md | 2 +- topics/products/datagrip/data_grip.md | 2 +- topics/products/goland/goland.md | 10 +-- topics/products/phpstorm/existing_plugins.md | 4 +- topics/products/phpstorm/phpstorm.md | 10 +-- topics/products/pycharm/pycharm.md | 2 +- topics/products/rubymine/rubymine.md | 10 +-- topics/products/webstorm/webstorm.md | 14 ++--- topics/reference_guide/intellij_artifacts.md | 8 +-- .../internal_actions/internal_ui_inspector.md | 16 ++--- topics/reference_guide/settings_groups.md | 10 +-- topics/reference_guide/settings_guide.md | 50 +++++++-------- .../ui_themes/themes_customize.md | 6 +- .../ui_themes/themes_metadata.md | 14 ++--- .../work_with_icons_and_images.md | 6 +- .../kotlin_ui_dsl.md | 32 +++++----- topics/user_interface_components/popups.md | 22 +++---- 26 files changed, 189 insertions(+), 189 deletions(-) diff --git a/topics/appendix/resources/consulting.md b/topics/appendix/resources/consulting.md index 7d4a3d870..03679e5f3 100644 --- a/topics/appendix/resources/consulting.md +++ b/topics/appendix/resources/consulting.md @@ -10,14 +10,14 @@ Also, consider posting requests in _#jobs_ channel on [JetBrains Platform Slack] > {type="note"} -| Name | Contact | Notes | -| ------------------ | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | -| Joachim Ansorg | [www.plugin-dev.com][ja] | -/- | -| Daniel Espendiller | [daniel@espendiller.net][de] | -/- | -| Robert Ekendahl | [www.edaphic.studio][re] | Custom Language support | -| 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] | -| Mikhail Bolotov | [mikhail.bolotov@gmail.com][mb] | Plugins: [Cypress Support Pro][cspro], [k6] | +| Name | Contact | Notes | +|--------------------|---------------------------------------------------------|---------------------------------------------| +| Joachim Ansorg | [www.plugin-dev.com][ja] | -/- | +| Daniel Espendiller | [daniel@espendiller.net][de] | -/- | +| Robert Ekendahl | [www.edaphic.studio][re] | Custom Language support | +| 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] | +| Mikhail Bolotov | [mikhail.bolotov@gmail.com][mb] | Plugins: [Cypress Support Pro][cspro], [k6] | [ja]: https://www.plugin-dev.com [de]: mailto:daniel@espendiller.net diff --git a/topics/appendix/resources/extension_point_list.md b/topics/appendix/resources/extension_point_list.md index 46ef9ba8c..96b70b308 100644 --- a/topics/appendix/resources/extension_point_list.md +++ b/topics/appendix/resources/extension_point_list.md @@ -38,13 +38,13 @@ ### Tags -| Icon | Description | Details | -|---|---|---| -| ![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 | -| ![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

Extension Point: Declared with `area="IDEA_PROJECT"`
Listener: registered in `` | -| ![Non-Dynamic][non-dynamic] | Non-Dynamic Extension Point | Installation/update of plugin requires IDE restart ([Dynamic Plugins](dynamic_plugins.md)) | +| Icon | Description | Details | +|-----------------------------------|-------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| ![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 | +| ![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

Extension Point: Declared with `area="IDEA_PROJECT"`
Listener: registered in `` | +| ![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 [internal]: https://img.shields.io/badge/-Internal_API-darkred?style=flat-square diff --git a/topics/basics/architectural_overview/element_patterns.md b/topics/basics/architectural_overview/element_patterns.md index 46efd29aa..4462272f9 100644 --- a/topics/basics/architectural_overview/element_patterns.md +++ b/topics/basics/architectural_overview/element_patterns.md @@ -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. 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) | | [`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) | -| [`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) | -| [`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) | +| [`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) | +| [`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) | +| [`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: diff --git a/topics/basics/basic_action_system.md b/topics/basics/basic_action_system.md index 0d1462599..077d4aa24 100644 --- a/topics/basics/basic_action_system.md +++ b/topics/basics/basic_action_system.md @@ -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. | Host Menu
`compact` Setting | Action Enabled | Visibility Enabled | Menu Item Visible? | Menu Item Appears Gray? | -| :-----: | :------------: | :----------------: | :----------------: | :---------------------: | -| T | **F** | T | **F** | N/A | -| T | T | T | T | F | -| F | **F** | T | **T** | **T** | -| F | T | T | T | F | +|:-------------------------------:|:--------------:|:------------------:|:------------------:|:-----------------------:| +| T | **F** | T | **F** | N/A | +| T | T | T | T | F | +| F | **F** | T | **T** | **T** | +| 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. diff --git a/topics/basics/getting_started/plugin_compatibility.md b/topics/basics/getting_started/plugin_compatibility.md index 8e12d71ce..e42464ff1 100644 --- a/topics/basics/getting_started/plugin_compatibility.md +++ b/topics/basics/getting_started/plugin_compatibility.md @@ -6,7 +6,7 @@ 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. 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. > 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"} -| Module for `` Element
Declaration in plugin.xml File |
Functionality | -| ------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------- | -| **`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.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.xdebugger` | Debug Session, Stack Frames, Break Points, Source Positions, Memory Views, Tracked Instances | +| Module for `` Element
Declaration in plugin.xml File |
Functionality | +|--------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------| +| **`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.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.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 plugin.xml, 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. 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 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"} - + 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 `` Element
Declaration in plugin.xml File |
Functionality | IntelliJ Platform-Based
Product Compatibility | -| ---------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `com.intellij.modules.java` See **(2)** below.
`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.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.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.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.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.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.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. | +| Module or Plugin for `` Element
Declaration in plugin.xml File |
Functionality | IntelliJ Platform-Based
Product Compatibility | +|------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `com.intellij.modules.java` See **(2)** below.
`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.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.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.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.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.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.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. | **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 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. - > Dedicated Extension Point Lists specific to IDEs are available under _Part VIII - Product Specific_. + + > 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_. > {type="tip"} @@ -152,4 +152,4 @@ The compatibility information determines if plugins are available at the plugin ## Platform API Version Compatibility 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. \ No newline at end of file +The significant changes that may break plugins are listed on [Incompatible Changes in IntelliJ Platform and Plugins API](api_changes_list.md) page. diff --git a/topics/basics/getting_started/update_plugins_format.md b/topics/basics/getting_started/update_plugins_format.md index 050b466a5..827f489cb 100644 --- a/topics/basics/getting_started/update_plugins_format.md +++ b/topics/basics/getting_started/update_plugins_format.md @@ -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. 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). - + > Gradle plugin [IntelliJ plugin uploader](https://github.com/brian-mcnamara/plugin_uploader) can be used to automate deployment. > {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. Here are the candidate elements: -| Element | Effects & Requirements | -|:-------------------------------------------------------------|:----------------------------| -| ``
My Plugin Name
`
` | By default the name of the plugin JAR/ZIP file is displayed before installation.
Using the `` element displays the name of the plugin.
Contents should match the `` element contents in the plugins's `plugin.xml` file to avoid confusion. | -| ``
My plugin is awesome
`
` | By default no description for the plugin is displayed before installation.
Using the `` element will cause a description to be displayed before installation.
Contents should match the `` element contents in the plugins's `plugin.xml` file to avoid confusion.
Optionally, an enclosing `` element can be used if the description needs to contain HTML tags. | -| ``
Added cool feature
`
` | By default no change notes for the plugin are displayed before installation.
Using the `` element will cause a description of changes to be displayed before installation.
Contents should match the `` element contents in the plugin's `plugin.xml` file to avoid confusion.
Optionally, an enclosing `` element can be used if the change notes need to contain HTML tags. | \ No newline at end of file +| Element | Effects & Requirements | +|:--------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| ``
My Plugin Name
`
` | By default the name of the plugin JAR/ZIP file is displayed before installation.
Using the `` element displays the name of the plugin.
Contents should match the `` element contents in the plugins's `plugin.xml` file to avoid confusion. | +| ``
My plugin is awesome
`
` | By default no description for the plugin is displayed before installation.
Using the `` element will cause a description to be displayed before installation.
Contents should match the `` element contents in the plugins's `plugin.xml` file to avoid confusion.
Optionally, an enclosing `` element can be used if the description needs to contain HTML tags. | +| ``
Added cool feature
`
` | By default no change notes for the plugin are displayed before installation.
Using the `` element will cause a description of changes to be displayed before installation.
Contents should match the `` element contents in the plugin's `plugin.xml` file to avoid confusion.
Optionally, an enclosing `` element can be used if the change notes need to contain HTML tags. | diff --git a/topics/basics/persisting_sensitive_data.md b/topics/basics/persisting_sensitive_data.md index 33b84ecf8..015860cdd 100644 --- a/topics/basics/persisting_sensitive_data.md +++ b/topics/basics/persisting_sensitive_data.md @@ -18,7 +18,7 @@ _Common Utility Method:_ ``` ### Retrieve Stored Credentials - + ```java String key = null; // e.g. serverURL, accountID 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. | OS | Storage | -| ------- | ----------------------------------------------------- | +|---------|-------------------------------------------------------| | Windows | File in [KeePass][Windows] format | | macOS | Keychain using [Security Framework][macOS] | | 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/ [linux2]: https://wiki.gnome.org/Projects/Libsecret -Users can override the default behavior in Settings/Preferences | Appearance & Behavior | System Settings | Passwords. \ No newline at end of file +Users can override the default behavior in Settings/Preferences | Appearance & Behavior | System Settings | Passwords. diff --git a/topics/basics/plugin_structure/plugin_icon_file.md b/topics/basics/plugin_structure/plugin_icon_file.md index f4bc80bf3..6cd0fdcce 100644 --- a/topics/basics/plugin_structure/plugin_icon_file.md +++ b/topics/basics/plugin_structure/plugin_icon_file.md @@ -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: ![Example Product Plugin Preferences Dialog](plugin_prefs.png){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. > {type="note"} @@ -49,11 +49,11 @@ See more examples of [visual weight compensation](https://jetbrains.design/intel For basic shapes, use the following sizes. Note the different areas of transparent padding used for each shape: -| ![Square 32px by 32px](square_logo.png){width="225"} | ![Circle 36px in diameter](circle_logo.png){:width="225"} | -|:---:|:---:| -| _Square logo 32px by 32px_ | _Circular logo 36px in diameter_ | +| ![Square 32px by 32px](square_logo.png){width="225"} | ![Circle 36px in diameter](circle_logo.png){:width="225"} | +|:---------------------------------------------------------------------------:|:------------------------------------------------------------------------:| +| _Square logo 32px by 32px_ | _Circular logo 36px in diameter_ | | ![Horizontal rectangle 36px by 26px](rectangle_horizontal.png){width="225"} | ![Vertical rectangle 26px by 36px](rectangle_vertical.png){: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 @@ -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. | ![The YouTrack Plugin Logo uses the YouTrack product logo ](yt_logo.png){height="200" width="200"} | ![The Keymap Plugin Logo uses a color from the Action Colors Palette](keymap_logo.png){:height="200" width="200"} | -|:---:|:---:| -| _The YouTrack Plugin Logo uses
the YouTrack product logo_ | _The Keymap Plugin Logo uses a color
from the Action Colors Palette_ | +|:--------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------:| +| _The YouTrack Plugin Logo uses
the YouTrack product logo_ | _The Keymap Plugin Logo uses a color
from the Action Colors Palette_ | 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. 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. -| ![Plugin Logo on Light UI Theme](light_version.png){width="225"} | ![Light Plugin Logo on Dark UI Theme](dark_bad.png){:width="225"} | ![Plugin Logo for Dark UI Theme](dark_good.png){:width="225"} | -|:---:|:---:|:---:| -| _The light Plugin Logo design
works well on light UI Theme_ | _The light Plugin Logo design does
not work well on a dark UI Theme_ | _A separate, dark Plugin Logo design
works well on dark UI Theme_ | +| ![Plugin Logo on Light UI Theme](light_version.png){width="225"} | ![Light Plugin Logo on Dark UI Theme](dark_bad.png){:width="225"} | ![Plugin Logo for Dark UI Theme](dark_good.png){:width="225"} | +|:----------------------------------------------------------------:|:------------------------------------------------------------------------:|:---------------------------------------------------------------------:| +| _The light Plugin Logo design
works well on light UI Theme_ | _The light Plugin Logo design does
not work well on a dark UI Theme_ | _A separate, dark Plugin Logo design
works well on dark UI Theme_ | ### Plugin Logo File Format All Plugin Logo images must be in SVG format. @@ -90,4 +90,4 @@ The Plugin Logo files must be in the META-INF folder of the plugin To include Plugin Logo files in your distribution file, place the Plugin Logo files into a plugin project's resources/META-INF folder. For example: -![Plugin Logo Files in META-INF folder](resource_directory_structure.png){width="450"} \ No newline at end of file +![Plugin Logo Files in META-INF folder](resource_directory_structure.png){width="450"} diff --git a/topics/products/appcode/app_code.md b/topics/products/appcode/app_code.md index 83c799799..b8b83452b 100644 --- a/topics/products/appcode/app_code.md +++ b/topics/products/appcode/app_code.md @@ -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 build.gradle file. 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:
/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/AppCode/ch-0/193.5662.55/AppCode.app/Contents. | | [`runIde.ideDir`][dsl] | Path to locally installed target version of AppCode. For example, for macOS:
/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/AppCode/ch-0/193.5662.55/AppCode.app/Contents. | diff --git a/topics/products/clion/clion.md b/topics/products/clion/clion.md index dd1842334..6c86b04b3 100644 --- a/topics/products/clion/clion.md +++ b/topics/products/clion/clion.md @@ -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. | `gradle-intellij-plugin` Attribute | Attribute Value | -| ---------------------------------------- | ------------------------------------------------------------------------------ | +|------------------------------------------|--------------------------------------------------------------------------------| | [`intellij.type`][properties] | `CL` for the product CLion. | | [`intellij.version`][properties] | Set to the targeted CLion version, e.g. `2019.3.1`. | | [`intellij.plugins`][properties] | No specific declaration is needed. | diff --git a/topics/products/datagrip/data_grip.md b/topics/products/datagrip/data_grip.md index 0c19a95a0..fb08567a9 100644 --- a/topics/products/datagrip/data_grip.md +++ b/topics/products/datagrip/data_grip.md @@ -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 build.gradle 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 | -| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +|------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [`intellij.type`][properties] | `IU` for IntelliJ IDEA Ultimate.
(`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.plugins`][properties] | `plugins 'DatabaseTools'` Dependency on the bundled `DatabaseTools` plugin. | diff --git a/topics/products/goland/goland.md b/topics/products/goland/goland.md index f13ae567e..2f6a4e08e 100644 --- a/topics/products/goland/goland.md +++ b/topics/products/goland/goland.md @@ -41,11 +41,11 @@ To see how these attributes appear in a similar build.gradle file f 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. -| `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.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.
See below for Go plugin version information. | +| `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.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.
See below for Go plugin version information. | | [`runIde.ideDir`][dsl] | Path to locally installed target version of GoLand. For example, on macOS:
/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/Goland/ch-0/193.5233.112/GoLand.app/Contents. | [properties]: https://github.com/JetBrains/gradle-intellij-plugin/blob/master/README.md#intellij-platform-properties diff --git a/topics/products/phpstorm/existing_plugins.md b/topics/products/phpstorm/existing_plugins.md index 24b5b8a33..950f141a6 100644 --- a/topics/products/phpstorm/existing_plugins.md +++ b/topics/products/phpstorm/existing_plugins.md @@ -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/) | 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) | | 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) | @@ -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. * [PHP Annotations in PhpStorm Plugins Repository](https://plugins.jetbrains.com/plugin/7320-php-annotations) -* [GitHub](https://github.com/Haehnchen/idea-php-annotation-plugin) \ No newline at end of file +* [GitHub](https://github.com/Haehnchen/idea-php-annotation-plugin) diff --git a/topics/products/phpstorm/phpstorm.md b/topics/products/phpstorm/phpstorm.md index e2f22078a..b72128233 100644 --- a/topics/products/phpstorm/phpstorm.md +++ b/topics/products/phpstorm/phpstorm.md @@ -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. To see how these attributes appear in the build.gradle 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 | -| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [`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.plugins`][properties] | `com.jetbrains.php:193.5233.102` for the PHP plugin.
See below for PHP plugin version information. | +| `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.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.
See below for PHP plugin version information. | | [`runIde.ideDir`][dsl] | Path to locally installed target version of PhpStorm. For example, on macOS:
/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/PhpStorm/ch-0/193.5233.101/PhpStorm.app/Contents. | [properties]: https://github.com/JetBrains/gradle-intellij-plugin/blob/master/README.md#intellij-platform-properties diff --git a/topics/products/pycharm/pycharm.md b/topics/products/pycharm/pycharm.md index f650a74cf..7b7adfaa2 100644 --- a/topics/products/pycharm/pycharm.md +++ b/topics/products/pycharm/pycharm.md @@ -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. | `gradle-intellij-plugin` Attribute | Attribute Value | -| ---------------------------------------- | ------------------------------------------------------------------------------ | +|------------------------------------------|--------------------------------------------------------------------------------| | [`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.plugins`][properties] | No specific declaration is needed to use `PY` or `PC` APIs. | diff --git a/topics/products/rubymine/rubymine.md b/topics/products/rubymine/rubymine.md index 40f40de07..317a117f3 100644 --- a/topics/products/rubymine/rubymine.md +++ b/topics/products/rubymine/rubymine.md @@ -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. To see how these attributes appear in a similar build.gradle 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 | -| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [`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.plugins`][properties] | `org.jetbrains.plugins.ruby:2019.2.20191029` for the Ruby plugin.
See below for Ruby plugin version information. | +| `gradle-intellij-plugin` Attribute | Attribute Value | +|------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [`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.plugins`][properties] | `org.jetbrains.plugins.ruby:2019.2.20191029` for the Ruby plugin.
See below for Ruby plugin version information. | | [`runIde.ideDir`][dsl] | Path to locally installed target version of RubyMine. For example, on macOS:
/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/RubyMine/ch-0/192.7142.37/RubyMine.app/Contents. | [properties]: https://github.com/JetBrains/gradle-intellij-plugin/blob/master/README.md#intellij-platform-properties diff --git a/topics/products/webstorm/webstorm.md b/topics/products/webstorm/webstorm.md index 4100ac3e5..b422f9eca 100644 --- a/topics/products/webstorm/webstorm.md +++ b/topics/products/webstorm/webstorm.md @@ -5,7 +5,7 @@ ## Introduction [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`. - + > 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"} @@ -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. To see how these attributes appear in a similar build.gradle 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 | -| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [`intellij.type`][properties] | `IU` for IntelliJ IDEA Ultimate.
(`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.plugins`][properties] | Dependency on the `JavaScriptLanguage` plugin. | +| `gradle-intellij-plugin` Attribute | Attribute Value | +|------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [`intellij.type`][properties] | `IU` for IntelliJ IDEA Ultimate.
(`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.plugins`][properties] | Dependency on the `JavaScriptLanguage` plugin. | | [`runIde.ideDir`][dsl] | Path to locally installed target version of WebStorm. For example, for macOS:
/Users/$USERNAME$/Library/Application Support/JetBrains/Toolbox/apps/WebStorm/ch-0/192.7142.35/WebStorm.app/Contents. | [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 JavaScriptLanguage.jar, and javascript-openapi.jar. Test your plugin with any version of WebStorm you wish to support. - + ### 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). diff --git a/topics/reference_guide/intellij_artifacts.md b/topics/reference_guide/intellij_artifacts.md index c66415722..d4aae0982 100644 --- a/topics/reference_guide/intellij_artifacts.md +++ b/topics/reference_guide/intellij_artifacts.md @@ -22,15 +22,15 @@ Both the Releases and Snapshots repositories have two types of content: * Artifacts for individual modules from the IntelliJ Platform. 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. 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. > {type="warning"} - + ## Using IntelliJ Platform Module Artifacts 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. @@ -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. | Module Name | groupId | artifactId | -| ------------------------------- | ------------------------------- | ----------------------- | +|---------------------------------|---------------------------------|-------------------------| | intellij.java.compiler.antTasks | com.jetbrains.intellij.java | java-compiler-ant-tasks | | intellij.java.debugger | com.jetbrains.intellij.java | java-debugger | | intellij.platform.util | com.jetbrains.intellij.platform | util | diff --git a/topics/reference_guide/internal_actions/internal_ui_inspector.md b/topics/reference_guide/internal_actions/internal_ui_inspector.md index cc54e328f..18d548782 100644 --- a/topics/reference_guide/internal_actions/internal_ui_inspector.md +++ b/topics/reference_guide/internal_actions/internal_ui_inspector.md @@ -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. These can be useful to locate the underlying implementation, related Action, etc. -| Type | Place | Properties | -| ----------------------------------------------- | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| Type | Place | Properties | +|-------------------------------------------------|-----------------------------|--------------------------------------------------------------------------------------------------------------------------------| | [`AnAction`][ActionSystem] | Action Button
Menu Item | `Action` - [`AnAction`][us:AnAction] implementation
`Action ID` - Action `id`
`Action Plugin ID` - contributing plugin | -| [`ActionToolbar`][ActionSystem] | Action Toolbar | `Toolbar Group` - Action Group ID
`All Groups` - contained Action Group IDs | -| [`DialogWrapper`][DialogWrapper] | Modal Dialog | `dialogWrapperClass` - [`DialogWrapper`][us:DialogWrapper] 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 | -| [`Tree`][Tree] | Tree | `treeModelClass` - `javax.swing.tree.TreeModel` implementation | +| [`ActionToolbar`][ActionSystem] | Action Toolbar | `Toolbar Group` - Action Group ID
`All Groups` - contained Action Group IDs | +| [`DialogWrapper`][DialogWrapper] | Modal Dialog | `dialogWrapperClass` - [`DialogWrapper`][us:DialogWrapper] 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 | +| [`Tree`][Tree] | Tree | `treeModelClass` - `javax.swing.tree.TreeModel` implementation | [ActionSystem]: basic_action_system.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: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). \ No newline at end of file +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). diff --git a/topics/reference_guide/settings_groups.md b/topics/reference_guide/settings_groups.md index 1e33f301d..295f23b02 100644 --- a/topics/reference_guide/settings_groups.md +++ b/topics/reference_guide/settings_groups.md @@ -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? For example, a custom Setting implementation has multiple sub-Settings implementations. Extension Point declarations can create this kind of multilayer Settings hierarchy. - + ## 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. 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: -| Attribute | Required | Value | -|:--- | :---: |:--- | -| `id` | Y | Compound FQN of implementation based on `com.intellij.openapi.options.Configurable` in the form: `XX.YY` where:
`XX` is the parent Settings component FQN-based id.
`YY` is unique to the child among other siblings. | +| Attribute | Required | Value | +|:----------|:--------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `id` | Y | Compound FQN of implementation based on `com.intellij.openapi.options.Configurable` in the form: `XX.YY` where:
`XX` is the parent Settings component FQN-based id.
`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 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 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). -Using the `Composite` interface incurs the penalty of loading child classes while building the tree of Settings Swing components. \ No newline at end of file +Using the `Composite` interface incurs the penalty of loading child classes while building the tree of Settings Swing components. diff --git a/topics/reference_guide/settings_guide.md b/topics/reference_guide/settings_guide.md index de89cee00..c6dbc1ed6 100644 --- a/topics/reference_guide/settings_guide.md +++ b/topics/reference_guide/settings_guide.md @@ -57,18 +57,18 @@ This section provides some additional clarification of those comments. #### Table of Attributes The attributes supported by `com.intellij.applicationConfigurable` and `com.intellij.projectConfigurable` EPs are in the table below: -| Attribute |Implementation
Basis | Required   | Attribute
Value | -| :---------- | :----- | :--------: |:------ | -| `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. | -| `nonDefaultProject` | `Configurable` | Y | Applicable _only_ to the `com.intellij.projectConfigurable` (project Settings) EP.
`true` = show Settings for all projects _except_ the [default project](https://www.jetbrains.com/help/idea/configure-project-settings.html#new-default-settings).
`false` = show Settings for all projects. | -| `displayName` | `Configurable`
`ConfigurableProvider` | (2) | The non-localized Settings name visible to users, which is needed for the Settings dialog left-side menu.
For a _localized_ visible name omit `displayName` and use the `key` and `bundle` attributes. | -| `key` and
`bundle` | `Configurable`
`ConfigurableProvider` | (2) | The [localization](localization_guide.md) key and bundle for the Settings name visible to users.
For non-localized visible names omit `key` and `bundle` and use `displayName`. | -| `id` | `Configurable`
`ConfigurableProvider` | Y | The unique, FQN identifier for this implementation.
The FQN should be based on the plugin `id` to ensure uniqueness. | -| `parentId` | `Configurable`
`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).
`groupId` is deprecated.(3) | -| `groupWeight` | `Configurable`
`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.
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.
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. | +| Attribute | Implementation
Basis | Required   | Attribute
Value | +|:-----------------------|:------------------------------------------|:--------------------:|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `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. | +| `nonDefaultProject` | `Configurable` | Y | Applicable _only_ to the `com.intellij.projectConfigurable` (project Settings) EP.
`true` = show Settings for all projects _except_ the [default project](https://www.jetbrains.com/help/idea/configure-project-settings.html#new-default-settings).
`false` = show Settings for all projects. | +| `displayName` | `Configurable`
`ConfigurableProvider` | (2) | The non-localized Settings name visible to users, which is needed for the Settings dialog left-side menu.
For a _localized_ visible name omit `displayName` and use the `key` and `bundle` attributes. | +| `key` and
`bundle` | `Configurable`
`ConfigurableProvider` | (2) | The [localization](localization_guide.md) key and bundle for the Settings name visible to users.
For non-localized visible names omit `key` and `bundle` and use `displayName`. | +| `id` | `Configurable`
`ConfigurableProvider` | Y | The unique, FQN identifier for this implementation.
The FQN should be based on the plugin `id` to ensure uniqueness. | +| `parentId` | `Configurable`
`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).
`groupId` is deprecated.(3) | +| `groupWeight` | `Configurable`
`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.
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.
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. | **Attribute Notes:** 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. See the [previous section](#table-of-attributes) for all supported attributes. -| `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. | -|`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.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. | | -|`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. | -|`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. | -|`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. | +| `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. | +| `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.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. | | +| `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. | +| `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. | +| `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 `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. 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. \ No newline at end of file +The use of `ConfigurableProvider` as a basis for a Settings implementation is declared using [attributes](#table-of-attributes) in the EP declaration. diff --git a/topics/reference_guide/ui_themes/themes_customize.md b/topics/reference_guide/ui_themes/themes_customize.md index 0c244655f..ca6bde07b 100644 --- a/topics/reference_guide/ui_themes/themes_customize.md +++ b/topics/reference_guide/ui_themes/themes_customize.md @@ -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. 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 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. | 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. | | **`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. | @@ -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 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. \ No newline at end of file +The Laf Defaults inspector will prompt with a list of UI Control keys and their default color. diff --git a/topics/reference_guide/ui_themes/themes_metadata.md b/topics/reference_guide/ui_themes/themes_metadata.md index c7c948126..644a4035f 100644 --- a/topics/reference_guide/ui_themes/themes_metadata.md +++ b/topics/reference_guide/ui_themes/themes_metadata.md @@ -7,10 +7,10 @@ The following minimal sample demonstrates all details required when exposing UI `/resources/META-INF/plugin.xml`: ```xml - + - + ``` @@ -78,7 +78,7 @@ All keys must follow this Naming Pattern: #### Property | Word | Use for | Example | -| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | +|-------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------| | **`foreground`** | Text color. | `Label.foreground` | | **`background`** | Background color for objects with text. | `Label.background` | | **`Color`** | Objects with a single color (do not have foreground/background). Do not use the word “Color” separately, always use with the “part” word.

_The word “Color” shows that this is a color property. Otherwise, it can be confused with a property of another type._ | `Popup.borderColor`
`Group.separatorColor` | @@ -86,7 +86,7 @@ All keys must follow this Naming Pattern: #### State | Word | Use for | Example | -| --------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +|-----------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------| | ~~**`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`
`ToolWindow.HeaderTab.hoverInactiveBackground` | | **`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: | Common parts | Use for | Example | -| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | +|----------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------| | **`Accelerator`**
**`Shortcut`** | Shortcut foreground. | `Menu.acceleratorForeground`
`Editor.shortcutForeground` | | **`Border`** | A line around a component. | `NavBar.borderColor` | | **`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 | Use instead | -| ----------------------------------------- | ------------- | +|-------------------------------------------|---------------| | `Color` _as a separate word_ | `Color` | | `Outline` | `borderColor` | | `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). 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. \ No newline at end of file +Respect [Key Naming Scheme](#key-naming-scheme) and keep alphabetical ordering of keys. diff --git a/topics/reference_guide/work_with_icons_and_images.md b/topics/reference_guide/work_with_icons_and_images.md index 449ee5366..cebd2c493 100644 --- a/topics/reference_guide/work_with_icons_and_images.md +++ b/topics/reference_guide/work_with_icons_and_images.md @@ -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: | Usage | Icon Size (pixels) | -| ---------------------- | ------------------ | +|------------------------|--------------------| | Node, Action, Filetype | 16x16 | | Tool window | 13x13 | | 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 toolWindowStructure.png icon representations: -| Theme/Resolution | File name | Image | -| ---------------- | -------------------------------------------- | --------------------------------------------------------------------------- | +| Theme/Resolution | File name | Image | +|------------------|----------------------------------------------|-------------------------------------------------------------------------| | Default | toolWindowStructure.png | ![Tool Window Structure](toolWindowStructure.png) | | Darcula | toolWindowStructure_dark.png | ![Tool Window Structure, dark](toolWindowStructure_dark.png) | | Default + Retina | toolWindowStructure@2x.png | ![Tool Window Structure, retina](toolWindowStructure@2x.png) | diff --git a/topics/user_interface_components/kotlin_ui_dsl.md b/topics/user_interface_components/kotlin_ui_dsl.md index 9d4cfacf3..e2a418c18 100644 --- a/topics/user_interface_components/kotlin_ui_dsl.md +++ b/topics/user_interface_components/kotlin_ui_dsl.md @@ -15,11 +15,11 @@ It shares similarities with [Jetpack Compose](https://developer.android.com/jetp {type="note"} ## 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"} - + Use [`panel`](upsource:///platform/platform-impl/src/com/intellij/ui/layout/layout.kt) to create UI: ```kotlin @@ -79,7 +79,7 @@ row { } ``` - > To visually debug layout, enable UI DSL Debug Mode from [Internal Actions - UI Submenu](internal_ui_sub.md). + > To visually debug layout, enable UI DSL Debug Mode from [Internal Actions - UI Submenu](internal_ui_sub.md). > {type="tip"} @@ -215,10 +215,10 @@ Use the `link` method: ```kotlin link("Forgot password?") { - // handle click, e.g. showing dialog + // handle click, e.g. showing dialog } ``` - + To open URL in the browser, use `browserLink`: ```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. ### Dialogs - + **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 OK action. @@ -268,7 +268,7 @@ return panel { ``` ### Configurables - + **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. @@ -297,18 +297,18 @@ checkBox("Hide tabs if there is no space", uiSettings::hideTabsIfNeed) ``` ## Examples - + Sample usages in IntelliJ Platform IDEs: -| User Interface | Implementation | -|----------------|----------------| -| Settings/Preferences | Editor | Reader Mode | [`ReaderModeConfigurable`](upsource:///platform/lang-impl/src/com/intellij/codeInsight/actions/ReaderModeConfigurable.kt) | -| New Branch dialog in Git ([Manage Git branches](https://www.jetbrains.com/help/idea/manage-branches.html)) | [`GitNewBranchDialog`](upsource:///plugins/git4idea/src/git4idea/branch/GitNewBranchDialog.kt) | -| Settings/Preferences | Tools | Diff & Merge | [`DiffSettingsConfigurable`](upsource:///platform/diff-impl/src/com/intellij/diff/settings/DiffSettingsConfigurable.kt) | -| Settings/Preferences | Editor | General | Editor Tabs | [`EditorTabsConfigurable`](upsource:///platform/platform-impl/src/com/intellij/application/options/editor/EditorTabsConfigurable.kt) | +| User Interface | Implementation | +|-------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------| +| Settings/Preferences | Editor | Reader Mode | [`ReaderModeConfigurable`](upsource:///platform/lang-impl/src/com/intellij/codeInsight/actions/ReaderModeConfigurable.kt) | +| New Branch dialog in Git ([Manage Git branches](https://www.jetbrains.com/help/idea/manage-branches.html)) | [`GitNewBranchDialog`](upsource:///plugins/git4idea/src/git4idea/branch/GitNewBranchDialog.kt) | +| Settings/Preferences | Tools | Diff & Merge | [`DiffSettingsConfigurable`](upsource:///platform/diff-impl/src/com/intellij/diff/settings/DiffSettingsConfigurable.kt) | +| Settings/Preferences | Editor | General | Editor Tabs | [`EditorTabsConfigurable`](upsource:///platform/platform-impl/src/com/intellij/application/options/editor/EditorTabsConfigurable.kt) | ## FAQ ### One Cell Is Minimum, Second One Is Maximum -Set `CCFlags.growX` and `CCFlags.pushX` for some component in the second cell. \ No newline at end of file +Set `CCFlags.growX` and `CCFlags.pushX` for some component in the second cell. diff --git a/topics/user_interface_components/popups.md b/topics/user_interface_components/popups.md index 0ca21b952..a19e4d0c9 100644 --- a/topics/user_interface_components/popups.md +++ b/topics/user_interface_components/popups.md @@ -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 most commonly used methods are: - -| Method | Description | -|--------|-------------| -| `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`. | -| `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. | - + +| Method | Description | +|---------------------------------|------------------------------------------------------------------------------------------------------------------| +| `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`. | +| `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. | + ### Action Groups 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. 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. - + ### 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. 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). By returning a new popup step from the `onChosen()` method, you can implement hierarchical (nested) popups. - + ### Showing Popup 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"} -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. \ No newline at end of file +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.