コントロールとコントロールUI

今回はコントロールとコントロールUI*1について説明します。


コントロールとは、アプリケーションがユーザと対話できるようcurlが提供する以下のようなクラスのことを指します。

  • TextField
  • DropdownList
  • CheckButton
  • CommandButton

コントロールはこの他にもRadioButtonやTextDisplay、RecordGridといったものまで多数存在します。
Formベースのアプリケーションを構築する上で必須となる部品群です。


これらに対して以下のようなクラス群が存在します。

  • TextFieldUI
  • DropdownListUI
  • CheckButtonUI
  • CommandButtonUI

これらクラス群がコントロールUIです。
各コントロールに対応したコントロールUIが存在します。
コントロールのプロパティ設定やサブクラス化では実現できないような大幅な外観の変更や、特殊な動作の組み込みのためにこのコントロールUIを拡張したりします。


それではこのコントロールUIとは一体何なのでしょうか?
コントロールUIには主に2つの役割があります。

1番目は通常状態のコントロールの描画だけでなく、ボタンであれば押されている状態の描画や、リストがドロップダウンされている状態の描画なども含みます。2番目は例えば、CommandButtonUIがPointerPressイベントを受け取り、CommandButtonでActionイベントを発生させることです。


つまり、コントロールUIはコントロールから、自身の描画や生のイベントの処理といった詳細を分離します。
コントロールクラスのクライアント*2は「ボタンが押された」とか「値が選択された」といった抽象度でプログラミングが可能になるわけです。


通常はプログラミングでコントロールUIを意識する必要はありません。
プロパティで設定できないような外観の変更や"生のイベント"に応答する特殊な動作をさせたい場合に初めてコントロールUIを利用します。


続く

*1:「UIクラス」と言ったりもします

*2:ここではコントロールクラスを使う人のこと