VLE 機能拡張エディタ

はじめに

ビジュアル レイアウト エディタ (VLE) には、レイアウト作成に使用する多数の Curl® オブジェクトが用意されています。これらのオブジェクトには、VLE パレットからアクセスします。「パレット」のセクションには、標準 VLE オブジェクトが一覧表示されています。この章では、これらのオブジェクトにアクセスするために、VLE 機能拡張エディタ がどのように役立つかについて説明します。機能拡張エディタは Curl Pro/IDE でのみ利用できます。「Curl 及び Curl Pro 製品」を参照してください。
場合によっては、ScrollbarRectangleGraphic などの Curl API のオブジェクト、 またはアプリケーション用に独自に作成した追加オブジェクト、「複合オブジェクト」などを、VLE から利用できるようにする必要が生じます。 上記の全てのケースでは VLE パレットを拡張する必要があります。
VLE パレットの機能を拡張するには、VLE 機能拡張ファイルを作成して、追加するオブジェクトの 1 つ以上のオブジェクト エディタを定義します。機能拡張ファイルを VLE にインストールすると、VLE は起動時にこのファイルをロードします。VLE 機能拡張ファイルは、他のファイルを参照することができ、この参照するファイルも、起動時にロードされます。
VLE の機能拡張を検討する場合には、2 つの実行状況を明確に区別する必要があります。
VLE の WYSIWYG (what you see is what you get) ポリシーにより、多くの動作がデザイン時と実行時の両方で発生するので、この区別が難しい場合もあります。だたし、いずれか 1 つの環境でのみ発生する動作もあります。この区別を利用して、次の 2 段階により VLE 機能拡張の定義プロセスを構成します。
この章では、VLE 機能拡張ファイルを作成するのに役に立つ VLE 拡張エディタについて説明します。機能拡張ファイルは、VLE パレットからオブジェクトへのアクセスを可能にするデザイン時の動作を実装します。
ビジュアル レイアウト エディタの機能拡張」の章で、これらデザイン時と実行時の段階について詳細に説明されています。 VLE パレットに追加するオブジェクトの、実行時の動作を定義するパッケージの作成方法については、「ビジュアル レイアウト エディタの機能拡張」の章にある、「VLE で使用する実行時パッケージの定義」セクションを参照してください。
VLE 機能拡張エディタを使用して、グラフィカル オブジェクトをインスタンス化するパレット ボタンを定義することができますが、VBox のようなグラフィカル コンテナ型は定義できません。 このルールの例外として、「複合オブジェクトの構築 」で説明されている、複合オブジェクトがあります。 複合オブジェクトは、VLE で既に利用できるコンテナ オブジェクトを使用して、 VLE パレットからアクセスできるオブジェクトを作成できます。 ユーザーは IDE エディタを使用して、これらのオブジェクトの実行時動作を記述し、VLE 機能拡張エディタを使用してオブジェクトを VLE パレットに追加します。
VLE パレット機能拡張を介してインスタンス化したグラフィカル オブジェクトは、 コンストラクタ内で残余引数を使用する必要があります。通常、これらのグラフィカル オブジェクトはプロパティ シートの VLE に既に組み込まれているプロパティ エディタを使用します。機能拡張エディタは新しいプロパティ エディタの作成をサポートしません。カスタム プロパティ エディタの定義は可能ですが、その作業はこのドキュメントでは想定範囲外です。また、不可視のコンポーネントに対応するパレット ボタンを作成することはできません。
IDE ソース エディタを使用して、VLE 機能拡張エディタで最初に作成したファイルを編集することができます。VLE 機能拡張エディタで VLE 機能拡張を定義し、IDE ソース エディタで編集することによってさらなる機能を追加すると便利です。IDE ソース エディタにより、後で VLE 機能拡張エディタを使用して、さらなる編集およびカスタマイズを行うことができます。

基本的な機能拡張の作成

機能拡張エディタには、2 つの編集プロセス ビューがあります。基本ビューは、あまり頻繁に使用されない項目を取り除いた効率的なインターフェースです。よって、ほとんどの状況で、VLE 機能拡張ファイルの作成に必要なすべての情報を入力できます。拡張ビューでは、より高度な制御や設定が可能です。
このセクションでは、 VLE 機能拡張エディタの基本ビューを使用して、2 つの簡単な VLE 機能拡張ファイルを作成する方法を説明します。このセクションでは、実行時機能拡張パッケージ、および機能拡張ファイルの両方が、IDE の VLE プロジェクトの一部であることを想定しています。VLE 機能拡張エディタは、既定では基本ビューで実行されます。
ビジュアル レイアウト エディタの機能拡張」の章で提供されている拡張例のファイルは、この章でも役立ちます。拡張例の使用法の詳細については、「拡張例」を参照してください。

