MPS 2020.3 ヘルプ

アイコンの説明

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

The langage has two aims:
1. Provide a tool for quick icon prototyping (e.g. making new icons for concepts)
2. Make icons an extensible language construct

第一印象

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

Icon4

The jetbrains.mps.lang.resources contains two constructs:

  • icon{} represents the image as an instance of javax.swing.Icon class.

  • iconResource{} returns an instance of jetbrains.mps.smodel.runtime.IconResource class.

Icon5

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

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

Icon1

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

Icon2

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

Icon3

言語の説明

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

  • 原始的な図形

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

  • キャラクター

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

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

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

言語の拡張

The language is open for extension. To add new icon types, you need to create a new concept and make it implement the Icon interface. The Icon interface represents the desired icon and will get transformed to a .png file during the make process.

After generating a model, all Icons are collected from the output model and their generate() methods are called. These create .png files corresponding to the images described by the corresponding Icons . When an icon resource is requested (e.g. using the icon{} syntax), a resource referenced by Icon.getResourceId() method is loaded using the classloader of the corresponding module and converted into a Java Icon object.

There are two constructs in the resources language to load resources: icon{} loads an image as an instance of javax.swing.Icon class, while iconResource{} returns an instance of jetbrains.mps.smodel.runtime.IconResource class: The second one is used in core MPS aspects, which should not depend on the javax.swing package: All UI-related code uses icon{}.