オープン コントロール

以下のディレクトリから、Curl® の Control API のソース コードがオープン ソースとして利用できます。
d:\automated-build-temp\build\win32-atom\ide\gui\controls
このディレクトリには、 CURL.GUI.CONTROLS にドキュメントのあるすべての Control API 、および公式なドキュメントのない API コンポーネントを含むソース コードが多数含まれています。
情報源としてこのコードを使用することが出来、Control API のドキュメントに記述されていない項目は、直接このソース コードを調べ学習してください。また、オープン ソースを利用して、アプレット コードのデバッグを行えます。IDE デバッガで、コントロール コードを段階的に実行する際には、 「オープン コントロールのインポート」のセクションで説明されているように、一時的にアプレットを修正して、オープン コントロール パッケージをインポートしてください。

Control API の変更

場合によっては、スタイル コントロールスタイル コントロール スキンカスタム コントロールの作成カスタム コントロール UIの作成 で説明されているようなアプローチ以上に広範囲で高度なコントロールの外観、機能等の変更が必要となります。そのような場合には、オープン ソース ディレクトリ全体を (IDE) がインストールされているディレクトリから他のロケーションにコピーし、必要に応じてそれらを変更して、変更後のコントロールをアプリケーションに組み込みます。(IDEが)インストールされているディレクトリのファイルは修正しないでください。今後のインストールの際に、加えた変更が上書きされてしまうかもしれないからです。少数のオープン コントロール ファイルを変更するだけであっても、ディレクトリのすべてのコンテンツを使用して作業を始めることを推奨します。
このディレクトリには表示と確認するためのコントロール API の全てのコントールを使用できる Curl プロジェクトとマニフェストファイル、サンプルアプレットがあります。
最初の作業では、修正するコードを特定します。IDE の [定義] ペインは、コードの検索に役立つツールです。

オープン コントロールのインポート

オープン コントロール パッケージは、Control API を構成するサブ パッケージ全てをインポートするスーパー パッケージです。スーパー パッケージのロード ファイルは、以下に配置されています。
d:\automated-build-temp\build\win32-atom\ide\gui\controls\curl-controls\load-open.scurl
アプレットからパッケージ全体にアクセスできるようにするには、オープン コントロール パッケージのマニフェストに delegate-to する必要があります。マニフェストのデリゲートに関する詳細の情報は、マニフェストのデリゲート(委譲) を参照してください。
修正したコントロール コードを使用するには、その修正したファイルを含むパッケージをアプリケーションにインポートする必要があります。オープン コントロール パッケージは、CURL.GUI.CONTROLS で定義済みのすべての名前と重複し、すべてのアプレットに自動的にロードされます。以下のように単純にオープン コントロール パッケージをアプレットの名前空間にインポートすると、名前空間の競合が発生します。
{import * from COM.CURL.OPEN.GUI.CONTROLS}
すべてのパッケージ識別子がパッケージ名にバインドされるようパッケージをインポートできます。
{import COM.CURL.OPEN.GUI.CONTROLS}
そのパッケージとして選んだ名前が煩雑な場合、using-name オプションを使用してより扱いやすい別名を指定できます。
{import COM.CURL.OPEN.GUI.CONTROLS, using-name = "OPEN-CONTROLS"}
パッケージ全体をアプレットの名前空間にインポートする場合で、かつコードが独自のバージョンであることが確かな場合、次の override? オプションを使用できます。
{import * from COM.CURL.OPEN.GUI.CONTROLS, override? = true}

パッケージ サイズの削減

COM.CURL.OPEN.GUI.CONTROLS パッケージのソース コードは、 Curl コントロール API 全体を複製しているため、大きなパッケージになります。修正したファイルが少数で、それらの多くが、Curl® ランタイムに既にある機能の複製に過ぎない時、パッケージ全体を展開する過剰なオーバーヘッドを避けることを考えます。コード本体は大規模で複雑なので、必要なファイルと削除できるファイルをすぐに判断できない場合があります。
役立つ手段としては、オープン コントロール パッケージ全体を使用してカスタマイズ コントロールを作成します。そして、IDE の [カバレッジ ビューア] を使用して、修正したコードに必要なファイルを判別します。詳細な情報は、IDEドキュメンテーションのカバレッジ ビューアを参照してください。
修正したコントロールのテスト アプレットを作成します。テストでは、コントロールのすべてのカスタム機能を使用することを確認します。そして、カバレッジ測定を使用してテスト アプレットを実行します。コード カバレッジの開始と停止は、アプレットで Ctrl キーを押しながら右クリックしてコンテキスト メニューを呼び出すか、またはCoverage API の呼び出しをアプレットのソース コードに追加して実行します。データの収集を開始後、対話的にアプレットを実行し、修正したコードを最大限テストします。
カバレッジ ビューアでカバレッジ データを表示する場合、[最大カウント] の値が 0 のすべてのファイルを確認します。パッケージからこれらのファイルを削除します。スーパー パッケージ COM.CURL.OPEN.GUI.CONTROLS から幾つかのサブパッケージ全体を削除できることに気がつくかも知れません。
この方法は完全ではありません。特に、テスト アプレットで修正したコントロールのすべての機能をテストしなかった場合に、実際に必要なファイルを見落とすことがあります。この場合、コンパイラ エラーになります。ディレクトリのすべてのファイルに対し、[すべて検索] を実行すると、通常、不足しているファイルを検索できます。