(例1)ProgressBar 機能拡張

このセクションでは、簡単な progress bar (進捗状況バー) オブジェクトのパレット機能拡張を作成します。

事前準備

エディタを呼び出す前にいくつかの手順を行う必要があります。特定の状況によっては、これらのステップを変更または省略することも可能です。
  1. 実行時パッケージの作成
    機能拡張ファイルを作成する前に、VLE で使用するオブジェクトを実装するコードを記述する必要があります。VLE パレットに追加するオブジェクトを十分にテストしてから、オブジェクトに対するパレット機能拡張を作成します。ScrollBox など、既に Curl API の一部であるオブジェクトにアクセスするための機能拡張を作成する場合は、この手順を行う必要はありません。
    この例では、この拡張例のコードを使用します。
    d:\automated-build-temp\build\win32-atom\docs\default\examples\layout-editor\ProgressBar.zip
    この例を抽出し、progress bar (進捗状況バー) の実行時コードを含む progressbar-ext/progress/load.scurl ファイルを見つけます。
  2. プロジェクトの作成
    IDE プロジェクトを含まないディレクトリで起動した場合、機能拡張エディタで使用するオプションは限られます。既存のプロジェクトも使用できます。作成する VLE 機能拡張ファイルのプロジェクトは、機能拡張の編集中は、IDE 内で開かれている必要があります。
  3. プロジェクトに実行時パッケージを追加
    任意の既存プロジェクトで VLE 機能拡張を作成できますが、実行時パッケージを含むプロジェクトを選択することが最善です。

機能拡張エディタの起動

Curl IDE の [ツール] メニューから、[VLE 機能拡張エディタ] をクリックして、VLE 機能拡張エディタを起動します。エディタでの最初の操作は、新しい VLE 機能拡張ファイルを作成するか、既存のファイルを開くことです。開いているプロジェクトの一部である既存の機能拡張ファイルをダブル クリックすると、機能拡張エディタでファイルが開きます。機能拡張エディタでは、一度に 1 つの機能拡張ファイルのみを開くことができます。

機能拡張の作成

[ビジュアル レイアウト エディタ機能拡張の作成] ダイアログを開くには、[ファイル] メニューの [新規] 項目を使用します。このダイアログを使用して、次の情報を設定します。
機能拡張の作成を終了するには、[OK] をクリックします。この時点では、機能拡張エディタのウィンドウは 3 つのセクションに分けられています。左側のセクションは、機能拡張設定ペインで、次の手順で使用するさまざまな制御が含まれます。

パッケージのインポートとパレット定義ボタン

[インポートする実行時パッケージ] フィールド :VLE でのアクセス時の動作を定義する複数の実行時パッケージをインポートできます。これらのパッケージは、VLE 作業エリアでのオブジェクトの動作をサポートするために、デザイン時にインポートする必要があります。また、これらの実行時パッケージは、実行時オブジェクトを使用する VLE で作成したすべてのレイアウトによって、実行時にインポートされる必要もあります。
[追加] ボタンをクリックして、[実行時パッケージの追加] ダイアログを開きます。このダイアログでは、次の情報が求められます。
[定義するパレット ボタン] フィールド :設定するパレット項目を指定できます。[追加] ボタンをクリックして、[新しいパレット項目の追加] ダイアログを開きます。このダイアログでは、次の情報が求められます。
追加ボタンを選択してパレット ボタンの追加を終了します。この時点で、中央のVLE 機能拡張エディタ ウィンドウのボタン設定ペインに、いくつかのコントロールが含められます。

ボタンの構成

指定した実行時タイプの情報が、[実行時タイプ] フィールドに表示されています。
[パレット タブ名] フィールド :このパレット ボタンを含むパレット タブを指定することができます。ドロップダウン リストから、[グラフィック] または [コントロール] のどちらかを選択します。このフィールドにパレット タブの名前を入力することも可能です。VLE パレットに指定されたタブが存在しない場合、VLE がそのタブを作成します。他のパレット項目で作成されたタブを含む、既存のパレット タブを指定することも可能です。
[パレット グラフィック] : パレット ボタン用の画像を指定できます。標準の VLE で指定されているアイコンはすべて 28x28 ピクセルの画像です。より良い概観のためには、ここで指定する画像ファイルのサイズは、28x28 ピクセルである必要があります。この拡張例から、この例で使用可能な画像を見つけることができます。
d:\automated-build-temp\build\win32-atom\docs\default\examples\layout-editor\ProgressBar.zip
progressbar-ext/images/progressbar-icon.gif ファイルを見つけます。
このペインの下の部分には、2 つのタブがあります。1 つはプロパティ リストを、もう 1 つはイベント ハンドラを表示しています。最初は、これらのリストには、プロパティとパレット機能拡張を定義するイベント ハンドラが既定で含まれます。プロパティまたはイベント ハンドラを追加または削除する必要がない場合は、機能拡張はこの時点で使用可能です。[ファイル] メニューから [保存] をクリックして、機能拡張を保存します。[ファイル] メニューから [プレビュー] をクリックして、VLE の機能拡張をプレビューします。
次のセクションでは、プロパティの編集について説明します。

