(57)【要約】  １つのページ上の同じコマンドサーフェスを無関係のコンポーネントおよびアプリケーションに関連付けることができる。コンポーネントのそれぞれは、コンポーネントがこれから利用しようとしている共有コマンドサーフェスに関連付けられているコマンドを登録する。それぞれのコンポーネントは、コマンドサーフェスに関連付けられているコマンドをいくつでも使用することができる。コマンドマネージャーは、ページ上のコンポーネントとコマンドサーフェスとの間でメッセージブローカーとしての機能を果たす。コマンドサーフェスに関連付けられているコマンドを受け取ると、コマンドマネージャーは、コマンドメッセージを適切なコンポーネントにディスパッチする。
2011516969.tif 000002
【特許請求の範囲】
【請求項１】
コマンドサーフェスをアクティブなコンポーネントに関連付けるための方法であって、
コマンドサーフェスをウェブページ上の第１のコンポーネントおよび第２のコンポーネントに関連付けるステップであって、前記コマンドサーフェスは、アクションを実行するためのコマンドを備える、ステップ（３２０）と、
前記第１のコンポーネントに対する第１のコマンドリスト、および前記第２のコンポーネントに対する第２のコマンドリストを識別するステップであって、前記第１のコマンドリストおよび前記第２のコマンドリストは、前記コマンドサーフェス上に含まれるコマンド（２１１、２１３、２１５）を備える、ステップと、
第１のコマンドリスト内のコマンドのそれぞれを前記第１のコンポーネントに関連付け、第２のコマンドリスト内のコマンドのそれぞれを前記第２のコンポーネントに関連付けるステップ（３３０）と、
前記コマンドサーフェス上に含まれるコマンドのうちの１つがいつアクティブ化されるかを決定するステップ（４１０）と、
前記第１のコンポーネントがいつ前記コマンドを受け取るべきか、および前記第２のコンポーネントがいつ前記コマンドを受け取るべきかを決定するステップ（４２０）と、
前記第１のコンポーネントが前記コマンドを受け取るべきであると決定されるとき、処理するために前記コマンドを前記第１のコンポーネントにディスパッチし、および前記第２のコンポーネントが前記コマンドを受け取るべきであると決定されるとき、処理するために前記コマンドを前記第２のコンポーネントにディスパッチするステップ（４４０）と
を含むことを特徴とする方法。
【請求項２】
前記第１のコマンドリストおよび前記第２のコマンドリストを識別するステップは、前記第１のコンポーネントをポーリングして前記第１のコマンドリストを取得するステップと、前記第２のコンポーネントをポーリングして前記第２のコマンドリストを決定するステップとを含み、前記第１のコンポーネントおよび前記第２のコンポーネントは、それらのコマンド登録を修正することができることを特徴とする請求項１に記載の方法。
【請求項３】
前記第１のコマンドリストおよび前記第２のコマンドリスト内のコマンドのそれぞれは、グローバルコマンドまたはフォーカストコマンドであり、前記グローバルコマンドは、コンポーネントに現在のフォーカスがあるかどうかに関係なく前記コマンドをディスパッチすることを指示し、前記フォーカストコマンドは、前記コンポーネントに現在のフォーカスがあることに基づいて前記コマンドをディスパッチすることを指示することを特徴とする請求項１に記載の方法。
【請求項４】
前記第１のコンポーネントが前記現在のフォーカスを有する場合、グローバルコマンドまたはフォーカストコマンドとして前記コマンドが前記第１のコンポーネントに関連付けられているときに前記第１のコンポーネントが前記コマンドを受け取ることを決定するステップと、前記第１のコンポーネントが前記現在のフォーカスを有する場合、グローバルコマンドとして前記コマンドが前記第２のコンポーネントに関連付けられているときに前記第２のコンポーネントが前記コマンドを受け取ることを決定するステップとをさらに含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記第１のコンポーネントまたは前記第２のコンポーネントのいずれかからのフォーカスを変更する要求、または前記ウェブページ上の他のコードを受け取ることに応答して、現在のフォーカスを変更するステップをさらに含むことを特徴とする請求項３に記載の方法。
【請求項６】
処理するために前記コマンドを前記第１のコンポーネントにディスパッチする前に、また処理するために前記コマンドを前記第２のコンポーネントにディスパッチする前に、前記第１のコンポーネントをポーリングして、前記第１のコンポーネントが前記コマンドを処理することが可能な状態にあるかどうかを判定するステップと、前記第２のコンポーネントをポーリングして、前記第２のコンポーネントが前記コマンドを処理することが可能な状態にあるかどうかを判定するステップとをさらに含むことを特徴とする請求項４に記載の方法。
【請求項７】
すでに処理されているコマンドを保持するステップと、取り消し手順が開始されたときに、コンポーネントのそれぞれに、取り消すべきコマンドを通知するステップとをさらに含むことを特徴とする請求項４に記載の方法。
【請求項８】
前記識別されたコマンドリストのそれぞれを前記コマンドサーフェスに関連付けられている前記コンポーネントのそれぞれに関連付けることで、それぞれのコンポーネントがアクティブ化するコマンドを登録することを特徴とする請求項５に記載の方法。
【請求項９】
前記第１のコンポーネントおよび前記第２のコンポーネントは、実行時に関連付けられているコマンドをデタッチすることができることを特徴とする請求項８に記載の方法。
【請求項１０】
前記第１のコンポーネントは、第１のアプリケーションに関連付けられ、前記第２のコンポーネントは、第２のアプリケーションに関連付けられ、前記第１のアプリケーションおよび前記第２のアプリケーションは、異なるアプリケーションであることを特徴とする請求項８に記載の方法。
【請求項１１】
コマンドサーフェスをアクティブなコンポーネントに関連付けるためのコンピューター実行可能命令を格納するコンピューター可読記憶媒体であって、
１つのウェブページ上の第１のコンポーネントおよび第２のコンポーネントと、前記第１のコンポーネントおよび前記第２のコンポーネントに関連付けられているコマンドサーフェスとの間でブローカーとしての機能を果たすように構成されているコマンドマネージャーを初期化するステップであって、前記コマンドサーフェスは、アクションを実行するためのコマンドを備える、ステップ（３１０）と、
前記第１のコンポーネントに対する第１のコマンドリスト、および前記第２のコンポーネントに対する第２のコマンドリストを識別するステップであって、前記第１のコマンドリストおよび前記第２のコマンドリストは、前記コマンドサーフェス上に含まれるコマンド（２１１、２１３、２１５）を備える、ステップと、
前記第１のコマンドリストおよび前記第２のコマンドリスト内のコマンドのそれぞれを前記コマンドマネージャーに登録するステップ（３３０）と、
前記第１のコンポーネントが前記コマンドサーフェス上でアクティブ化されたコマンドをいつ受け取るべきか、および前記第２のコンポーネントが前記コマンドをいつ受け取るべきかを決定するステップ（４２０）と、
前記第１のコンポーネントが前記コマンドを受け取るべきであると決定されるとき、処理するために前記コマンドを前記第１のコンポーネントにディスパッチし、および前記第２のコンポーネントが前記コマンドを受け取るべきであると決定されるとき、処理するために前記コマンドを前記第２のコンポーネントにディスパッチするステップ（４４０）と
を含むことを特徴とするコンピューター可読記憶媒体。
【請求項１２】
前記第１のコンポーネントおよび前記第２のコンポーネントを前記コマンドマネージャーに登録するステップと、前記第１のコンポーネントおよび前記第２のコンポーネントをポーリングして前記第１のコマンドリストおよび前記第２のコマンドリストを取得するステップとをさらに含むことを特徴とする請求項１１に記載のコンピューター可読記憶媒体。
【請求項１３】
前記第１のコマンドリスト内のコマンドのそれぞれ、および前記第２のコマンドリスト内のコマンドのそれぞれをグローバルコマンドまたはフォーカストコマンドとして識別するステップをさらに含み、前記グローバルコマンドは、コンポーネントに現在のフォーカスがあるかどうかに関係なく前記コマンドをディスパッチすることを指示し、前記フォーカストコマンドは、前記コンポーネントに現在のフォーカスがあることに基づいて前記コマンドをディスパッチすることを指示することを特徴とする請求項１１に記載のコンピューター可読記憶媒体。
【請求項１４】
前記第１のコンポーネントおよび前記第２のコンポーネントをポーリングして、前記第１のコンポーネントが前記コマンドを処理することが可能な状態にあるかどうかを判定し、前記第２のコンポーネントが前記コマンドを処理することが可能な状態にあるかどうかを判定するステップをさらに含むことを特徴とする請求項１１に記載のコンピューター可読記憶媒体。
【請求項１５】
すでに処理されている前記コマンドを保持するステップと、取り消し手順が開始されたときに、前記コンポーネントのそれぞれに、取り消すべき前記コマンドを通知するステップとをさらに含むことを特徴とする請求項１１に記載のコンピューター可読記憶媒体。
【請求項１６】
実行時に前記コマンドマネージャーに登録されているコマンドのうちの１つまたは複数をデタッチするステップをさらに含むことを特徴とする請求項１１に記載のコンピューター可読記憶媒体。
【請求項１７】
コマンドサーフェスをコンポーネントに関連付けるためのシステムであって、
プロセッサー（５）、メモリ（７）、およびコンピューター可読媒体（１４）と、
前記コンピューター可読媒体上に格納され、前記プロセッサー上で実行される動作環境（１６）と、
コマンドを含むコマンドサーフェス、第１のアプリケーション（２１０）に関連付けられている第１のコンポーネント、および第２のアプリケーション（２１２）に関連付けられている第２のコンポーネントを備えるウェブページを表示するように構成されているディスプレイ（２８）と、
コマンドマネージャー（２６）であって、
前記コマンドサーフェスに関連付ける前記第１のコンポーネントおよび前記第２のコンポーネントから登録要求を受け取り（３２０）、
前記第１のコンポーネントから第１のコマンドリストを、前記第２のコンポーネントから第２のコマンドリストを受け取り（３３０）、前記第１のコマンドリストおよび前記第２のコマンドリストは、前記コマンドサーフェス上に含まれるコマンドを備え、
前記第１のコマンドリストおよび前記第２のコマンドリスト内のコマンドのそれぞれを登録し（３３０）、
アクティブ化されたときに前記コマンドサーフェスからコマンドを受け取り（４１０）、前記第１のコンポーネントがいつ前記コマンドを受け取るべきかを決定し、前記第２のコンポーネントがいつ前記コマンドを受け取るべきかを決定し（４２０）、
前記第１のコンポーネントが前記コマンドを受け取るべきであると決定されるとき、処理するために前記コマンドを前記第１のコンポーネントにディスパッチし、前記第２のコンポーネントが前記コマンドを受け取るべきであると決定されるとき、処理するために前記コマンドを前記第２のコンポーネントにディスパッチする（４４０）
ように構成された、コマンドマネージャー（２６）と
を備えることを特徴とするシステム。
【請求項１８】
前記第１のコマンドリスト内のコマンドのそれぞれ、および前記第２のコマンドリスト内のコマンドのそれぞれをグローバルコマンドまたはフォーカストコマンドとして分類することをさらに含み、前記グローバルコマンドは、コンポーネントに現在のフォーカスがあるかどうかに関係なく前記コマンドをディスパッチすることを指示し、前記フォーカストコマンドは、前記コンポーネントに現在のフォーカスがあることに基づいて前記コマンドをディスパッチすることを指示することを特徴とする請求項１７に記載のシステム。
【請求項１９】
処理するために前記コマンドを前記第１のコンポーネントにディスパッチする前に、前記第１のコンポーネントをポーリングして前記第１のコンポーネントが前記コマンドを処理することが可能な状態にあるかどうかを判定することと、処理するために前記コマンドを前記第２のコンポーネントにディスパッチする前に、前記第２のコンポーネントをポーリングして前記第２のコンポーネントが前記コマンドを処理することが可能な状態にあるかどうかを判定することとをさらに含むことを特徴とする請求項１７に記載のシステム。
【請求項２０】
すでに処理されている前記コマンドを保持することと、取り消し手順が開始されたときに、前記コンポーネントのそれぞれに、取り消すべき前記コマンドを通知することとをさらに含むことを特徴とする請求項１７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コマンドサーフェスの、複数のアクティブなコンポーネントへの関連付けに関する。
【背景技術】
【０００２】
ウェブプラットフォームおよびウェブアプリケーションによってサポートされている多様なコンポーネントに対応するために、多くのオンライン製品およびオンラインサービスでは、分散型コマンドを用いたユーザーインターフェース設計を実装している。これらのユーザーインターフェースは、アプリケーション内のそれぞれのコンポーネントがそれ独自のコマンドセットを有するような明確に異なるコマンドサーフェス（ｃｏｍｍａｎｄ  ｓｕｒｆａｃｅｓ）を多数備える。それぞれのアプリケーションは、ユーザーインターフェース内の関連するコンポーネントに緊密に統合されている。例えば、１つのウェブページが、類似の機能を備える２つの異なるコンポーネント（つまり、２つの異なるテキストボックス）を配置している場合があるが、それぞれのコンポーネントは、それ独自の独立したコマンドサーフェスを備える。
【発明の概要】
【０００３】
本概要は、以下の発明を実施するための形態でさらに説明されている選択した概念を簡略化した形式で紹介するために提供するものである。本概要は、特許請求の範囲に記載されている主題事項の重要な特徴または本質的な特徴を特定することを目的とするものでも、特許請求の範囲に記載されている主題事項の範囲の決定に際して、補助として使用することを目的とするものでもない。
【０００４】
同じコマンドサーフェスを、１つのページ上の無関係のコンポーネントおよびアプリケーションに関連付けることができる。コンポーネントは、コンポーネントがこれから利用しようとしている共有コマンドサーフェスに関連付けられているコマンドを登録する。それぞれのコンポーネントは、コマンドサーフェスに関連付けられているコマンドをいくつでも使用することができる。コマンドマネージャーは、ページ上のコンポーネントと共有コマンドサーフェスとの間でメッセージブローカーとしての機能を果たす。コマンドサーフェスに関連付けられているコマンドを受け取ると、コマンドマネージャーは、コマンドメッセージを適切なコンポーネントにディスパッチする。
【図面の簡単な説明】
【０００５】
【図１】例示的なコンピューティングシステムを示す図である。
【図２】コマンドサーフェスを複数のアクティブなコンポーネントに関連付けるためのシステムを示す図である。
【図３】コマンドサーフェスを複数のコンポーネントに関連付けるためのプロセスを示す図である。
【図４】コマンドを受け取り、コマンドサーフェスから受け取ったコマンドをコンポーネントにディスパッチするためのプロセスを示す図である。
【発明を実施するための形態】
【０００６】
次に、同種の番号により同様の要素を表す図面を参照しつつ、さまざまな実施形態について説明する。特に、図１およびそれに対応する説明は、実施形態を実装できる好適なコンピューティング環境について簡潔に述べた一般的な説明であることが意図されている。
【０００７】
一般に、プログラムモジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造、および他の種類の構造を含む。ハンドヘルドデバイス、マルチプロセッサーシステム、マイクロプロセッサーベースまたはプログラム可能な家電製品、ミニコンピューター、メインフレームコンピューター、および同様のものを含む、他のコンピューターシステム構成も使用できる。通信ネットワークを通じてリンクされているリモート処理デバイスによりタスクが実行される分散コンピューティング環境も使用できる。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモートの両方の記憶装置デバイス内に配置されうる。
【０００８】
次に、図１を参照しつつ、さまざまな実施形態において使用されるコンピューター１００の例示的なコンピューターアーキテクチャーについて説明する。コンピューター１００は、一般的にクライアントコンピューティングデバイスとして例示されているが、コンピューター１００は、クライアント、サーバー、モバイルデバイス、または他のコンピューティングデバイスとして構成することができる。コンピューター１００は、中央演算処理装置５（「ＣＰＵ」）、ランダムアクセスメモリ９（「ＲＡＭ」）および読み取り専用メモリ（「ＲＯＭ」）１０を含むシステムメモリ７、およびメモリをＣＰＵ  ５に結合するシステムバス１２を備える。起動時などにコンピューター内の要素間の情報伝送を助ける基本ルーチンを含む基本入出力システムは、ＲＯＭ  １０に格納される。コンピューター１００は、以下でさらに詳しく説明される、オペレーティングシステム１６、アプリケーションプログラム２４、および他のプログラムモジュールを格納するための大容量記憶装置デバイス１４をさらに備える。
【０００９】
大容量記憶デバイス１４は、バス１２に接続されている大容量記憶装置コントローラー（図示せず）を通じてＣＰＵ  ５に接続されている。大容量記憶装置デバイス１４およびその関連するコンピューター可読媒体は、コンピューター１００用に不揮発性記憶装置を備える。本明細書に記載されているコンピューター可読媒体の説明では、ハードディスクまたはＣＤ−ＲＯＭドライブなどの大容量記憶装置デバイスに言及しているが、コンピューター可読媒体は、コンピューター１００によってアクセスできる利用可能な任意の媒体とすることができる。
【００１０】
例えば、限定はしないが、コンピューター可読媒体は、コンピューター記憶媒体および通信媒体を含むことができる。コンピューター記憶媒体は、コンピューター可読命令、データ構造体、プログラムモジュール、またはその他のデータなどの情報を格納する方法または技術で実装される揮発性および不揮発性、取り外し可能および取り外し不可能媒体を含む。コンピューター記憶媒体としては、限定はしないが、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたはその他のソリッドステートメモリ技術、ＣＤ−ＲＯＭ、デジタル多目的ディスク（「ＤＶＤ」）、またはその他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイス、または所望の情報を格納するために使用することができ、しかもコンピューター１００によりアクセスできる他の媒体が挙げられる。
【００１１】
さまざまな実施形態により、コンピューター１００は、インターネットなどの、ネットワーク１８を通じてリモートコンピューターへの論理的接続を使用しネットワーク接続環境において動作することができる。コンピューター１００は、バス１２に接続されているネットワークインターフェースユニット２０を通じてネットワーク１８に接続することができる。ネットワーク接続は、無線方式および／または有線方式としてよい。ネットワークインターフェースユニット２０は、他の種類のネットワークおよびリモートコンピューターシステムに接続するために使用することもできる。コンピューター１００は、キーボード、マウス、または電子スタイラス（図１には示されていない）を含む、多数の他のデバイスから入力を受け取り、処理するための入出力コントローラー２２を備えることもできる。同様に、入出力コントローラー２２は、ユーザーインターフェース２８を備えるディスプレイ画面、プリンター、または他の種類の出力デバイスへの出力を行うことができる。コンピューター１００は、ネットワーク接続１８および／または他の何らかの接続を通じて（複数の）データソース（図示せず）に結合することも可能である。
【００１２】
上で簡単に述べたように、コンピューター１００の大容量記憶装置デバイス１４およびＲＡＭ  ９に、本件特許出願人のオペレーティングシステムＷＩＮＤＯＷＳ  ＶＩＳＴＡ（登録商標）などの、ネットワーク接続されたパーソナルコンピューターのオペレーションを制御するのに適しているオペレーティングシステム１６を含む、多数のプログラムモジュールおよびデータファイルを格納することができる。大容量記憶装置デバイス１４およびＲＡＭ  ９には、１つまたは複数のプログラムモジュールを格納することもできる。特に、大容量記憶装置デバイス１４およびＲＡＭ  ９には、ウェブブラウザーアプリケーション２５などの、１つまたは複数のアプリケーションプログラム２６を格納することができる。例えば、ブラウザープログラム２５は、ＭＩＣＲＯＳＯＦＴ  ＩＮＴＥＲＮＥＴ  ＥＸＰＬＯＲＥＲ（登録商標）アプリケーションであってもよい。
【００１３】
サーバー２３は、コンピューター１００用にサイトサービスを提供するように構成される。例示されているように、サーバー２３は、クライアント１００上のブラウザーアプリケーション２５を通じてアクセスされるサイトを提供するように構成されたサイトソフトウェアを備える。一実施形態によれば、ＭＩＣＲＯＳＯＦＴ  ＳＨＡＲＥＰＯＩＮＴ  ＳＥＲＶＩＣＥＳ（登録商標）などのサイトソフトウェアは、コラボレーションツール、ドキュメント格納ツール、およびサイトに関連付けられるワークフローツールを提供するために使用することができる。例えば、サイトは、ユーザー（チームメンバー）にドキュメントを共有するための手段、カレンダまたはイベント情報を共有するための手段、プロジェクトに関するアイデアを生み出し、議論するための手段、およびプロジェクトに関するタスクの追加、割り当て、および追跡を行うための手段を提供するコンポーネントを用いて作成することができる。サイトは、インターネットサイト、エクストラネットサイト、および／またはイントラネットサイト、もしくはユーザーからアクセス可能な他のサイトとして構成することが可能である。
【００１４】
ユーザーインターフェース（ＵＩ）２８は、サイトを閲覧し、ウェブページ上のコマンドサーフェスおよびコンポーネントと互いにやり取りするための視覚的手段をユーザーに提供するように設計されている。コンポーネントが異なるアプリケーションに関連付けられているときであっても、１つのページ上のそれぞれのコマンドサーフェスを１つのページ上の１つのコンポーネントにのみ直接結合する代わりに、そのコマンドサーフェスを１つのページ上の複数のコンポーネントに結合することができる。ＵＩ  ２８に例示されているように、１つのページ上の同じコマンドサーフェスが、２つの異なるコンポーネント（Ｃ１およびＣ２）に関連付けられる。このコマンドサーフェスは、リボン、ツールバー、パイメニュー、および同様のものなどのコマンドサーフェスとすることができる。そのページ上のコンポーネントは、無関係であり、異なるアプリケーションに関連付けることができる。一般的に、それぞれのコンポーネントは、コンポーネントがこれから利用しようとしているコマンドサーフェスに関連付けられているコマンドをコマンドマネージャー２６に登録する。コマンドマネージャー２６は、ページ上のコンポーネントとコマンドサーフェスとの間でメッセージブローカーとしての機能を果たす。それぞれのコンポーネントは、コマンドサーフェスに関連付けられているコマンドをいくつでも使用することができる。例えば、コンポーネントＣ１は、コマンドサーフェスのコマンドのうちの３つのコマンドを使用することができ、Ｃ２は、これらのコマンドのうちの２つのコマンドを使用することが可能である。コンポーネント（例えば、Ｃ３）は、ユーザーには見えないコンポーネントとすることも可能である。例えば、コンポーネントＣ３は、コマンドサーフェスに関連付けられている保存コマンドの通知を受けるように登録するスペルチェッカーであってもよい。コンポーネントは、コマンドサーフェスへのアタッチまたはコマンドサーフェスからのデタッチを行ったり、実行時にコマンドの個数を動的に変更することができる。コンポーネントは、コマンドを、フォーカストコマンド（ｆｏｃｕｓｅｄ  ｃｏｍｍａｎｄ）またはグローバルコマンド（ｇｌｏｂａｌ  ｃｏｍｍａｎｄ）となるように登録することができる。コマンドがコンポーネントによってグローバルコマンドとして登録された場合、コンポーネントが現在のフォーカスを有していないとしても、コマンドサーフェス上でコマンドがアクティブ化されたときにコマンドを受け取る。コマンドがフォーカストコマンドとして登録された場合、コンポーネントは、現在のフォーカスを有しているときにコマンドの通知を受け取る。コマンドサーフェスに関連付けられているコマンドを受け取ると、コマンドマネージャー２６は、コマンドメッセージを適切なコンポーネントにディスパッチする。コマンドマネージャー２６のオペレーションについて、以下でさらに詳しく説明する。
【００１５】
図２は、コマンドサーフェスを複数のアクティブなコンポーネントに関連付けるためのシステムを示している。図示されているように、システム２００は、ページ２０５、コンポーネント２１０、コンポーネント２１２、コンポーネント２１４、ならびにコマンドディスパッチャー２２０、フォーカスマネージャー２２５、取り消しマネージャー２３０、およびコマンドサーフェス２３５を備えるコマンドマネージャー２６を備える。
【００１６】
上述のように、コマンドマネージャー２６は、コマンドサーフェスと種々のコンポーネントとの間のやり取りを管理する。コマンドディスパッチャー２２０、フォーカスマネージャー２２５、取り消しマネージャー２３０、およびコマンドサーフェス２３５は、コマンドマネージャー２６内に組み込まれているように図示されているが、その機能の一部または全部をコマンドマネージャー２６の外部に置くことも可能である。
【００１７】
ページ２０５上のコンポーネントは、ウェブサービスおよびウェブアプリケーションを含む、ウェブサイト上でホストされる多数のアプリケーションおよびコントロールを表すものとしてよい。例えば、リッチテキストエディタ、時計、スプレッドシートモジュール、データフォーム、描画ツール、および同様のものは、１つのページに収めることができるコンポーネント群である。
【００１８】
共有コマンドサーフェスを利用したいコンポーネントは、コマンドマネージャー２６に登録する。登録後、または登録中に、コンポーネントは、コマンドサーフェス上でいつ実行されるかについて通知を受けたいコマンドを指定する。一実施形態によれば、コマンドは、１つまたは複素のコマンドからなるリストでコマンドマネージャーに対し指定される（つまり、コマンド２１１、２１３、および２１５）。コンポーネントは、コマンドをグローバルコマンドまたはフォーカストコマンドであると指定することができる。グローバルコマンドは、コマンドマネージャー２６によってコンポーネントにディスパッチされるが、これは、コンポーネントがフォーカスを有していなくても行われる。このようにして、コンポーネントは、そのコンポーネントがアクティブでなくても、コマンドサーフェス上でコマンドに反応することができる。フォーカストコマンドがコンポーネントにディスパッチされるのは、そのコンポーネントがフォーカスを有するときに限る。コンポーネントは、いつでも、コマンドサーフェスからコマンドのアタッチまたはデタッチを行うことができる。例えば、コンポーネントは、アプリケーションの状態の変化に基づいて、コマンドサーフェス上で利用可能なアクティブなコマンドを変更することができる。コンポーネントは、さらに、それがフォーカスを受け取ることができるかどうかも指定することができる。
【００１９】
コマンドマネージャー２６は、定期的に、またはそのページ上の特定のイベントの副作用として、登録されているコンポーネントを、コマンドサーフェスの代わりにポーリングし、それらがホストしているそれぞれのコマンドの状態を判定することができる。一実施形態では、このコマンド状態は、コマンドがコンポーネントにおいて現在有効であるか無効であるかを示す情報およびそのコマンドに関連付けられている他の状態情報の集合からなる。例えば、「Ｂｏｌｄ」ボタンは、そのボタンがコマンドサーフェスにおいてアクティブであるかどうかということに加えて、現在有効になっている（オンにされている）かどうかについてもポーリングすることができる。一実施形態によれば、コマンドサーフェス上でコマンドを受け取ると（つまり、ユーザーがコマンドをクリックすると）、コマンドマネージャーは、コマンドをコマンドディスパッチャー２２０に送る。
【００２０】
コマンドディスパッチャー２２０は、１つのページ上で登録されているコンポーネントと互いにやり取りする。この例では、コマンドディスパッチャー２２０は、コンポーネント２１０、コンポーネント２１２、およびコンポーネント２１４と互いにやり取りするように構成されている。コマンドディスパッチャーは、コマンドをコンポーネントにディスパッチし、コマンドの状態を要求し、コマンドが有効になっているかどうかを判定するように構成される。コマンドディスパッチャーは、コマンドに対し登録されているコマンドハンドラを記録し、この情報を使用して、コンポーネントへのコマンドおよびメッセージのルーティングを行う。一実施形態によれば、コマンドディスパッチャー２２０は、他のメッセージをコンポーネントに送り、および／または追加情報をディスパッチされたコマンドとともに送ることができる。例えば、情報は、コマンド、状態情報、および同様のものを処理する際に使用されるデータに関係するものとしてよい。コマンドディスパッチャーからのコマンドは、正しいコンポーネントがそれらのコマンドを確実に受け取れるようにするためにプロキシとしてのフォーカスマネージャー２２５を通じて実行することもできる。一実施形態によれば、フォーカスマネージャーは、主コマンドディスパッチャー２２０とコンポーネントとの間に結合される。この実施形態では、フォーカストコマンドがフォーカスマネージャー２２５に登録されると、フォーカスマネージャー２２５は、次いで、それらについて主コマンドディスパッチャー２２０に登録する。コマンドが主コマンドディスパッチャー２２０を通じてフォーカスマネージャー２２５内へディスパッチされる場合、フォーカスマネージャー２２５は、コンポーネントがもしあればどのコンポーネントが現在のフォーカスを有するかに応じてコマンドのルーティングを行うことができる。
【００２１】
フォーカスマネージャー２２５は、ページ２００上のコンポーネントの選択を管理する。フォーカスマネージャー２２５は、そのページ上で現在のフォーカスを有するコンポーネント（アクティブなコンポーネント）を追跡するように構成されている。そのページ上でイベントが発生した場合（例えば、ユーザーがクリックする）、そのイベントを検出したコンポーネントは、フォーカスマネージャー２２５を使用して、アクティブなコンポーネントになることを要求することができる。次いで、フォーカスマネージャー２２５は、これまでアクティブであったコンポーネントに、フォーカスを譲り渡すよう指示する。次いで、フォーカスマネージャー２２５は、要求側コンポーネントに対し、フォーカスが与えられたことを通知する。そのページ上のアクティブなコンポーネントの外部で選択が発生した場合、フォーカスマネージャーは、アクティブなコンポーネントはないというメッセージをコンポーネントに送り、コンポーネントのそれぞれがフォーカスをデタッチすることができるようにする。コンポーネントがフォーカスを受け取ると、コマンドマネージャー２６は、現在のフォーカスを要求できるようにそのコンポーネントに通知を送る。同様に、フォーカスを失ったコンポーネントは、現在のフォーカスを譲り渡すことができるように通知を受けることができる。一実施形態によれば、他のコンポーネントがフォーカスを要求した場合、これまでフォーカスされていたコンポーネントは、コマンドマネージャー２６によってフォーカスを譲り渡すよう求められる。
【００２２】
取り消しマネージャー２３０は、実行されたコマンドの取り消し／やり直しを行うために使用される。取り消しマネージャー２３０は、実行されたコマンドを追跡し、取り消しまたはやり直しコマンドが要求されたときに、正しいコンポーネントがそのコマンドを取り消しまたはやり直しを行う要求を確実に受け取れるようにする。
【００２３】
コマンドサーフェス２３５は、そのページ上のコンポーネントに関連付けられている（複数の）コマンドサーフェスを追跡する。このコマンドサーフェスは、リボン、ツールバー、パイメニュー、および同様のものなど任意の種類のコマンドサーフェスとすることができる。コマンドサーフェスそれ自体は、それに関連付けられているコマンドの処理を取り扱わない。その代わりに、コマンドがコマンドサーフェス上でアクティブ化されたとき、コマンドマネージャー２６が、コマンドをそのページ上の適切なコンポーネント宛てに送る。一実施形態によれば、コマンドサーフェス２３５内のコマンドサーフェスは、関連付けられているコマンドのコントロール状態を更新するだけでなく、コンポーネントに対しコマンドを有効化／無効化するメッセージをサポートしている。コマンドサーフェスは、それらのコマンドサーフェスを使用するための定義済みのメソッドも含む。例えば、リボンコントロールには、これまで隠れていたコンテキストタブを表示するためのメソッドを備えることができる。コマンドマネージャー２６によるコマンドサーフェスの初期化の後に、そのデフォルトのコンテンツを描画する。一実施形態によれば、コマンドサーフェスに関連付けられているデータは、ＸＭＬファイル内に格納される。
【００２４】
図２には例示されていないが、他の機能も、コマンドマネージャー２６内に備えることができる。例えば、他のマネージャーを実装することもできる。例えば、タスクマネージャーを、コンポーネントに関係する作業要求を処理するようにプログラムすることも可能である。
【００２５】
次に、図３を参照しつつ、コマンドサーフェスを複数のコンポーネントに関連付けるための例示的なプロセスについて説明する。
【００２６】
本明細書で提示しているルーチンの説明を読むと、さまざまな実施形態の論理的オペレーションは、（１）コンピューティングシステム上で実行される一連のコンピューター実装活動またはプログラムモジュールとして、および／または（２）コンピューティングシステム内の相互接続されたマシン論理回路または回路モジュールとして実装されることは理解されるであろう。この実装は、本発明を実装するコンピューティングシステムの性能要件に応じて選択できるものである。したがって、本明細書において例示されている、本明細書で説明されている実施形態を構成する論理的なオペレーションは、演算、構造的デバイス、活動、またはモジュールとさまざまに称される。これらの演算、構造的デバイス、活動、およびモジュールは、ソフトウェア、ファームウェア、専用デジタル論理回路、およびこれらの任意の組み合わせで実装されうる。
【００２７】
開始オペレーションの後、プロセス３００は、コマンドマネージャーが初期化されるオペレーション３１０に流れる。コマンドマネージャーは、１つのページ上のコンポーネントとコマンドサーフェスとの間でメッセージブローカーとしての機能を果たす。一実施形態によれば、コマンドマネージャーは、コマンドディスパッチャー、フォーカスマネージャー、取り消しマネージャー、およびそのページ上のコンポーネント間で共有される（複数の）コマンドサーフェスを初期化する。
【００２８】
オペレーション３２０に進み、そのページ上のコンポーネントが、コマンドマネージャーに登録される。共有コマンドサーフェスを利用したい１つのページ上の任意のコンポーネントが、コマンドマネージャーに登録される。
【００２９】
オペレーション３３０に流れた後、コンポーネントは、コマンドサーフェス上でいつ実行されるかについて通知を受けたいコマンドを登録する。コンポーネントは、フォーカストコマンドまたはグローバルコマンドを受け取るように登録することができる。コマンドがコンポーネントによってグローバルコマンドとして登録された場合、そのコンポーネントが現在のフォーカスを有していないとしても、コマンドサーフェス上でコマンドがアクティブ化されたときにコマンドを受け取る。コマンドがフォーカストコマンドとして登録された場合、そのコンポーネントは、現在のフォーカスを有しているときにのみコマンドの通知を受け取る。このコンポーネントは、コンポーネントがコマンドを実行するよう呼び出されたときにコマンドを取り扱うメソッドも提供する。
【００３０】
オペレーション３４０に遷移した後、コンポーネントに関連付けられる（複数の）コマンドサーフェスが初期化される。このコマンドサーフェスは、リボン、ツールバー、パイメニュー、および同様のものなど任意の種類のコマンドサーフェスとすることができる。コマンドサーフェスは、コンポーネントに関連付けられているコマンドのコントロール状態を更新するだけでなくコンポーネントに対しコマンドを有効化／無効化するメッセージをサポートしている。コマンドサーフェスは、それらのコマンドサーフェスを使用するための定義済みのメソッドも含む。
【００３１】
次いで、このプロセスは、終了オペレーションに流れ、他のアクションの処理に戻る。
【００３２】
図４は、コマンドを受け取り、コマンドサーフェスから受け取ったコマンドをコンポーネントにディスパッチするためのプロセスを示している。
【００３３】
開始オペレーションの後、プロセス４００は、コマンドサーフェスからコマンドを受け取るオペレーション４１０に流れる。コマンドサーフェス上でコマンドがアクティブ化されると、コマンドは、適切なコンポーネントへのコマンドのルーティングを取り扱うコマンドマネージャーにリダイレクトされる。
【００３４】
オペレーション４２０に進み、ディスパッチされたコマンドを受け取るコンポーネントが、決定される。一般的に、コマンドのディスパッチ先の決定は、コマンドの通知を受け取るためにどのコンポーネントが登録されているか、並びにコンポーネントの現在のフォーカスに基づく。例えば、上述のように、コマンドが実行されるときに必ずそのコマンドを通知されることを望むコンポーネントがあるが、フォーカスを有するときのみ通知されることを望むコンポーネントもある。
【００３５】
オペレーション４３０において、決定されたコンポーネントが、コマンドを処理することが可能な状態にあるかどうかに関する判定が行われる。コマンドを（複数の）コンポーネントにディスパッチする前に、コマンドマネージャーが（複数の）コンポーネントをポーリングして、それぞれのコンポーネントがコマンドを処理することが可能な状態にあるかどうかを判定することができる。
【００３６】
コマンドを処理することが可能な状態にあるそれぞれのコンポーネントに対して、プロセスは、オペレーション４４０に進み、そこで、それらの決定されたコンポーネントにコマンドをディスパッチする。
【００３７】
オペレーション４５０に移動して、そのページ上で実行されたコマンドおよびどのコンポーネントが通知を受けたかに関する記録を保持する。このようにして、取り消しまたはやり直しコマンドが要求されたときに、正しいコンポーネントがそのコマンドの取り消しまたはやり直しを行う要求を確実に受け取れるようにする。
【００３８】
次いで、このプロセスは、終了オペレーションに流れ、他のアクションの処理に戻る。
【００３９】
上記の仕様、実例、およびデータにより、本発明の構成物の製造および使用に関する完全な説明を提供する。本発明の多くの実施形態は、本発明の精神と範囲を逸脱することなく実装できるため、本発明は付属の請求項によって画定される。
【図１】
2011516969.tif 000003
【図２】
2011516969.tif 000004
【図３】
2011516969.tif 000005
【図４】
2011516969.tif 000006
【国際調査報告】
2011516969.tif 000007
2011516969.tif 000008
2011516969.tif 000009