Code review fixes

This commit is contained in:
Karol Lewandowski 2025-05-12 09:11:22 +02:00 committed by Karol Lewandowski
parent 9e13b5dd5e
commit 6b3d87f7e8
2 changed files with 11 additions and 7 deletions

View File

@ -12,8 +12,8 @@ See [GitHub Changelog](https://github.com/JetBrains/intellij-sdk-docs/commits/ma
## 2025 ## 2025
### April ### May
{#april-25} {#may-25}
New Project Wizard New Project Wizard
: Add a new section about implementing project wizards: [](new_project_wizard.md). : Add a new section about implementing project wizards: [](new_project_wizard.md).

View File

@ -80,7 +80,7 @@ The most important methods are:
- `setupUI()` — defines the UI components for the step. Step UI is built with [](kotlin_ui_dsl_version_2.md) - `setupUI()` — defines the UI components for the step. Step UI is built with [](kotlin_ui_dsl_version_2.md)
- `setupProject()` — applies the parameters provided in UI to the generated project - `setupProject()` — applies the parameters provided in UI to the generated project
See the example implementations in the in the [`intellij-community`](https://github.com/JetBrains/intellij-community). See the example implementations in the [`intellij-community`](https://github.com/JetBrains/intellij-community).
Steps build a tree structure (read the rest of this section for details), as some steps can be displayed depending on previously selected options. Steps build a tree structure (read the rest of this section for details), as some steps can be displayed depending on previously selected options.
`setupUI()` and `setupProject()` of steps building the tree are applied in the order from root to leaf. `setupUI()` and `setupProject()` of steps building the tree are applied in the order from root to leaf.
@ -153,12 +153,12 @@ Note that [language project generators](#language-project-generators) already in
{style=warning} {style=warning}
It is often required to populate a created project with initial assets like: It is often required to populate a created project with initial assets like:
- directory structure, for example, `src/main/java`, `src/main/resources`, `src/test/java`, `src/test/resources` in a Gradle Java project - directory structure, for example, <path>src/main/java</path>, <path>src/main/resources</path>, <path>src/test/java</path>, <path>src/test/resources</path> in a Gradle Java project
- a build-tool-specific `.gitignore` file ignoring build and other directories and files - a build-tool-specific <path>.gitignore</path> file ignoring build and other directories and files
- sample code - sample code
This can be achieved by creating a step extending [`AssetsNewProjectWizardStep`](%gh-ic%/java/idea-ui/src/com/intellij/ide/projectWizard/generators/AssetsNewProjectWizardStep.kt). This can be achieved by creating a step extending [`AssetsNewProjectWizardStep`](%gh-ic%/java/idea-ui/src/com/intellij/ide/projectWizard/generators/AssetsNewProjectWizardStep.kt).
It allows for adding directories, static assets, assets generated from Freemarker templates, and granting them proper file permissions. It allows for adding directories, static assets, assets generated from [Freemarker templates](https://freemarker.apache.org/docs/dgui_quickstart_template.html), and granting them proper file permissions.
See example implementations in the [`intellij-community`](https://github.com/JetBrains/intellij-community) repository. See example implementations in the [`intellij-community`](https://github.com/JetBrains/intellij-community) repository.
@ -207,6 +207,8 @@ The table below shows the supported languages with corresponding interfaces and
Project wizards with multiple steps may require sharing data between them. Project wizards with multiple steps may require sharing data between them.
The recommended approach includes the following implementation steps: The recommended approach includes the following implementation steps:
<procedure>
1. Create an interface exposing step's shared properties, for example, `ExampleData`: 1. Create an interface exposing step's shared properties, for example, `ExampleData`:
```kotlin ```kotlin
interface ExampleData { interface ExampleData {
@ -252,6 +254,8 @@ The recommended approach includes the following implementation steps:
} }
``` ```
</procedure>
Shared data can be accessed in another step in the following way: Shared data can be accessed in another step in the following way:
```kotlin ```kotlin
@ -271,7 +275,7 @@ class AnotherStep(parent: NewProjectWizardStep) :
### Property Graph ### Property Graph
`PropertyGraph` creates an observable dependency graph that automatically propagates changes between related properties. [`PropertyGraph`](%gh-ic%/platform/observable/src/com/intellij/openapi/observable/properties/PropertyGraph.kt) creates an observable dependency graph that automatically propagates changes between related properties.
It is created in the [root step](#root-step) and shared between all descendant steps via [`AbstractNewProjectWizardStep.propertyGraph`](%gh-ic%/platform/platform-impl/src/com/intellij/ide/wizard/AbstractNewProjectWizardStep.kt). It is created in the [root step](#root-step) and shared between all descendant steps via [`AbstractNewProjectWizardStep.propertyGraph`](%gh-ic%/platform/platform-impl/src/com/intellij/ide/wizard/AbstractNewProjectWizardStep.kt).
`PropertyGraph` is widely used in wizard steps to create a responsive UI that dynamically updates depending on the user's actions. `PropertyGraph` is widely used in wizard steps to create a responsive UI that dynamically updates depending on the user's actions.