(例2)Scrollbar 機能拡張

このセクションでは、Scrollbar オブジェクトのパレット機能拡張を作成します。ProgressBar の例で行ったのと同様に、この機能拡張に対するプロジェクトを準備します。このオブジェクトは Curl API の一部であるため、実行時コードの記述、またはプロジェクトへの実行時パッケージの追加は必要ありません。機能拡張エディタを起動し、新しい機能拡張を作成します。[インポートする実行時パッケージ] フィールドはそのままにして、すぐにパレット ボタンの定義に進みます。
実行時パッケージをインポートしていないため、[実行時タイプ] ドロップダウン リストには利用可能なクラス名が表示されていません。フィールドに Scrollbar を入力します。残りのフィールドは、前と同様に入力します。拡張例の中に、Scrollbar のアイコンがあります。
d:\automated-build-temp\build\win32-atom\docs\default\examples\layout-editor\Scrollbar.zip

プロパティの追加

ここで、[プロパティ] タブおよび [イベント ハンドラ] タブの内容をより注意深く調べます。
パレット ボタンを最初に定義する際には、標準的なプロパティとイベント ハンドラが定義されています。1 つのプロパティは、(既定のプロパティ) と表示され、1 つのイベント ハンドラは (既定のイベント ハンドラ) と表示されます。これらはレイアウトにオブジェクトを追加する際に、最初に [プロパティ] ペインで設定されている項目です。項目を選択し、[既定として設定] ボタンをクリックすることにより、既定を変更できます。
プロパティを選択して[削除] ボタンをクリックすることにより、リストからプロパティを削除することができます。プロパティをクリックすることにより、右側にプロパティ設定ペインが表示され、プロパティを編集できます。多くの場合、既定のプロパティ設定は正しく、編集の必要はありません。
リストにプロパティを追加することもできます。Scrollbar の場合、いくつかのプロパティは既定のリストに含まれていません。この例では、スクロール バーの水平方向または垂直方向を決定する Scrollbar.direction プロパティを追加します。
プロパティ設定ペインの [追加] ボタンをクリックします。[追加するプロパティ名の選択] ダイアログが開きます。このダイアログには、2 つのタブがあります。既定では、[既存のオプション名] タブがアクティブです。リフレクションを使用して、機能拡張エディタは、このオブジェクトに存在するオプションを一覧表示します。オプションは、3 つのカテゴリに分類されます。
[ユーザー入力プロパティ名] タブでは、このオブジェクトに存在していてもリストに表示されていないプロパティ名を入力できます。最も一般的なケースは、CommandButton.style のようなプロパティです。このプロパティは、オプションとしては定義されていませんが、キーボード コンストラクタ引数により制御可能です。
この例では、[追加] ボタンをクリックして、[他のローカルオプション] リストから direction をクリックします。このリストから複数のオプションを選択できます。

プロパティの設定

プロパティ設定ペインを使用して、VLE でのこのプロパティ機能に関するプロパティ シートを変更します。次の情報を設定できます。
この時点で Scrollbardirection プロパティは追加および設定されました。機能拡張を保存し、VLE でプレビューします。direction プロパティが、現在 Scrollbar プロパティ シートで有効であることに注意してください。

VLE 機能拡張ファイルのインストールとアンインストール

一度 VLE 機能拡張ファイルを作成すると、VLE にそのファイルをインストールすることができます。VLE の [表示] メニューから、 [パレット機能拡張] をクリックします。この操作により、[パレット機能拡張] ダイアログ ボックスが開かれます。
[新規] ボタンをクリックすると、ファイル選択ダイアログが開かれるので、ここで VLE 機能拡張ファイルを選択します。VLE は、ファイルとそこで定義されているパレット機能拡張をロードして、[パレット機能拡張] ダイアログのリストにファイルの名前を追加します。このリストのファイル名はパーシスタント ストレージに保存され、VLE の起動時に自動的にロードされます。
ファイル名を選択して[削除] ボタンをクリックすると、起動時に自動的にロードされるファイルのリストからファイルが削除されます。このリストからファイルを削除しても、現在の VLE セッションからはその機能拡張は削除されません。変更を適用するには、Curl® RTE を終了して再起動する必要があります。「IDE の起動」を参照してください。

