MPS 2019.1ヘルプ

説明コメント

We are going to learn how to leverage the capability of adding attributes to nodes. This feature is fully described in the 属性 section of the 構造 chapter. In this cookbook we'll create a simple addition to the 電卓 tutorial language that will allow the input and output fields of the calculator definitions to have descriptive comments attached to them. These descriptive comments will be propagated into the generated Java code in the form of "popup tooltips" attached to the Swing text fields corresponding to the input and output fields.

計算機の言語

実験用のテストベッドとして計算機のチュートリアル言語を選択しました。MPSディストリビューションに付属のサンプルプロジェクトのセットにcalculator-tutorialプロジェクトが含まれています。続行する前に、チュートリアルをよく読んで言語に慣れることをお勧めします。

フィールドへの変更

入力フィールドと出力フィールドに説明的なコメントを追加するための機構の構築を始めましょう。私たちのアプローチは、生成されたコードだけでなくノードに追加されたときにそれらの外観に影響を与える注釈に基づいています。私たちの望む機能を可能にするいくつかの重要な要素があります。

  • どのノードが説明コメントを保持できるかを示すマーカーインターフェース

  • ノードが説明コメントを保持しているかどうか、および説明が何であるかを示すための注釈自体

  • キャレット配下のノードに説明コメントをすばやく追加および削除するためのキーボードショートカットを提供するアクション

  • 記述されたコンポーネントの視覚的な「ツールチップ」を生成するためにコード生成プロセスを更新する

すべてのコメント可能なノードをマークするための新しいインターフェースから始めます。

Marking the nodes

InputFieldおよびOutputField概念は両方新しいICanHaveDescriptionインターフェースを実行しなければなりません。

Implementing the ICanHaveDescription interface

DescriptionAnnotationのコンセプト

パズルの核心部分、つまり説明のコメントを指定するための入力フィールドと出力フィールドに起因する実際の注釈はまだ欠落しています: 今それを作成しましょう:

Creating the description


概念をNodeAttributeに拡張すると、MPSは帰属の詳細を説明する詳細な情報を提供するようにあなたに勧めます。Alt + Enterからクイックフィックスを起動すると、カスタマイズに必要な情報が追加されます。

Invoking a quick-fix


属性の概念と同様に役割の値を設定することによって、新しい注釈の追加の品質を指定する必要があります。注釈の役割descriptionCommentとして設定します。これは、ノードに説明注釈の注釈が付けられているかどうかを調べるために照会で使用する名前です。また、注釈はICanHaveDescriptionを実装しているノードにのみ起因することを示します。これは、InputFieldOutputFieldです。

Specifying additional qualities

説明注釈は説明の実際のテキストも格納する必要があります。- これには文字列プロパティーdescriptionTextを使用します

Adding the description text

説明注釈のエディターは、説明コメントを付けてノードの視覚的な振る舞いを定義する際の重要な要素です。注釈付きノードの前に「説明」定数を付け、実際の説明テキストを括弧で囲んで追加します。属性付きノードセルは、実際のノード(属性が関連付けられているノード)のエディターを表します。

Attaching to a node

さらなるエディターの機能強化

ノードの説明コメントのオンとオフを切り替えるために、新しいキーマップを作成します。

Creating a new key map

コードを編集するために、BaseLanguagesmodelの概念を使います。これらはデフォルトで利用可能です。そうでなかったら、Control/Cmd + L.を通してインポートしなさい私達はまた容易に初期化されたノードを作成するために行動言語を必要とするだろう。これは明示的にインポートする必要があるでしょう(Control + L)。

Adding an import statement

これでアクションを完了できます。


Completing the action

ICanHaveDescriptionを実装しているノードでControl + Alt + Shift + Dが押されたときはいつでも、アクションは説明注釈をノードに追加するか、またはノードから削除します。

キーマップは、Control + Alt + Shift + Dに反応するはずのすべてのフィールドに追加される必要があります。これはInputFieldOutputFieldの場合です。Control + Alt + Shift + Dキーの組み合わせに反応すべきエディターセルは、キーキャッププロパティーで指定されたキーマップを持っている必要があります。

Adding the key map to all fields

これまでどのようにしていますか?

コンパイル後、入力フィールドと出力フィールドの両方にControl + Alt + Shift + Dを使用して、説明コメントを切り替えることができます。

Toggling the description comment


ジェネレータを更新する

説明注釈は現在生成プロセス中に失われています。代わりに、コメント付きの入力フィールドと出力フィールドを表すテキストフィールドに対してSwingの「ツールチップ」を生成します。

Updating the generator

When generating code we currently take all input or output fields in the calculator and generate JTextFields for them. In the constructor we also generate initialization code for each generated JTextField - this is the place, where we can attach a Swing "tooltip" the JTextFields that represent an input or output fields with description comments.

Creating JTextFields

$IF$ノードマクロは、"tooltip" が説明コメント注釈が添付されたノードに対してのみ生成されることを保証します。

Adding a macro

「ツールチップ」のテキストのプロパティーマクロは、現在のノードにアタッチされている説明注釈descriptionTextを設定します。

Property macro

言語とサンドボックスソリューションを再構築した後、生成された電卓フォームには、説明注釈でマークされているフィールドに「ツールチップ」が添付されます。

Resulting tooltip

要約

ここでツアーを終えることができます。入力フィールドと出力フィールドの両方を説明注釈で記述することができます。生成されたコードには、そのような記述ごとに「ツールチップ」が含まれています。

最終更新日: 2019年6月7日