Command (クラス)
public abstract Command {inherits Observable}
インポート元: CURL.GUI.STANDARD. package 内で定義されています CURL.GUI.BASE.
直接継承しているサブクラス: DelegatingCommand, CommandImpl

すべての GUI Toolkit コマンドのスーパークラス。

説明

Command は、コマンドについてのメタ情報と、現在の実装 (Command.impl) を示す CommandImpl へのアクセッサで構成されています。コマンドの機能を実際に使用するには、Command.impl プロパティを取得する必要があります。なお、コマンドの現在の状態によっては、このプロパティは null の可能性があります。

Command を観察対象にすることができます。この場合、その実装の値、またはその実装によって保持される状態が変更されたときに、その Observer に通知することを約束します。特に、UI 要素は、コマンドを観察し、Command の状態が変わるときにそのアフォーダンスを変更します。

コマンドの命名規則の詳細については、クラス CommandContext を参照してください。

オーバーライド

Command の状態は、状態の再計算とオブザーバーの通知をできるだけたくさんバッチ処理するプロトコルを使って保持されます。これは、効率の面では重要ですが、このクラスを実装するユーザーに対していくつかの重要な要件を提示します。



コマンドの更新プロセスは繰り返し処理ではないことに注意してください。特に、Command.update または Command.update-completed の実行中に生成される Command.request-update の任意の呼び出しは、引数 error-if-updating?false に設定されている場合を除いて、エラーになります。この引数が false に設定されている場合、これらの呼び出しでは何も行なわれません。

また、基本クラスのコンストラクタは、Command.request-update 呼び出しを行って、すべての Command が必ず初回に更新サイクルを通過してから実際に使用されるようにします。

コンストラクタ
default:この Command を作成します。
コンストラクタ public {Command.default name:String}

プロパティ
impl:このコマンドの現在の実装。
アクセサ public abstract Command.impl:#CommandImpl
name:このコマンドの名前を表す String。このコマンドを、それが置かれている CommandContext で検索してアクセスするために使用されます。詳細については、CommandContextを参照してください。
フィールド public constant Command.name:String
プロパティ 継承 Observable: has-observers?, notify-observers?

メソッド
ensure-updated:このコマンドの状態が再計算されていることを保証します。
protected {Command.ensure-updated}:void
note-state-changed:サブクラスによって呼び出され、コマンドの状態が変更されていることを認識します。
protected {Command.note-state-changed}:void
request-update:この Command に、その状態の再計算が必要であることを通知します。
public {Command.request-update error-if-updating?:bool = true}:void
update:この Command の状態を再計算します。
protected {Command.update}:void
update-completed:Command.update が完了したときに呼び出されます。
protected {Command.update-completed}:void
メソッド 継承 Observable: add-observer, notify-observers, remove-observer
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize



コンストラクタ詳細
default (コンストラクタ)
public {Command.default name:String}

この Command を作成します。

name: このコマンドの名前を示す String



プロパティ詳細
impl (アクセサ)
アクセサ public abstract Command.impl:#CommandImpl

このコマンドの現在の実装。



name (フィールド)
public constant Command.name:String

このコマンドの名前を表す String。このコマンドを、それが置かれている CommandContext で検索してアクセスするために使用されます。詳細については、CommandContextを参照してください。






メソッド詳細
ensure-updated (メソッド)
protected {Command.ensure-updated}:void

このコマンドの状態が再計算されていることを保証します。

説明

このメソッドは、サブクラスによって呼び出されて、更新を必要としているコマンドが更新されてから、アプリケーション コードによる操作または呼び出しが可能になるようにします。

オーバーライド

このメソッドは、サブクラスによるオーバーライドはありません


note-state-changed (メソッド)
protected {Command.note-state-changed}:void

サブクラスによって呼び出され、コマンドの状態が変更されていることを認識します。

説明

このメソッドは、オブザーバーへの通知が必要となるようなコマンドの状態の変更をサブクラスが認識したときに、そのサブクラスによって呼び出されなければなりません。この通知は、ペンディングの直後、または次の Command.update-completed が起こるときに行われます。

オーバーライド

このメソッドをオーバーライドするサブクラスは、スーパークラスの実装を必ず呼び出す必要があります。


request-update (メソッド)
public {Command.request-update error-if-updating?:bool = true}:void

この Command に、その状態の再計算が必要であることを通知します。

説明

このコマンドに Observer がある場合に、このメソッドを実行すると、次回イベント ループがヒットしたときに更新が行われるようにスケジュールされます。それ以外の場合、更新は必要になるまで遅延されます。

このメソッドは、アプリケーションでの使用が目的ではありません。
error-if-updating?: コマンドがすでに更新中である場合に取られるアクションを決定するブール値。true の場合は、エラーがスローされます。それ以外の場合、このメソッドは何も行なわれません。

オーバーライド

このメソッドでは、通常、サブクラスによるオーバーライドは行われません。


update (メソッド)
protected {Command.update}:void

この Command の状態を再計算します。

説明

このメソッドは、コマンドの状態を再計算するために呼び出されます。これは、たとえば、コマンドが依存するオブジェクトが変更されたときにトリガされることがあります。

このメソッドは、通常、サブクラスからは呼び出されません。代わりに Command.request-update を使用します。

オーバーライド

実装では、このメソッドの最初に super.update を呼び出す必要があります。


update-completed (メソッド)
protected {Command.update-completed}:void

Command.update が完了したときに呼び出されます。

説明

このメソッドは、Command.update の呼び出しが完了した後で、コマンドが (潜在的に) 新しい状態についてオブザーバーに通知する前に、直接呼び出されます。 これは、サブクラスがコマンドの状態が変更されたことを認識して、Command.note-state-changed を呼び出す最後の機会を示します。また、これは、サブクラスが新しく更新されたコマンドの任意の要素をキャッシュする機会でもあります。

このメソッドは、通常、サブクラスからは呼び出されません。

オーバーライド

実装では、パブリックに可視であるコマンドの状態をこのメソッドで変更すべきではないことに注意してください。また、このメソッド内からの Command.request-update の呼び出しでは何も行なわれません。

実装では、通常、このメソッドの最初に super.update-completed を呼び出す必要があります。