Japanese text is following.(日本語は英語の下です。)
Motivation
When I created Intellij custom wizard called gradle-intellij-plugin wizard, I read JetBrains official documentation. They explains how to support module types and how to add new steps. However, what I want to know is how to add custom fields, how to add custom files, and how to customize files based on custom fields.
There is no such documentation at this point, so I decided to write this entry for me.
Topics
- How to add custom view
- How to get the user input in
ModuleWizardStep
- How to create a file
- How to change the file contents
How to add custom fields
To add custom views, it really simple.
1 2 3 4 |
|
Add custom views to JComponent
and return getComponent()
.
If you make a form file which binds to your ModuleWizardStep
, then just return root panel.
In my case, I created GUI form file Then, bind the form file to IPGWizardSupportLanguageStep.
It ends up
In order to add “Project SDK” field, you need to override getModuleType()
in your ModuleBuilder
For instance, to pick standard Java sdk, write following code in kotlin.
1
|
|
How to get the user input in ModuleWizardStep
If a user click “Next” button, ModuleWizardStep#updateDataModel()
will be called. You should pass/save the user input in the method.
In my case, it looks really bad design, but it directly passes the language to builder.
1 2 3 4 |
|
How to create a file
To create a file for new project, You can use VfsUtil.saveText(VirtualFile, text)
.
I found really great method in intellij-community repo.
I wish they open this method.
How to change the file contents
Use file template. You can check official documentation of File and Code Templates
One thing I want to add is condition. The file template support conditions in following syntax.
1 2 3 4 5 |
|
Watch out the indentation. You will generate useless spaces.
日本語
モチベーション
Intellijのカスタムwizard gradle-intellij-plugin wizardを作った時、JetBrainsの公式ドキュメントを読みました。
ただ、この公式ドキュメントはsupport module typesとhow to add new stepsしかなく、カスタムフィールドの作成方法や、ファイルの追加方法、ファイルの編集方法などがありませんでした。
そこで、このエントリーでその辺りの説明をしたいと思います。
トピック
- カスタムビューの追加方法
ModuleWizardStep
内での入力情報の取得方法- ファイル作成方法
- ファイルの内容変更方法
カスタムビューの追加方法
カスタムビューの追加方法は正直言うとかなり簡単です。
1 2 3 4 |
|
このメソッド内でカスタムビューを作成し、returnすればOKです。
もし、カスタマイズしたModuleWizardStep
をformファイルにバインドしているのであれば、ルートのpanelをreturnするだけです。
自分の場合、フォームファイル これをこっちにバインドしています。 IPGWizardSupportLanguageStep.
最終的に出来上がるのが
“Project SDK"フィールドを作成するには、getModuleType()
を継承する必要があります。
例えば、スタンダードなJava SDKを追加したい場合、以下のようにKoltinで記述します。
1
|
|
ModuleWizardStep
内での入力情報の取得方法
ユーザが"Next"ボタンをクリックすると、ModuleWizardStep#updateDataModel()
が呼ばれます。このメソッド内で値を取得したり、保存したりします。
自分の場合、かなり設計がクソだけど、builderに直接設定しちゃってます。(動けばええやろ?)
1 2 3 4 |
|
ファイル作成方法
ファイルを新しいプロジェクトに追加するには、VfsUtil.saveText(VirtualFile, text)
を使います。
intellij-communityのレポジトリにめっちゃ良いメソッドがありました。
これ公開してくれたらいいのにね。
ファイルの内容変更方法
IntellijのFile templateの仕組みを使います。File templateのFile and Code Templatesを読むと良いです。
一つ、条件文に関して記載がなかったので、追加で説明します。条件文の文法は以下です。
1 2 3 4 5 |
|
spaceいっぱい生成しちゃうのでインデント気をつけて下さい。