VLE 機能拡張エディタ ユーザー インターフェース

メニュー バー

ファイル メニュー

メニュー項目機能
新規...[ビジュアル レイアウト エディタ機能拡張の作成] ダイアログ ボックスが開きます。「新しい VLE 機能拡張の作成」を参照してください。
開く...
[開く] ダイアログ ボックスより既存のファイルを開きます。
VLE 機能拡張エディタは、編集のために一度に複数の VLE 機能拡張を開くことはできません。そのため、拡張機能が既に開いている間に [新規] および [開く] をクリックすると、既に開かれているファイルは閉じ、ファイルを保存する必要がある場合はそれが通知されます。
閉じる現在開いているファイルを閉じます。
保存現在開いているファイルを保存します。
プレビューVLE にインストールする前に、機能拡張ファイルをテストできます。このメニュー コマンドは、最初に、現在開いている VLE 機能拡張ファイルを保存するよう要求します。次に、インストールされた機能拡張を含むアプレットとして実行する VLE のコピーを開きます。アプレットとして実行するときに VLE がどのように動作するかについての詳細は、「VLE 機能拡張ファイルのデバッグ」を参照してください。
元に戻す現在開いているファイルを、最後にディスクに保存した状態に復元します。変更を破棄するかどうかの確認を求められます。
終了現在開いているファイルを閉じ、VLE を終了します。変更を保存するかどうかの確認を求められます。

新しい機能拡張の作成

新しい VLE 機能拡張ファイルを作成するには、[ファイル] メニューの [新規] をクリックします。ダイアログ ボックスが表示され、ここで新規ファイルに関する選択を行います。

表示メニュー

メニュー項目機能
基本機能拡張エディタ UI の基本的な表示方法を選択できます。メニュー項目の左側のドットは、現在どの表示方法が選択されているかを示します。
拡張機能拡張エディタ UI の詳細な表示方法を選択できます。メニュー項目の左側のドットは、現在どの表示方法が選択されているかを示します。

ヘルプ メニュー

メニュー項目機能
言語 - ドキュメントIDE ドキュメント ビューアを開きます。
使用法 - VLE - 機能拡張 - エディタVLE ユーザー ガイドの章を表示する IDE ドキュメント ビューアを開き、機能拡張エディタについて説明します。
詳細 - VLE - 機能拡張 - エディタVLE 機能拡張エディタのバージョン情報を提供します。

機能拡張デザイン ウィンドウ

VLE 機能拡張エディタは、3 つのペインに分かれています。各ペインの縮小または拡大する垂直バーをドラッグします。左側のペインは、機能拡張設定ペインです。中央のペインは、ボタン設定ペインです。右端のペインは、プロパティ設定ペインです。

機能拡張設定ペイン

機能拡張設定ペインにより、インポートする必要があるパッケージおよび定義しようとするパレット機能拡張を指定することができます。

ボタン設定ペイン

一度パレット ボタンを追加すると、[実行時作成演算子] および [実行時タイプ] で指定した情報が、いくつかの他のフィールドと共に [ボタン設定ペイン] に表示されます。

プロパティ設定ペイン

ボタン設定ペインの下にあるタブ コンテナを使用して、プロパティおよびイベント ハンドラを定義します。[プロパティ] タブには、パレット ボタンに対して定義されるプロパティの名前を表示するツリー コントロールが含まれます。
[イベント ハンドラ] タブには、パレット ボタンに対して定義されるイベント ハンドラ名のリストと同様のリストが含まれます。
パレット ボタンを最初に定義する際には、標準的なプロパティとイベント ハンドラが定義されています。プロパティを選択して [削除] ボタンをクリックすることにより、リストからプロパティを削除することができます。
VLE で既に定義されたプロパティ名の場合、そのプロパティに関する VLE の既定の情報がプロパティ設定ペインに表示されます。VLE で既に定義されていないプロパティ名の場合、VLE 機能拡張エディタはリフレクションを使用して、有効な既定の情報をプロパティ ペインに適用します。使用するプロパティ エディタおよび表示するヘルプ テキストなどの、他の情報を指定する必要があります。いずれの場合も、VLE 機能拡張エディタによりこれらのフィールドに初期設定されている情報を変更します。