MPS 2023.3 ヘルプ

アイコンの説明

アイコン記述言語は、さまざまな MPS 要素(概念、アクションなど)のアイコンの記述とインスタンス化に役立ちます

この言語には、次の 2 つの目的があります。

  1. クイックアイコンプロトタイピング用のツールを提供する (たとえばコンセプトの新しいアイコンを作る)

  2. アイコンを拡張可能な言語構造にする

第一印象

MPS 言語定義言語でアイコンが必要な場合は、既存の .png ファイルを指す代わりに、目的のアイコンのテキスト説明を入力できます。

icon4.png

jetbrains.mps.lang.resources には、次の 2 つの構成が含まれています。

  • icon {} は、イメージを javax.swing.Icon クラスのインスタンスとして表します。

  • iconResource {} は、jetbrains.mps.smodel.runtime.IconResource クラスのインスタンスを返します。

icon5.png

アイコンのプロトタイプを作成する

アイコンを説明するとき、アイコンの作成インテンションから支援を受けることができます。アイコンの作成は、アイコンのテキスト説明を自動的に作成して、プロトタイプをすばやく作成する方法を提供します。

icon1.png

インテンションを呼び出すと、簡単なアイコン定義が作成されます。

icon2.png

この定義は、内部に文字「X」が付いた円形アイコンを記述しています。再生成すると、生成されたアイコンが有効になり、UI に表示されます。

icon3.png

言語の説明

アイコンの説明はレイヤーで構成され、各レイヤーは次のいずれかになります。

  • 原始的な図形

  • ファイルからロードされたカスタムイメージ

  • キャラクター

これらのレイヤーは、アイコンを表す単一のイメージに結合されます。これらのアイコンの説明を使用できます。

  • 言語定義言語のさまざまな場所でアイコンを指定する - 概念、アクションなど、アイコンが期待される場所

  • アイコンを返すことになっている MPS UI のメソッド

言語の拡張

言語は拡張のために開かれています。新しいアイコンタイプを追加するには、新しいコンセプトを作成し、アイコンインターフェースを実装する必要があります。アイコンインターフェースは目的のアイコンを表し、作成プロセス中に .png ファイルに変換されます。

モデルを生成した後、すべてのアイコンが出力モデルから収集され、それらの generate() メソッドが呼び出されます。これらは、対応するアイコンで記述されたイメージに対応する .png ファイルを作成します。アイコンリソースが(アイコン {} 構文を使用して、たとえば、)要求されたとき、Icon.getResourceId() メソッドによって参照されるリソースは、対応するモジュールのクラスローダを使用してロードされた Java アイコンオブジェクトに変換されます。

icon {} vs iconResource {}

リソース言語には、リソースをロードするための 2 つの構造があります。icon{} は javax.swing.Icon クラスのインスタンスとしてイメージをロードしますが、iconResource{} は jetbrains.mps.smodel.runtime.IconResource クラスのインスタンスを返します。2 番目のものは、コア MPS アスペクトで使用されます。これは、javax.swing パッケージに依存すべきではありません。 UI 関連のコードはすべて、アイコン {} を使用します。

古い UI と新しい UI の両方をサポートするアイコン

MPS は、従来の (古い) UI と最新の (新しい) UI という 2 つの異なるバージョンのユーザーインターフェースを提供します。ユーザーは、設定 | 外観と動作 | 新しい UI で、推奨するバージョンを選択できます。

アイコンの説明を提供してレンダリングできる TextIcon では、両方のバリアントを並べて記述できます。新しい UI バリアントを省略すると、古い UI バリアントが古い UI 設定と新しい UI 設定の両方で使用されます。

ファイル名 (FileIcon) で指定されたアイコンでは、古い UI で使用するファイルと新しい UI で使用するファイルの 2 つのファイルを指定できます。古い UI ファイルのみが必須です。古い UI アイコンファイルのみが指定され、MPS が新しい UI で実行される場合、古い UI アイコンファイルを使用する前に、MPS は、アイコン定義で明示的に指定されていなくても、命名規則を使用して新しい UI に適したファイルを見つけようとします。

命名規則は次のとおりです。古い UI アイコンファイル「A.png」が 1 つ指定されている場合、MPS は「A.png」と同じディレクトリに「A_newui.svg」という名前のファイルアイコンが存在する場合、そのファイルアイコンを使用します。これにより、言語設計者は、すべてのアイコン定義でアイコンを手動で指定しなくても、新しい UI に適したアイコンをすばやく追加できます。古いアイコンファイルと新しいアイコンファイルの両方として、「.png」と「.svg」の両方の形式がサポートされていることに注意してください。ただし、ヒューリスティックでは、「.svg」ファイルが存在することが前提となっています

ビルドスクリプトでのアイコンのサポート

ファイルアイコンとテキストアイコンは両方とも、生成された Java ソースとともに、モデルの Java ソースディレクトリにイメージファイル (.png または .svg) をコピーまたは生成します。ビルドスクリプトがイメージをリソースとして扱うには、java オプション要素を使用してリソースファイルのファイルマスクを指定する必要があります。

java options generate debug info true generate no warnings false fork false compiler IntelliJ java compliance level 11 java compiler options ... generator jvm options ... copy resources true resource patterns includes **/*.properties, **/*.xml, **/*.png, **/*.svg

コピーリソースフラグが true に設定されていることにも注意してください。