JP2007538314A - 汎用ユーザインターフェースコマンドアーキテクチャ - Google Patents
汎用ユーザインターフェースコマンドアーキテクチャ Download PDFInfo
- Publication number
- JP2007538314A JP2007538314A JP2007511342A JP2007511342A JP2007538314A JP 2007538314 A JP2007538314 A JP 2007538314A JP 2007511342 A JP2007511342 A JP 2007511342A JP 2007511342 A JP2007511342 A JP 2007511342A JP 2007538314 A JP2007538314 A JP 2007538314A
- Authority
- JP
- Japan
- Prior art keywords
- command
- computer
- broker
- readable medium
- component
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
- Stored Programmes (AREA)
- Input From Keyboards Or The Like (AREA)
Abstract
ある態様の汎用ユーザインターフェースコマンドアーキテクチャは、アプリケーションがコンピューティングデバイス上のプレゼンテーションのためのコマンドがホストできるようにする。コマンドは、アプリケーションとして同じ設計者または作成者によって、あるいは他の者によって(例えば、サードパーティ開発者によって)、書くことができる。他の態様の汎用UIコマンドアーキテクチャは、アプリケーションがコマンドをホストできるようにするために使用することができる、API(アプリケーションプログラミングインターフェース)を記述する。他の態様の汎用UIコマンドアーキテクチャは、登録されたコマンドがアプリケーションによって活動化されることが可能である活動化メカニズムを記述する。
Description
本発明はコンピュータおよびユーザインターフェースに関し、詳細には、汎用ユーザインターフェースコマンドアーキテクチャに関する。
コンピュータ技術が進歩および発展してきたので、コンピュータがユーザに提示するUI(ユーザインターフェース)もまた進歩および発展してきている。GUI(グラフィカルユーザインターフェース)は一般的になり、結果として、通常はユーザがより対話しやすいユーザインターフェースとなっている。メニュー、ツールバー、ボタン、リンク、およびその他もろもろの異なる方法でユーザにコマンドオプションを提示することができるようにする多くの異なるプレゼンテーションモデルをGUIで、使うことができる。
このようなGUIを設計するときに直面する1つの問題は、GUIで使用することができる、異なるプレゼンテーションモデルである。通常、コマンドの提供者は、コマンドが含まれることになるGUIによってサポートされる、異なるプレゼンテーションモデルごとに、別々の記述およびインターフェースを書かなければならない。これは、コマンドの提供者側での追加および重複の作業という結果になる。さらなる問題は、提供者がコマンドを書いた後に続いて、新しいプレゼンテーションモデルが開発される状況となり得る。つまり、コマンドを書く提供者は新しいプレゼンテーションモデルについて知らないので、通常は、新しいプレゼンテーションモデルをサポートするコマンドを書くことができない。
したがって、これらの問題を軽減する、コマンドを実装するための方法を有することは有益であろう。
汎用ユーザインターフェースコマンドアーキテクチャが本明細書で説明される。
ある態様によって、アプリケーションがコンピューティングデバイス上のプレゼンテーションのためのコマンドをホストできるようにする、汎用アーキテクチャが説明される。このアーキテクチャは、コマンドホストおよびコマンドブローカを含む。コマンドホストは、複数のユーザインターフェースコマンドが提示されうるワークスペースを提供する。コマンドブローカは、コマンドのための複数のサポートされたモードを識別し、さらにコマンドホストと折衝して、複数のサポートされたモードのうちどれがそのコマンドのために使用されるべきかを決定する。
ある態様によって、アプリケーションがコマンドをホストできるようにするために使用することができる、API(アプリケーションプログラミングインターフェース)が説明される。このAPIは、例えば、モード列挙をエクスポーズするコマンドブローカコンポーネントを含む。コマンドホストなどのリクエスタがモード列挙を呼び出すことに応答して、コマンドブローカコンポーネントは、コンポーネントに関連付けられた特定のコマンドのためのコンポーネントによってサポートされた、複数の異なるプレゼンテーションモデルのリストを返す。
ある態様によって、コマンドがアプリケーションによって活動化のために登録されることが可能である方法を説明する、活動化メカニズムが論じられる。この活動化メカニズムは、1つまたは複数の引数を含むオブジェクト定義を識別することによって、コマンドブローカを作成する。非リテラル引数である1つまたは複数の各引数について、引数に基づいた1つまたは複数の追加のオブジェクト定義が再帰的に識別される。コマンドブローカは次いで、識別されたオブジェクト定義によって定義されたオブジェクトとして作成される。
同じ番号は、類似のコンポーネントおよび/または機能を参照するために、本書の全体で使用される。
汎用ユーザインターフェースコマンドアーキテクチャが本明細書で説明される。ある態様によって、アプリケーションがコンピューティングデバイス上のプレゼンテーションのためのコマンドをホストできるようにする、汎用アーキテクチャが説明される。このコマンドは、アプリケーションと同じ設計者または作成者によって、あるいは他の第三者によって(例えば、サードパーティの開発者によって)、書くことができる。追加で、アプリケーションがコマンドをホストできるようにするために使用することができる、API(アプリケーションプログラミングインターフェース)が説明される。さらに、コマンドをアプリケーションによって活動化のために登録できる方法を説明する、活動化メカニズムが論じられる。
汎用UIコマンドアーキテクチャ
図1は、汎用ユーザインターフェースコマンドアーキテクチャが使用される、コンピューティングデバイス102の一例を示す。コンピューティングデバイス102は、複数(x)のアプリケーション104を含み、それぞれが汎用UIコマンドアーキテクチャ106をサポートする。以下でより詳細に論じる通り、UIコマンドアーキテクチャ106は、アプリケーション104が異なるコマンドを汎用的な方法でホストできるようにする。これらのコマンドは、アプリケーション104を作成した者と同じ者(または複数の者)によって、あるいは、異なる者によって作成することができる。
図1は、汎用ユーザインターフェースコマンドアーキテクチャが使用される、コンピューティングデバイス102の一例を示す。コンピューティングデバイス102は、複数(x)のアプリケーション104を含み、それぞれが汎用UIコマンドアーキテクチャ106をサポートする。以下でより詳細に論じる通り、UIコマンドアーキテクチャ106は、アプリケーション104が異なるコマンドを汎用的な方法でホストできるようにする。これらのコマンドは、アプリケーション104を作成した者と同じ者(または複数の者)によって、あるいは、異なる者によって作成することができる。
コンピューティングデバイス102は、ユーザインターフェースを提示するプロセッサまたはコントローラを有する様々な異なる任意のデバイスを表す。このようなデバイスの例には、デスクトップコンピュータ、サーバコンピュータ、ノートブックコンピュータ、ハンドヘルドまたはポータブルコンピュータ、エンターテインメントデバイス、ゲームコンソール、携帯情報端末(PDA)、携帯電話などを含む。アプリケーション104は様々な任意のアプリケーションを表す。このようなアプリケーションの例には、オペレーティングシステム、娯楽プログラム、ユーティリティプログラム、教育プログラム、生産性プログラム、金融プログラムなどを含む。
図2は、汎用UIコマンドアーキテクチャ106の一例をさらに詳細に示す。コマンドアーキテクチャ106は、コマンドホスト130および複数(y)のコマンドブローカ132を含む。任意の数のコマンドブローカ132をコマンドアーキテクチャ106に含めることができる。加えて、複数のコマンドブローカ132が図2に示されるが、代わりに単一のコマンドブローカのみをコマンドアーキテクチャ106に含んでよい。
アーキテクチャ106は、UIを介したユーザ選択のために表示されるコマンドであるUIコマンドと共に使用するために設計されるので、コマンドアーキテクチャ106はUIコマンドアーキテクチャと呼ばれる。コマンドアーキテクチャ106は、コマンドが、ユーザインターフェースを介したユーザへの表示、およびユーザによる選択のために、作成または書かかれることを可能にする。任意のタイプのコマンドは、リソース(例えば、ファイル、ストレージデバイス、入力デバイス、出力デバイスなど)にアクセスするためのコマンド、コンテンツをユーザに表示するためのコマンド(例えば、オーディオファイルまたはオーディオ/ビデオファイルの再生、データのハードコピーのプリントアウトなど)、ユーザを特定のロケーション(例えば、ファイル、ネットワークロケーション、コントロールパネルなど)へナビゲートできるようにするためのコマンドなどのコマンドアーキテクチャ106によってサポートできる。
コマンドホスト130は、コマンドを表示のために配置することができるシェルまたはワークスペースを提供する任意のアプリケーション(図1のアプリケーション104など)の少なくとも一部である。コマンドホストは単一のこのようなシェルまたはワークスペースを提供することができ、複数の異なるコマンドホストは同時に異なるシェルまたはワークスペースを提供することができる。このようなワークスペースの例には、ウィンドウまたはディスプレイ、音響リストなどの他の部分を含む。
コマンドホスト130は、コマンドの提示のための、1つまたは複数のモードをサポートし、これは、1つまたは複数のプレゼンテーションモデルと呼ばれる、これらの異なるモードまたはプレゼンテーションモデルは、ユーザインターフェースを介してコマンドをユーザに表示することができる、異なる方法を指す。モードまたはプレゼンテーションモデルの例には、メニュー、メニューリスト、コンテキストメニュー、タスクバー、ボタン、リンク(例えば、ハイパーリンク)などが含まれる。これらの異なるモードまたはプレゼンテーションモデルは通常、GUI内などのコマンドを視覚的に表示することを含むが、他の表示方法もまた使用される場合がある(例えば、コマンドを音響的に提示すること)。
各コマンドブローカ132は、コマンドホスト130とコマンドのための最終ハンドラ(コマンドプロバイダと呼ばれ、以下でより詳細に論じる)の間にある中間物である。各コマンドブローカ132は特定のコマンドに関連付けられる。コマンドブローカ132は、コマンドによってサポートされるモードを列挙し、どのモードがそのコマンドのために使用されるかについて、コマンドホスト130と折衝する。特定のモードがコマンドブローカ132によってサポートされる場合、コマンドブローカ132は、コマンドホスト130に、そのモードに関連付けられた特定のコマンドプロバイダを生成し、与えることができる。この折衝はインターフェース134を介して実行される。ある実施形態では、API(アプリケーションプログラミングインターフェース)は、各コマンドブローカ132によってエクスポーズされる。折衝プロセスの間、コマンドホスト130によって、このAPIを呼び出すことができる。このようなAPIの一例を以下でより詳細に論じる。
UIコマンドアーキテクチャ106は、この折衝プロセス、および単一のコマンドブローカがその関連付けられたコマンドをサポートできる様々なモードのために、汎用と呼ばれる。同じコマンドブローカは、コマンドが様々な異なるプレゼンテーションモデルにおいて表示されることを可能にするために使用することができ、したがって、汎用として見なすことができる。
コマンドホスト130は、コマンドホストの実行が開始するたびに、コマンドブローカ132と折衝する。異なるコマンドブローカ132をコマンドホスト130にアクセス可能とすることができ、それらに関連付けられたコマンドは、コマンドホスト130によってUIを介して表示できるようになる。コマンドブローカ132をコマンドホスト130にアクセス可能にすることができる1つの方法は、コマンドブローカ活動化メカニズムを経ることであり、以下でより詳細に論じる。コマンドホスト130はコマンドブローカ132と、様々な時点で折衝する場合があり、これは、選択において変化がある時(例えば、UI内のどのアイテムが選択されるか)、および、UIのタイプにおける変化(例えば、視覚的から音響的UIへの変化)、UIのフォーマットにおける変化(例えば、ウィンドウがサイズ変更される)、UIのコンテンツにおける変化(例えば、異なるアプリケーションが、オペレーティングシステムであるコマンドホストから実行される)などの、コマンドのコンテキストにおいて変化がある時などである。
この折衝の一例として、アプリケーションが、メニューおよびボタンモードの両方を有するユーザインターフェースを表示することができると仮定する。この例において、コマンドホスト130はコマンドブローカ132と折衝して、2つのモード(メニューおよび/またはボタン)のどちらを使用するべきかを決定するであろう。コマンドブローカ132は、プリンタを使用して選択されたデータのハードコピーを作成する、プリントコマンドに関連付けられると仮定する。さらに、コマンドブローカ132は、ボタンモードならびにリストモードをサポートすると仮定する。コマンドホスト130はコマンドブローカ132と折衝し、ホスト130およびブローカ132がサポートする唯一のモードはボタンモードであると決定するであろう(ブローカ132はメニューモードをサポートせず、ホスト130はリストモードをサポートしない)。したがって、この折衝はボタンモードの選択という結果となる。
ある実施形態では、コマンドホスト130は、コマンドブローカ132によってサポートされるモードよりも追加のモードをサポートしてもよいことに留意されたい。加えて、コマンドホスト130は、あるモードから別のモードにコマンドを変換することができる、プログラムまたは他のリソースへのアクセスを有してもよい。前例に続いて、コマンドホスト130は、ボタンモードにおけるコマンドのための情報を、メニューモードにおけるコマンドに使用可となるように変換することができる、プログラムへのアクセスを有してもよい。したがって、折衝処理の間に、コマンドホスト130はボタンモードを選択し、次いで、ボタンモードにおけるプリントコマンドに関して受信した情報を、メニューモードへ変換することができる。このような処理は、例えば、コマンドブローカ132の作成の後に生成され、コマンドブローカ132がその知識を有していなかったモードで、コマンドブローカ132が使用できるようにする。
また、コマンドブローカ132はそのモードを異なる順序で列挙できることにも留意されたい。ある実施形態において、コマンドブローカ132はそのモードを優先順(例えば、コマンドブローカ132またはコマンドブローカ132の作成者が好むであろう、モードがコマンドホスト130によって選択される順序)で列挙する。しかし、ある実施において、コマンドホスト130は、コマンドブローカ132によって優先された順序を無視するように選択することができる。ランダムな順序、アルファベット順などの他の順序付けを代わりに使用できることになる。
コマンドブローカ132はまた、異なるグループのコマンドを列挙することもできる。これらのグループは、コマンドホスト130への、特定のコマンドが互いの近くに位置するべきであるという指示である。通常、ある実施形態において、コマンドホスト130は、これらの指示によって提供されたガイダンスに従うことを必要とされないが、しばしば、このガイダンスに従うように試みる。
ある実施形態において、コマンドブローカ132はまた、1つまたは複数の他のコマンドブローカのためのコンテナかもしれない。例えば、コマンドブローカは、メニューアイテムであるプレゼンテーションモードをサポートしてもよく、この場合コマンドはUI内で単一のメニューアイテムとして表示されることになる。このコマンドブローカは、メニューリストであるプレゼンテーションモードをサポートしてもよく、この場合コマンドブローカは、各々がUI内でメニューアイテムのリストにおいて表示される複数の追加のコマンドブローカのためのコンテナである。
図3は、汎用UIコマンドアーキテクチャ106の例をさらに詳細に示す。コマンドホスト130は、上述のようなコマンドブローカ132とモードを折衝する。加えて、コマンドコンテキスト140およびコマンドプロバイダ142が図3で示される。ある実施形態において、コマンドホスト130、コマンドブローカ132、コマンドコンテキスト140およびコマンドプロバイダ142の各々は、互いに通信的に連結し、互いに通信できるようにする。ある実施態様において、コマンドホスト130、コマンドブローカ132、コマンドコンテキスト140およびコマンドプロバイダ142の各々は、オブジェクトであり、他のメソッド、列挙、属性などを呼び出すことができる。
コマンドプロバイダ142は、特定のコマンドのための最終ハンドラである。コマンドプロバイダ142は、コマンドが呼び出されるときに従う様々なアクション(例えば、プリントコマンドなど、コマンドのユーザ選択に応答して、呼び出されたアクション)を制御する。コマンドプロバイダ142は通常、特定のコマンドが呼び出されるたびに実行される命令を含む。コマンドプロバイダ142は、コマンドホスト130とのモード折衝の完了で、コマンドブローカ132によってインスタンス化されるオブジェクトである。異なるコマンドプロバイダは、コマンドブローカ132によってサポートされる各モードに関連付けられる。したがって、モード折衝が特定のモードの結果となるとき、コマンドブローカ132は、その特定のモードのためのオブジェクトをインスタンス化する。インスタンス化されたオブジェクトもまたコマンドホスト130へ渡され、コマンドホスト130がコマンドプロバイダ142と対話できるようにする。
ある状況において、コマンドホスト130は、複数のプレゼンテーションモデルまたはモードについて、コマンドブローカ132と折衝してもよいことに留意されたい。このような状況では、コマンドブローカ132は、複数のコマンドプロバイダ142をインスタンス化し、これは複数のプレゼンテーションモデルまたはモードの各々につき1つであり、このようなインスタンス化されたコマンドプロバイダ142の各々をコマンドホスト130に渡す。
代替実施形態において、コマンドブローカ132は、1つまたは複数のコマンドプロバイダ142と結合されるかもしれない。このような実施形態において、別個のコマンドプロバイダ142はインスタンス化する必要はない。むしろ、コマンドホスト130はコマンドブローカ132とモードを折衝した後、コマンドホスト130は、コマンドプロバイダ142よりむしろ、コマンドのための最終ハンドラとしてのコマンドホスト130と対話することができる。
コマンドコンテキスト140は、コマンドホスト130によって供給され、それによりコマンドブローカ132によってアクセスすることができる、コンテキスト情報のリストである。コマンドコンテキスト140に含まれるコンテキスト情報は変更できる。コンテキスト情報は、例えば、ユーザインターフェースを説明する情報、コマンドホスト130を説明する情報、何が現在表示されているか、および/またはどのようにそれがユーザインターフェース内で表示されているかを説明する情報、利用可能なリソースについての情報などを指す。コンテキスト情報の具体的な例は、UI内で表示されている何のアイテム(もしあれば)が現在選択されているか、コマンドが位置づけられるエリアの大きさ(例えば、ピクセル単位)、特定のアイテムまたは機能が現在UI内で表示されているか否か、特定のリソースがコンピューティングデバイス上で利用可能か否か、他の何のコンポーネントにコンピューティングデバイスが連結されているか(例えば、プリンタが現在、コンピューティングデバイスに連結されているか否か)などを含む。異なるコマンドブローカ132は、異なるコンテキスト情報に関心があるかもしれず、いくつかのコマンドブローカ132は、いかなるコンテキスト情報にも関心がないかもしれない。特定のコマンドブローカ132が特定のコンテキスト情報に気づくことを望むとき、特定のコマンドブローカ132は、所望のコンテキスト情報を取得するために、コマンドコンテキスト140と対話する。
また、コマンドブローカ132によってサポートされたプレゼンテーションモデルは、コマンドコンテキスト140に基づいて変化してもよいことにも留意されたい。例えば、コマンドブローカ132は、特定のコンポーネント(プリンタ、パーソナルオーディオプレイヤ、スピーカなど)がコンピューティングデバイスに連結される状況で、ある特定のプレゼンテーションモデルをサポートするかもしれないが、特定のコンポーネントがコンピューティングデバイスに連結されない状況では、その特定のプレゼンテーションモデルをサポートしないかもしれない。別の例の方法によって、コマンドブローカ132は、コマンドホスト130によって提供されたワークスペースのサイズに基づいて、異なるプレゼンテーションモデルをサポートしてもよい。
汎用UIコマンドアーキテクチャ106は、コマンドの作成を容易にする。この容易化が達成される1つの方法は、コマンドブローカ132を使用することによる。作成者は、複数の異なるプレゼンテーションモデルに、複数の異なる回数、同じコマンドを登録することを必要とするのではなく、そのコマンドのためのすべてのハンドラは、同じコマンドブローカ132を介してアクセスすることができる。加えて、そのコマンドのために表示されるべき表示名またはアイコンなどの共通機能性、またはユーザがそのコマンドを選択するときに取られるべき起動アクションは、異なるモードで共有することができる。この共有は、例えば、各コマンドプロバイダ142が、コマンドプロバイダ142に関連付けられたコマンドがユーザによって選択されるときに実行される命令セットを含む同じオブジェクトを参照することによって達成される。あるいは、いくつかの共通機能性は、コマンドホスト130が、関連付けられたコマンドプロバイダ142において実装されるか、またはこれを通じてアクセスされるのではなく、コマンドプロバイダ132によって、利用可能とできる。
図4は、汎用UIコマンドアーキテクチャ106を使用してコマンドを表示するための処理例180を示すフロー図である。処理180はソフトウェアにおいて実行されるが、代替として処理180の態様は、ファームウェア、ハードウェア、またはファームウェア、ハードウェアおよび/またはソフトウェアの組合せにおいて実行してもよい。
最初に、コマンドホストおよびコマンドブローカはモードを折衝する(動作182)。ある実施形態では、この折衝は、コマンドブローカが、コマンドホストをサポートするモードを識別すること、および、コマンドホストが、これらのモードを、コマンドホストがサポートするモードと比較すること、そして次いで、コマンドホストが、コマンドホストおよびコマンドブローカの両方がサポートするモードの1つを選択することによって実行される。あるいは、この折衝は、他の実施形態では他の形態を取るかもしれない。例えば、コマンドホストは、それがコマンドブローカをサポートするモードを識別し、コマンドブローカは、これらのモードを、コマンドブローカがサポートするモードと比較し、そして次いで、コマンドブローカは、コマンドホストおよびコマンドブローカの両方がサポートするモードのうちの1つを選択するかもしれない。別の例として、コマンドホストは、サポートするモードのリストを検討し、このような各モードのために、コマンドブローカに、コマンドブローカがそのモードをサポートするか否かについて問い合わせてもよく、コマンドホストが、サポートし、コマンドブローカによってもサポートされるモードのうちの1つを識別するとすぐに、コマンドホストは、コマンドブローカへの問い合わせを停止することができる。
モードが折衝されると、コマンドブローカは、折衝されたモードに関連付けられたコマンドプロバイダを、インスタンス化またはそうでない場合は生成する(動作184)。ある実施態様において、コマンドプロバイダは、コマンドホストがコマンドブローカによってエクスポーズされたGetProviderメソッドを呼び出すことによって、インスタンス化される。GetProviderメソッドを、以下でさらに詳細に論じる。
コマンドホストは次いで、コマンドをユーザインターフェースに、動作184でインスタンス化またはそうでない場合は生成されたコマンドプロバイダに基づいて配置する(動作186)。このコマンドの配置は、ユーザインターフェース内での、アイコンの位置決め、名前、および/またはコマンドの他の識別子を指す。上述のように、折衝されたモードは、コマンドの表示のためにコマンドホストによって実際に使用されたモードでないかもしれない(むしろ、コマンドホストは、折衝されたモードのためにコマンドプロバイダから取得した情報を使用して、異なるモードを使用してコマンドを表示するかもしれない。)。
次いで、コマンドホストはコマンドプロバイダと対話する(動作188)。この対話は、例えば、コマンドのユーザインターフェースを表示すること、ならびに、コマンドの振る舞いを適切に呼び出すこと(例えば、ユーザがコマンドを呼び出すイベント)が含まれる。
API実装例
以下は、前述の汎用UIコマンドアーキテクチャ106を実装する、APIの一例である。
ProviderCategoryおよびContextObjectDescriptionは表1に挙げられる。ContextObjectDescriptionは、CommandContextオブジェクトによって保持され、ホストによって提供された、コンテキストデータの個々の部分のための名前の役割をする。ProviderCategoryは、前述のコンテキストデータの揮発性を決定するために使用される。揮発性コンテキスト値は、何らかのホストコンテキスト値が変更されると、コマンドコンテキストを離れる。不揮発性値はコンテキスト内にとどまる。
以下は、前述の汎用UIコマンドアーキテクチャ106を実装する、APIの一例である。
ProviderCategoryおよびContextObjectDescriptionは表1に挙げられる。ContextObjectDescriptionは、CommandContextオブジェクトによって保持され、ホストによって提供された、コンテキストデータの個々の部分のための名前の役割をする。ProviderCategoryは、前述のコンテキストデータの揮発性を決定するために使用される。揮発性コンテキスト値は、何らかのホストコンテキスト値が変更されると、コマンドコンテキストを離れる。不揮発性値はコンテキスト内にとどまる。
ContextObjectsクラスが表2に挙げられる。ある実施形態において、予め定義されたContextObjectDescriptionsのセットは、ContextObjects静的クラス内で保たれる。CommandContextはまた、この予め定義されたリストの一部ではない、ContextObjectDescriptionsの拡張可能セットを保持することもできる。
CommandContextは表3に挙げられる。CommandContextは、ContextObjectDescriptionsをオブジェクト値にマップするインデクサである。CommandContextはまた、コンテキストが変化したときにファイアするイベントを有する。CommandContextクラスは、図3のコマンドコンテキスト140によってエクスポーズされる属性、メソッド、および列挙を含み、これらは、コマンドホスト130および/またはコマンドブローカ132によって呼び出すことができる。
ModeDescriptionが表4に挙げられる。ModeDescriptionは、モードおよび管理された型を命名する文字列である。管理された型は、この例において、CommandBroker.GetProviderメソッドを介して、ブローカがコマンドプロバイダへ返す、要件を指す。
StandardModesクラスが表5に挙げられる。ある実施形態において、「標準」モードのリストは、コマンドブローカが実装するのに利用可能である。これらの標準モードに加えて、モードのセットは拡張可能で、追加のモードを含む。
CommandBrokerクラスが表6に挙げられる。CommandBrokerクラスは、コマンドブローカ132によってエクスポーズされる属性、メソッド、および列挙を含み、これらを、図3のコマンドホスト130によって呼び出すことができる。
コマンドプロバイダインターフェースの一例が表7に挙げられる。これは、図3のコマンドプロバイダ142の例のためのインターフェースである。挙げられた例は、「タスクボタン」モードをサポートするコマンドのためのインターフェースである、ITaskButtonProviderである。ITaskButtonProviderは、コマンドホストによってアクセスおよび使用することができる、2つの文字列(ShortTitleおよびLongTitle)を含む。ImageSourceは、このタスクボタンプロバイダに関連付けられたコマンドがユーザによって選択されるときに実行される命令セットである。このコマンドが選択されるとき、この命令のセットは、コマンドホストがITaskButtonProvider.Invoke()を呼び出すことによって、呼び出される。
IProviderChangesは、コマンドプロバイダが変化通知をコマンドホストに与えるために実装することができるインターフェースである。ProviderChangeHandlerは、IProviderChanges内からファイアされるProviderChangedイベントの型を宣言する、管理された委任(Delegate)である。コマンドホストはProviderChangedイベントを使用して、それがいつ、コマンドプロバイダからある状態を再問い合わせすべきかを伝えることができる。
例えば、ITaskButtonProviderの「ShortTitle」が変化する場合(例えば、選択が変化したために。)、コマンドプロバイダはコマンドホストに、ProviderChangedイベントを介して、その状態が変化したことを、通知することができる。この例において、UIと対話することによってユーザが選択を変更することに応答して、コマンドホストは、コマンドコンテキスト内部で「選択された」状態を変更し、これによりコマンドコンテキストが、コマンドプロバイダに変化通知をファイアすることを引き起こす。コマンドプロバイダは、このコンテキスト変化イベントの結果として、そのShortTitleを変更することを望むであろうことを決定し、そのため、コマンドプロバイダは、コマンドホストがきいている(Listen)、ProviderChangedイベントをファイアする。コマンドホストは、ProviderChangeHandler型のそれが有するメソッドを介して、ProviderChangedイベントを受信する。コマンドホストは、このイベントの結果として、そのShortText、LongText、IsEnabledなどをコマンドプロバイダに再問い合わせし、その新しい状態が与えられたコマンドを再表示するのに十分な情報を取得する。コマンドホストはこの新しい情報を使用して、このコマンドに関連付けられたUIをアップデートする。
加えて、「ヘルパー」クラスを任意で含めることができ、このクラスは、本明細書で論じる汎用UIコマンドアーキテクチャで使用されるように意図されたコマンドを書くための標準ロジックを実装する。ヘルパークラスは、単一のクラスにおいて上述のインターフェースの様々なものを含んで、本明細書で論じる汎用UIコマンドアーキテクチャを使用したコマンドの作成を容易にする。コマンドブローカ作成者は次いで、その機能性の任意の所望の部分をも、このヘルパークラスから派生およびオーバーライドすることができる。表8は、ヘルパークラスExplorerCommandの例を挙げ、このクラスは例えば、異なるバージョンのWindows(登録商標)オペレーティングシステムのエクスプローラと共に使用することができる。
コマンドブローカ活動化メカニズム
図2および3のコマンドブローカ132を、様々な従来の方法のいずれかで生成することができる。ある実施形態において、アクティベータを採用する特定のコマンドブローカ活動化メカニズムは、後述のように、コマンドブローカ132を生成するために使用される。この作成は、インスタンス化または構造化とも呼ばれる。
図2および3のコマンドブローカ132を、様々な従来の方法のいずれかで生成することができる。ある実施形態において、アクティベータを採用する特定のコマンドブローカ活動化メカニズムは、後述のように、コマンドブローカ132を生成するために使用される。この作成は、インスタンス化または構造化とも呼ばれる。
図5は、コマンドブローカを生成するためのコンポーネントの例を示すブロック図である。図5はアクティベータ202および定義ソース204を示す。定義ソース202は、コマンドブローカ定義204を含み、特定のコマンドブローカ132がどのように実装されるべきかを定義する。アクティベータ202は、コマンドブローカ定義204を取り出すために、定義ソース202にアクセスし、次いで、定義204で定義されたようにコマンドブローカ132を生成する。
定義ソース202は、任意の様々な異なるソースであることができる。例えば、定義ソース202は、Windows(登録商標)オペレーティングシステムのレジストリ、データベース、ファイル(例えば、XML(拡張可能マークアップ言語)ファイルまたはいくつかの他のフォーマット)などであってよい。
コマンドブローカ定義204は、様々な異なる形式を取ることもできる。ある実施形態において、コマンドブローカ定義204は、それらのコンストラクタ引数に関して、1つまたは複数のオブジェクトを記述する。これらのオブジェクト記述(本明細書で鍵名とも呼ばれる)は、コマンドブローカ132を生成するためにインスタンス化またはそうでない場合は生成されることになるオブジェクトを記述する。各オブジェクト記述は、ゼロ以上のコンストラクタ引数を有することができる。コンストラクタ引数は、リテラル(例えば、文字列、数、XMLドキュメント、またはバイトアレイ)、または非リテラル(例えば、別のオブジェクト記述)であることができる。オブジェクト記述が1つまたは複数の非リテラル引数を有する状況において、これらの各非リテラル引数もまた、すべてのオブジェクトがインスタンス化またはそうでない場合は生成されるまで、再帰的にインスタンス化またはそうでない場合は生成される。
図6は、オブジェクト定義220のためのデータ構造の例を示す。1つまたは複数のこのようなオブジェクト定義は共に、図5のコマンドブローカ定義204を構成する。したがって、コマンドブローカのデータ構造の例は、1つまたは複数のオブジェクト定義200データ構造の集合である。オブジェクト定義220は、アセンブリフィールドまたは部分222、型フィールドまたは部分224、引数フィールドまたは部分226、およびリテラル定義フィールドまたは部分228を含む。これらの部分222、224、226および228の各々は、後述のように、定義されるオブジェクトの異なる態様を表現する様々なデータを格納する。
アセンブリ部分222は、そこからこのコマンドブローカをインスタンス化することができるアセンブリを示す。ある実施態様において、アセンブリ部分222は、インスタンス化されるべきコマンドブローカのコードを含む、管理されたアセンブリ(dll)の「ストロング名」を指示する。ストロング名は、名前、バージョン、公開鍵トークン、および国/地域別環境(culture)によって、アセンブリを(例えば、ディスク上で)一意に識別する名前を指す。
型部分224は、オブジェクト定義220によって定義されたオブジェクトの識別子を含む。通常、この識別子は英数字文字列であるが、他の文字または記号が代わりに識別子として使用できる。異なるアセンブリ内の異なるオブジェクト定義は、それらの型部分224内の各々に同じ識別子を有することができる。型部分224内の識別子は、アセンブリ部分222内のアセンブリと組み合わせて、オブジェクトが一意に識別できるようにする。
引数部分226は、オブジェクト定義220によって定義されたオブジェクトのための引数を識別するために含まれる。特定のオブジェクトはいかなる引数をも有さないかもしれず、この場合、引数部分226は含まれる必要はない(または、含まれてもよいが、空あるいは引数がないという指示を含むかもしれない)。引数は、上述のように、リテラルまたは非リテラルであってよい。各非リテラル引数のために、その非リテラル引数であるオブジェクトを定義する、別のオブジェクト定義220がある。各リテラル引数のために、そのリテラルを定義する、リテラル定義フィールド228内の定義がある(例えば、特定の文字列、特定の数、特定のXMLドキュメント、または特定のバイトアレイを識別する)。オブジェクト定義220によって定義されたオブジェクトがいかなる引数も有さない場合、リテラル定義部分226は含まれる必要はない。(または、含まれてもよいが空、あるいはリテラルがないという指示を含むかもしれない)。
図7は、コマンドブローカを生成するためのプロセス240の例を示す図である。プロセス240は、図5のアクティベータ200によって実装され、通常はソフトウェアにおいて実行される(が、プロセス240の少なくとも一部は、ハードウェア、ファームウェア、または、ハードウェア、ファームウェアおよびソフトウェアの組合せにおいて、代わりに実行できる)。
最初に、トップレベルオブジェクト定義が識別される(動作242)。識別されたオブジェクト定義が次いでアクセスされ(動作244)、識別されたオブジェクト定義の任意の引数が識別される(動作246)。次いで、非リテラルである動作246において識別された、任意の引数があるか否かについてのチェックがなされる(動作248)。このような引数がない(例えば、引数がないか、またはすべての引数がリテラルである)場合、プロセス240は、識別されたオブジェクト定義の解析を終了する(動作250)。しかし、非リテラルである少なくとも1つの引数がある場合、各非リテラル引数は識別される(動作252)。これらの各非リテラル引数は別のオブジェクト定義である。プロセス240は次いで、動作244へ戻り、識別された各非リテラル引数を解析する。このように、プロセス240は、すべてのオブジェクト定義がリテラルに関して定義される(または、引数がなくなる)まで、コマンドブローカ定義内の各オブジェクト定義の解析を再帰的に継続する。すべてのオブジェクト定義がリテラルに関して定義された(または、引数がなくなった)後、これらのオブジェクト定義によって定義された個々のオブジェクト、および、したがってコマンドブローカは、各オブジェクトのためのコンストラクタを呼び出すことによってインスタンス化される(動作254)。
このように定義された各オブジェクトはその後、オブジェクト定義中を介して逆上して動くことによって、インスタンス化またはそうでない場合は生成することができる。例えば、アクティベータ200は、リテラルのみに関して定義されたオブジェクト(または、引数のないオブジェクト)を、インスタンス化またはそうでない場合は生成することができ、次いで、これらのオブジェクトを使用して、ちょうどインスタンス化またはそうでない場合は生成などされたこれらのオブジェクトに関して定義される他のオブジェクトを、インスタンス化またはそうでない場合は生成する。トップレベルオブジェクト定義がインスタンス化されていたとき、コマンドブローカはインスタンス化されている。
「FooBroker」と命名されたコマンドブローカのためのコマンド定義の例を表9に挙げる。
表9の例を見るとわかるように、トップレベルオブジェクト定義(または、鍵名)\Testは、アセンブリ部分、型部分、引数部分およびリテラル部分により定義される(タイトル行として識別される)。これらの各部分は、表9のトップレベルオブジェクト定義の例において、別々の行である。アセンブリ部分は、そこからこのコマンドブローカをインスタンス化するべきアセンブリ(FooAssembly)を示す。型部分は、このオブジェクト定義によって定義されたオブジェクト型(FooBroker)を示す。引数部分は、このオブジェクト定義のための2つの引数(titleおよびbar)を識別する。titleは、リテラル定義部分で定義される文字列であり、「Hello, World!」として、\Testオブジェクト定義のタイトル行である。bar引数は、次のオブジェクト定義で定義される別のオブジェクトである。
オブジェクトのインスタンス化の間、図5のアクティベータ200は、別のオブジェクト定義を識別するために、定義ソース202を検索し、このオブジェクト定義はトップレベルオブジェクト定義\Testの下であり、またbarオブジェクトのためのオブジェクト定義でもある。このオブジェクト定義は\Test\bar鍵名である。
\Test\bar鍵名もまた、アセンブリ部分、型部分、引数部分およびタイトル部分で定義される(各々は表9内で1行である)。アセンブリ部分は、そこからこのコマンドブローカをインスタンス化する鍵アセンブリ(FooAssembly)を示す。これは、トップレベル鍵名\Testで識別されたものと同じコマンドホストである。型部分は、このオブジェクト定義によって定義されたオブジェクト型(BarObject)を示す。引数部分は、このオブジェクト定義のための2つの引数(countおよびsnoo)を識別する。countは、リテラル定義部分で定義される整数であり、16進数値「38」として、\Test\barオブジェクト定義のカウント行である。snoo引数は、次のオブジェクト定義で定義される別のオブジェクトである。
オブジェクトのインスタンス化の間、図5のアクティベータ200は、別のオブジェクト定義を識別するために、定義ソース202を検索し、このオブジェクト定義は\Test\barオブジェクト定義の下であり、またsnooオブジェクトのためのオブジェクト定義でもある。このオブジェクト定義は\Test\bar\snoo鍵名である。
\Test\bar\snoo鍵名もまた、アセンブリ部分および型部分により定義される。snooオブジェクトのためのオブジェクト定義は引数を有しておらず、そのため、どの引数部分またはリテラル定義部分も、オブジェクト定義に含まれない。アセンブリ部分は、そこからこのコマンドブローカをインスタンス化する鍵アセンブリ(FooAssembly)を示す。これは、トップレベル鍵名\Testおよび\Test\bar鍵名で識別されたものと同じコマンドホストである。型部分は、このオブジェクト定義によって定義されたオブジェクト型(SnooObject)を示す。
表10は、本明細書で論じるコマンドブローカ活動化をサポートする、APIの例を挙げる。上述の各オブジェクト定義または鍵名は、表10で挙げられたIActivationDefinitionインターフェースによってカプセル化される。アセンブリフィールドおよびタイプフィールドは共に、IActivationDefinitionインターフェースの属性である。各引数およびリテラル定義は、存在するときは、IDefinitionElementである。
コンピュータ環境の実施例
図8は、本明細書で説明される技術を実施するために使用できる、汎用コンピュータ環境300を示す。コンピュータ環境300は、コンピュータ環境の一例でしかなく、コンピュータおよびネットワークアーキテクチャの使用または機能性の範囲についてのいかなる限定を指示することを意図しない。コンピュータ環境300はまた、例示的コンピュータ環境300において示されたコンポーネントのいずれか1つまたは組合せに関するいかなる依存性または要件をも有するとして解釈されるべきでない。
図8は、本明細書で説明される技術を実施するために使用できる、汎用コンピュータ環境300を示す。コンピュータ環境300は、コンピュータ環境の一例でしかなく、コンピュータおよびネットワークアーキテクチャの使用または機能性の範囲についてのいかなる限定を指示することを意図しない。コンピュータ環境300はまた、例示的コンピュータ環境300において示されたコンポーネントのいずれか1つまたは組合せに関するいかなる依存性または要件をも有するとして解釈されるべきでない。
コンピュータ環境300は、コンピュータ302の形式における汎用コンピューティングデバイスを含む。コンピュータ302を、例えば、図1のコンピューティングデバイス102であることができる。コンピュータ302は、マルチメディアプレゼンテーションのソースであるエンコーダデバイスであることもできる。コンピュータ302のコンポーネントは、1つまたは複数のプロセッサまたは処理装置304、システムメモリ306、およびプロセッサ304を含む様々なシステムコンポーネントをシステムメモリ306に結合するシステムバス308を含むことができるが、これに限られない。
システムバス308は、いくつかのタイプのバス構造のいずれかの1つまたは複数を提示し、これらのバス構造には、メモリバスまたはメモリコントローラ、周辺バス、AGP(アクセラレーテッドグラフィクスポート)、およびプロセッサまたはローカルバスを含み、様々なバスアーキテクチャのいずれかを使用する。例として、このようなアーキテクチャは、ISA(業界標準アーキテクチャ)バス、MCA(マイクロチャネルアーキテクチャ)バス、EISA(拡張ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、および、Mezzanineバスとしても知られるPCI(Peripheral Component Interconnects)バスを含むことができる。
コンピュータ302は通常、様々なコンピュータ可読媒体を含む。このような媒体は、コンピュータ302によってアクセス可能な、任意の利用可能な媒体であることができ、揮発性および不揮発性の媒体、リムーバブルおよび非リムーバブルの媒体を含む。
システムメモリ306は、ランダムアクセスメモリ(RAM)310などの揮発性メモリ、および/または読み取り専用メモリ(ROM)312などの不揮発性メモリの形式において、コンピュータ可読媒体を含む。起動中などのコンピュータ302内での要素間で情報の転送を助ける基本ルーチンを含む、基本入力/出力システム(BIOS)314は、ROM312に格納される。RAM310は通常、処理装置304によって即時アクセス可能および/または現在そこで操作中である、データおよび/またはプログラムモジュールを含む。
コンピュータ302は、他のリムーバブル/非リムーバブル、揮発性/不揮発性のコンピュータストレージ媒体を含むこともできる。例として、図8は、非リムーバブル、不揮発性の磁気媒体(図示せず)からの読み取りまたは書き込みを行うためのハードディスクドライブ316、リムーバブルで不揮発性の磁気ディスク320(例えば、「フロッピーディスク」)への読み取りまたは書き込みを行うための磁気ディスクドライブ318、および、CD ROM、DVD−ROM、または他の光媒体などの、リムーバブルで不揮発性の光ディスク324への読み取りおよび/または書き込みを行うための光ディスクドライブ322を示す。ハードディスクドライブ316、磁気ディスクドライブ318、および光ディスクドライブ322は、1つまたは複数のデータ媒体インターフェース326によって、それぞれシステムバス308に接続される。代わりに、ハードディスクドライブ316、磁気ディスクドライブ318、および光ディスクドライブ322は、1つまたは複数のインターフェース(図示せず)によって、システムバス308に接続することができる。
これらのディスクドライブおよびこれらの関連付けられたコンピュータ可読媒体は、コンピュータ302のための、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性ストレージを提供する。この例は、ハードディスク316、リムーバル磁気ディスク320、およびリムーバブル光ディスク324を示すが、磁気カセットもしくは他の磁気ストレージデバイス、フラッシュメモリカード、CD−ROM、DVD(Digital Versatile Disks)もしくは他の光ストレージ、RAM(ランダムアクセスメモリ)、ROM(読み取り専用メモリ)、EEPROM(Electronically Erasable and Programmable Read−Only memory)などの、コンピュータによってアクセス可能であるデータを格納することができる他のタイプのコンピュータ可読媒体も、例示的コンピューティングシステムおよび環境を実施するために利用できることを理解されたい。
任意の数のプログラムモジュールは、ハードディスク316、磁気ディスク320、光ディスク324、ROM312および/またはRAM310上に格納することができ、これらは例として、オペレーティングシステム326、1つまたは複数のアプリケーションプログラム328、他のプログラムモジュール330およびプログラムデータ332を含む。このようなオペレーティングシステム326、1つまたは複数のアプリケーションプログラム328、他のプログラムモジュール330およびプログラムデータ332の各々(または、それらのある組合せ)は、分散ファイルシステムをサポートする常駐コンポーネントの全部または一部を実装してもよい。
ユーザは、キーボード334およびポインティングデバイス336(例えば「マウス」)など、入力デバイスを介して、コマンドおよび情報をコンピュータ302へ入力することができる。他の入力デバイス338(具体的に図示せず)は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、シリアルポート、スキャナ、および/または同様の物を含んでよい。これらおよび他の入力デバイスは、システムバス308に連結される入出力インターフェース340を介して、処理装置304へ接続されるが、パラレルポート、ゲームポートまたはUSB(ユニバーサルシリアルバス)などの、他のインターフェースおよびバス構造によって接続されてもよい。
モニタ342または他のタイプの表示デバイスも、ビデオアダプタ344などのインターフェースを介して、システムバス308へ接続することができる。モニタ342に加えて、他の出力周辺デバイスは、スピーカ(図示せず)およびプリンタ346などの、入力/出力インターフェース340を介してコンピュータ302に接続できるコンポーネントを含めることができる。
コンピュータ302は、ネットワーク環境において、リモートコンピューティングデバイス348などの、1つまたは複数のリモートコンピュータへの論理接続を使用して動作することができる。例として、リモートコンピューティングデバイス348は、パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ルーター、ネットワークコンピュータ、ピアデバイスまたは他の共通ネットワークノードなどであることができる。リモートコンピューティングデバイス348は、本明細書でコンピュータ302に関連して説明された要素および特徴の多数またはすべてを含むことができる、ポータブルコンピュータとして示される。
コンピュータ302とリモートコンピュータ348の間の論理接続は、LAN(ローカルエリアネットワーク)350および一般のWAN(ワイドエリアネットワーク)352として表される。このようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネットおよびインターネットにおいて一般的である。
LANネットワーキング環境において実装されるとき、コンピュータ302は、ネットワークインターフェースまたはアダプタ354を通して、ローカルネットワーク350へ接続される。WANネットワーキング環境において実装されるとき、コンピュータ302は通常、モデム356、またはワイドネットワーク352上で通信を確立するための他の手段を含む。コンピュータ302の内部または外部にすることができるモデム356は、入力/出力インターフェース340または他の適切なメカニズムを通して、システムバス308へ接続することができる。示されたネットワーク接続は例示的で、コンピュータ302および348の間で通信リンクを確立する他の手段を採用できることを理解されたい。
コンピューティング環境300で示されたようなネットワーク環境において、コンピュータ302に関連して表されたプログラムモジュールまたはその一部は、リモートメモリストレージデバイスに格納できる。例として、リモートアプリケーションプログラム358は、リモートコンピュータ348のメモリデバイス上に備わっている。例示のため、アプリケーションプログラム、および、オペレーティングシステムなどの他の実行可能プログラムコンポーネントは、本明細書で個別ブロックとして示すが、このようなプログラムおよびコンポーネントは、様々な時間において、コンピューティングデバイス302の異なるストレージコンポーネント内に備わっていて、コンピュータのデータプロセッサによって実行されることは認識される。
様々なモジュールおよび技術は、1つまたは複数のコンピュータまたは他のデバイスによって実行されるプログラムモジュールなどの、コンピュータ実行可能命令の一般的なコンテンツにおいて、本明細書で説明されるかもしれない。一般に、プログラムモジュールには、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含み、これらは特定のタスクを実行するか、または特定の抽象データ型を実装する。通常、プログラムモジュールの機能性は、様々な実施形態において望まれるように結合または分散されてよい。
これらのモジュールおよび技術の実施態様は、コンピュータ可読媒体のいくつかの形式で格納されるか、または送信されてもよい。コンピュータ可読媒体は、コンピュータによってアクセスできる任意の利用可能な媒体であり得る。限定ではなく例として、コンピュータ可読媒体は、「コンピュータストレージ媒体」および「通信媒体」を備えてよい。
「コンピュータストレージ媒体」は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの、情報の格納のための任意の方法または技術において実装された、揮発性および不揮発性、リムーバブルおよび非リムーバブルの媒体を含む。コンピュータストレージ媒体は、RAM、ROM、EEPROM、フラッシュメモリ、もしくは他のメモリ技術、CD−ROM、DVD(Digital Versatile Disks)、もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージディスク、もしくは他の磁気ストレージデバイス、または、所望の情報を格納するために使用することができ、コンピュータによってアクセスすることができる、他の任意の媒体を含み、それに限られない。
「通信媒体」は通常、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを搬送波あるいは他のトランスポートメカニズムなどの変調データ信号に具体化する。通信媒体もまた、任意の情報配信媒体を含む。「変調データ信号」という語は、信号に情報をエンコードするような方法で、その特性の1つまたは複数を設定又は変更した信号を意味する。例として、通信媒体は、有線ネットワーク、または直接有線接続などの有線媒体、および音響、RF、赤外線、および他の無線媒体などの無線媒体を含む。上記のあらゆる組合せもまた、コンピュータ可読媒体の範囲内に含まれる。
上記の説明は、構造的特徴および/または方法論的動作に特有である言語を使用するが、添付の特許請求の範囲で定義された本発明は、説明された特定の特徴または動作に限定されないことを理解されたい。むしろ、特定の特徴および動作は、本発明の実装の例示的形式として開示される。
Claims (43)
- 複数の命令を格納した1つまたは複数のコンピュータ可読媒体であって、前記命令は、1つまたは複数のプロセッサによって実行されるとき、
ユーザインターフェースを介してコマンドを提示するのに使用されるプレゼンテーションモデルのために、コマンドブローカと折衝することと、
前記折衝されたプレゼンテーションモデルに基づいて、前記コマンドに関連付けられたコマンドプロバイダを取得することと
を前記1つまたは複数のプロセッサに、引き起こすことを特徴とするコンピュータ可読媒体。 - 前記命令は、前記コマンドが後にユーザによって呼び出されることに応答して、前記コマンドプロバイダと対話することを、前記1つまたは複数のプロセッサにさらに引き起こすことを特徴とする請求項1に記載の1つまたは複数のコンピュータ可読媒体。
- 前記命令は、前記コマンドブローカにコンテキスト情報を利用可能とさせることを、前記1つまたは複数のプロセッサにさらに引き起こすこと特徴とする請求項1に記載の1つまたは複数のコンピュータ可読媒体。
- 前記1つまたは複数のプロセッサに前記プレゼンテーションモデルを折衝させる前記命令は、
前記コマンドブローカから、前記コマンドブローカによってサポートされた1つまたは複数のプレゼンテーションモデルのリストを取得することと、
前記コマンドブローカによってサポートされた前記1つまたは複数のプレゼンテーションモデルのうち少なくとも1つを選択することと
を、前記1つまたは複数のプロセッサにさらに引き起こすことを特徴とする請求項1に記載のコンピュータ可読媒体。 - 前記1つまたは複数のプロセッサに前記プレゼンテーションモデルの折衝を引き起こす前記命令は、
前記コマンドブローカに前記選択されたプレゼンテーションモデルを通知すること
を、前記1つまたは複数のプロセッサに、さらに引き起こすことを特徴とする請求項4に記載のコンピュータ可読媒体。 - 前記コマンドブローカに前記選択されたプレゼンテーションモデルを通知することを、前記1つまたは複数のプロセッサに引き起こす前記命令は、前記コマンドブローカによってエクスポーズされたGetProviderメソッドを呼び出し、前記選択されたプレゼンテーションモデルを、前記GetProviderメソッドのパラメータとして含むことを、前記1つまたは複数のプロセッサにさらに引き起こすことを特徴とする請求項5に記載のコンピュータ可読媒体。
- 前記複数の命令は、
前記複数の追加のコマンドブローカに関連付けられた複数の追加のコマンドを表示するのに使用されるべきプレゼンテーションモデルの折衝を、複数の追加のコマンドブローカとすることと、
前記複数の追加のコマンドに関連付けられた複数の追加のコマンドプロバイダの識別子を、前記折衝されたプレゼンテーションモデルに基づいて取得することと
を、前記1つまたは複数のプロセッサにさらに引き起こすことを特徴とする請求項1に記載のコンピュータ可読媒体。 - 前記複数の命令は、前記コマンドブローカによってサポートされない1つまたは複数のプレゼンテーションモデルをサポートするコマンドホストの一部であることを特徴とする請求項1に記載のコンピュータ可読媒体。
- 前記1つまたは複数のプロセッサに前記コマンドブローカと折衝させる前記命令は、
コンポーネントによってエクスポーズされたモード列挙にアクセスすることと、
前記モード列挙のアクセスに応答して、前記コマンドのために前記コマンドブローカによってサポートされた複数の異なるプレゼンテーションモデルのリストを受信することと
を、前記1つまたは複数のプロセッサに、さらに引き起こすことを特徴とする請求項1に記載のコンピュータ可読媒体。 - 前記命令は、
1つまたは複数の引数を含むオブジェクト定義を識別することと、
非リテラル引数である前記1つまたは複数の引数の各々について、前記引数に基づいた1つまたは複数の追加のオブジェクト定義を再帰的に識別することと、
前記識別されたオブジェクト定義によって定義された前記オブジェクトを、前記コマンドブローカとして生成することと
によって、前記コマンドブローカを生成することを、前記1つまたは複数のプロセッサにさらに引き起こすことを特徴とする請求項1に記載のコンピュータ可読媒体。 - コマンドブローカを実装する複数の命令を格納した1つまたは複数のコンピュータ可読媒体であって、前記複数の命令は、1つまたは複数のプロセッサによって実行されるとき、
リクエスタに対して、前記コマンドブローカによってサポートされた複数のプレゼンテーションモデルを識別することであって、前記コマンドブローカは特定のコマンドに関連付けられることと、
前記複数のプレゼンテーションモデルのうちのいずれかは、ユーザインターフェースを介して前記コマンドを表示するのに使用されるべきかを前記リクエスタと折衝することと
を前記1つまたは複数のプロセッサに引き起こすことを特徴とするコンピュータ可読媒体。 - 前記複数の命令は、
前記折衝されたプレゼンテーションモデルに基づいて、前記コマンドのためのコマンドプロバイダを作成することと、
前記リクエスタに前記コマンドプロバイダを通知することと
を、前記1つまたは複数のプロセッサに、さらに引き起こすことを特徴とする請求項11に記載のコンピュータ可読媒体。 - 前記1つまたは複数のプロセッサに前記コマンドプロバイダの生成を引き起こす前記命令は、前記1つまたは複数のプロセッサに前記コマンドプロバイダのインスタンス化を引き起こす命令を備えたことを特徴とする請求項12に記載のコンピュータ可読媒体。
- 前記1つまたは複数の命令は、
コマンドコンテキストにアクセスすることと、
前記コマンドコンテキストの少なくとも一部内に基づいて、前記コマンドブローカによってサポートされた前記複数のプレゼンテーションモデルのうちどれを前記リクエスタに対して識別するかを決定することと
を、前記1つまたは複数のプロセッサに引き起こすことを特徴とする請求項11に記載のコンピュータ可読媒体。 - 前記複数のプレゼンテーションモデルのうちどれが、前記コマンドを提示するのに使用されるべきかを折衝することを、前記1つまたは複数のプロセッサに引き起こす前記命令は、前記複数のプレゼンテーションモデルのうち1つの識別を、前記リクエスタから受信することを、前記1つまたは複数のプロセッサに引き起こす命令を備えることを特徴とする請求項11に記載のコンピュータ可読媒体。
- 前記リクエスタはコマンドホストを備えることを特徴とする請求項11に記載のコンピュータ可読媒体。
- 前記複数の命令は、
モード列挙をエクスポーズすることと、
前記リクエスタが前記モード列挙を呼び出すことに応答して、前記コマンドブローカによってサポートされた前記複数のプレゼンテーションモデルのリストを、前記リクエスタに戻すことによって、前記コマンドブローカによってサポートされた前記複数のプレゼンテーションモデルを識別することと
を、前記1つまたは複数のプロセッサに、さらに引き起こすことを特徴とする請求項11に記載のコンピュータ可読媒体。 - 複数のユーザインターフェースコマンドを表示できるワークスペースを提供するためのコマンドホストと、
コマンドのための複数のサポートされたモードを識別するために、およびさらに前記複数のサポートされたモードのうちどれが前記コマンドに使用されるべきかを決定するためにコマンドホストと折衝するために、前記コマンドホストに通信的に結合されたコマンドブローカと
を備えたことを特徴とするシステム。 - 複数の異なるコマンドのうち1つのための複数のサポートされたモードを識別するための、前記複数の追加のコマンドブローカの各々、および前記複数のサポートされたモードのうちどれが前記特定のコマンドのために使用されるべきかを決定するために、前記コマンドホストとさらに折衝するための、前記複数の追加のコマンドブローカの各々である、前記コマンドホストに通信的に連結された複数の追加のコマンドブローカ
をさらに備えたことを特徴とする請求項18に記載のシステム。 - 前記コマンドが呼び出されるときに後に続くアクションを制御するために、前記コマンドのために使用されるべき前記決定されたモードに基づく前記コマンドブローカによって作成されたコマンドプロバイダ
をさらに備えることを特徴とする請求項18に記載のシステム。 - 前記コマンドブローカによって使用できる前記システムに関する情報を識別する、前記コマンドブローカに通信的に連結されたコマンドコンテキスト
をさらに備えることを特徴とする請求項18に記載のシステム。 - コンポーネントを記述する複数の命令を格納した1つまたは複数のコンピュータ可読媒体であって、前記コンポーネントは、生成されるとき、
モード列挙をエクスポーズすることと
前記リクエスタが前記モード列挙を呼び出すことに応答して、前記コンポーネントに関連付けられた特定のコマンドのために、前記コンポーネントによってサポートされた、1つまたは複数のプレゼンテーションモデルのリストを、リクエスタに返すこと
を特徴とする1つまたは複数のコンピュータ可読媒体。 - 前記コンポーネントは、インスタンス化されることによって作成されることを特徴とする請求項22に記載のコンピュータ可読媒体。
- 前記コンポーネントは、生成されるとき、さらに、前記コンポーネントを識別する識別属性を有することを特徴とする請求項22に記載のコンピュータ可読媒体。
- 前記コンポーネントは、生成されるとき、さらに、
前記コンポーネントを設定することになるのをコマンドコンテキストができるようにする第1の属性をエクスポーズすること
であることを特徴とする請求項22に記載のコンピュータ可読媒体。 - 前記コンポーネントは、生成されるとき、さらに、前記特定のコマンドが属する1つまたは複数のグループの識別を可能にする、グループ属性を有することを特徴とする請求項22に記載のコンピュータ可読媒体。
- 前記コンポーネントは、生成されるとき、さらに、
グループ列挙をエクスポーズすることと、
前記リクエスタが前記グループ列挙を呼び出すことに応答して、前記コンポーネントによってサポートされた1つまたは複数のグループのリストを、前記リクエスタへ返すことと
を特徴とする請求項22に記載のコンピュータ可読媒体。 - 前記コンポーネントは、生成されるとき、さらに、
プレゼンテーションモデルの識別子であるパラメータを有するget provider属性をエクスポーズすることと、
前記リクエスタが前記get provider属性を呼び出すことに応答して、前記識別されたプレゼンテーションモデルのための前記特定のコマンドを実装するコマンドプロバイダコンポーネントを生成することと
を特徴とする請求項22に記載のコンピュータ可読媒体。 - 前記コンポーネントは、前記コマンドプロバイダコンポーネントをインスタンス化することによって、前記コマンドプロバイダコンポーネントを生成することを特徴とする請求項28に記載のコンピュータ可読媒体。
- 前記コンポーネントは、生成されるとき、さらに、前記特定のコマンドのためのコンテキストが変化する度にファイアされる、コマンドコンテキストのハンドラ属性を有することを特徴とする請求項22に記載のコンピュータ可読媒体。
- コンポーネントによってエクスポーズされたモード列挙にアクセスすることと、
前記モード列挙にアクセスすることに応答して、前記コンポーネントに関連付けられた特定のコマンドのために、前記コンポーネントによってサポートされた1つまたは複数のプレゼンテーションモデルのリストを受信することと
を備えたことを特徴とする方法。 - 前記コンポーネントの識別属性にアクセスして、前記コンポーネントの前記識別を取り出すことをさらに備えたことを特徴とする請求項31に記載の方法。
- 前記コンポーネントのためのコマンドコンテキストが設定されることを可能にする、前記コンポーネントの第1の属性にアクセスすることをさらに備えたことを特徴とする請求項31に記載の方法。
- 前記コンポーネントのグループ列挙にアクセスすることと、
前記グループ列挙にアクセスすることに応答して、前記コンポーネントによってサポートされた1つまたは複数のグループのリストを受信することと
をさらに備えたことを特徴とする請求項31に記載の方法。 - 前記コンポーネントのget provider属性にアクセスすることと、
前記get provider属性の前記アクセスにおけるパラメータとして、前記コンポーネントによってサポートされた前記1つまたは複数のプレゼンテーションモデルのうち1つの識別子を含むことと、
前記get provider属性にアクセスすることに応答して、前記パラメータとして識別された前記プレゼンテーションモデルのための前記特定のコマンドを実装するコマンドプロバイダコンポーネントの識別子を受信することと
をさらに備えたことを特徴とする請求項31に記載の方法。 - コマンドブローカを生成するために格納された複数の命令を有する1つまたは複数のコンピュータ可読媒体であって、前記複数の命令は、1つまたは複数のプロセッサによって実行されるとき、
1つまたは複数の引数を含むオブジェクト定義を識別することと、
非リテラル引数である前記1つまたは複数の引数の各々について、前記引数に基づいた1つまたは複数の追加のオブジェクト定義を再帰的に識別することと、
前記コマンドブローカとして、前記識別されたオブジェクト定義によって定義された前記オブジェクトを生成することと
を、前記1つまたは複数のプロセッサに引き起こすことを特徴とする1つまたは複数のコンピュータ可読媒体。 - 前記複数の命令はさらに、前記オブジェクト定義として、前記コマンドブローカに関連付けられたトップレベルオブジェクト定義を、前記1つまたは複数のプロセッサに識別させることを特徴とする請求項36に記載のコンピュータ可読媒体。
- 前記識別されたオブジェクト定義によって定義された前記オブジェクトの生成を前記1つまたは複数のプロセッサに引きおこす前記複数の命令はさらに、前記識別されたオブジェクト定義によって定義された前記オブジェクトのインスタンス化を、前記1つまたは複数のプロセッサに引き起こすことを特徴とする請求項36に記載のコンピュータ可読媒体。
- 前記複数の命令はさらに、Windows(登録商標)オペレーティングシステムのレジストリ内で前記オブジェクト定義の識別を、前記1つまたは複数のプロセッサに引き起こすことを特徴とする請求項36に記載のコンピュータ可読媒体。
- 前記オブジェクト定義は、第1のオブジェクト定義によって定義されたオブジェクトの識別子を提示するデータを格納する型フィールド、および1つまたは複数の追加のオブジェクト定義を提示するデータを格納する引数フィールドを含むことを特徴とする請求項36に記載のコンピュータ可読媒体。
- 以下のデータ構造を格納したコンピュータ可読媒体であって、
第1のオブジェクト定義によって定義されたオブジェクトの識別子を提示するデータを格納する型フィールド、および1つまたは複数の追加のオブジェクト定義を提示するデータを格納する引数フィールドを含む、前記第1のオブジェクト定義と、
前記第1のオブジェクト定義における処理オペレーションの間、前記引数フィールドが第2のオブジェクト定義を識別するために検査されることを特徴とする、前記引数フィールドによって識別された前記第2のオブジェクト定義と
を備えたことを特徴とするコンピュータ可読媒体。 - 前記データ構造は、コマンドブローカを定義するデータを含むことを特徴とする請求項41に記載のコンピュータ可読媒体。
- 前記第1のオブジェクト定義は、前記第1のオブジェクト定義を生成するために、コマンドホストの識別子を提示するデータを格納するためのアセンブリフィールドをさらに備えたことを特徴とする請求項41に記載のコンピュータ可読媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/838,462 US7636922B2 (en) | 2004-05-03 | 2004-05-03 | Generic user interface command architecture |
PCT/US2004/023643 WO2005111768A2 (en) | 2004-05-03 | 2004-07-22 | Generic user interface command architecture |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007538314A true JP2007538314A (ja) | 2007-12-27 |
Family
ID=35188553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007511342A Pending JP2007538314A (ja) | 2004-05-03 | 2004-07-22 | 汎用ユーザインターフェースコマンドアーキテクチャ |
Country Status (6)
Country | Link |
---|---|
US (2) | US7636922B2 (ja) |
EP (1) | EP1743232B1 (ja) |
JP (1) | JP2007538314A (ja) |
KR (1) | KR20070026430A (ja) |
CN (1) | CN101421685B (ja) |
WO (1) | WO2005111768A2 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7810105B2 (en) * | 2004-12-29 | 2010-10-05 | Motorola, Inc. | Method and apparatus for running different types of applications on a wireless mobile device |
US7966573B2 (en) * | 2006-02-17 | 2011-06-21 | Microsoft Corporation | Method and system for improving interaction with a user interface |
US8437409B2 (en) | 2006-12-06 | 2013-05-07 | Carnagie Mellon University | System and method for capturing, editing, searching, and delivering multi-media content |
US20090055757A1 (en) * | 2007-08-20 | 2009-02-26 | International Business Machines Corporation | Solution for automatically generating software user interface code for multiple run-time environments from a single description document |
US7814054B2 (en) * | 2008-04-03 | 2010-10-12 | Laurion James E | System and method for providing common operators across multiple applications |
US8843841B2 (en) * | 2009-04-30 | 2014-09-23 | Agilent Technologies, Inc. | System and method for interactive instrument operation and automation |
US10198414B2 (en) * | 2009-09-10 | 2019-02-05 | Usablenet Inc. | Methods for optimizing interaction with a form in a website page and systems thereof |
US20130067408A1 (en) * | 2011-09-12 | 2013-03-14 | Microsoft Corporation | Contextually applicable commands |
US9690877B1 (en) * | 2011-09-26 | 2017-06-27 | Tal Lavian | Systems and methods for electronic communications |
US10901698B2 (en) | 2018-11-30 | 2021-01-26 | International Business Machines Corporation | Command tool development using a description file |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05324232A (ja) * | 1992-05-20 | 1993-12-07 | N T T Data Tsushin Kk | 共有オブジェクトの視覚的入出力処理方法 |
JP2000082039A (ja) * | 1998-06-30 | 2000-03-21 | Internatl Business Mach Corp <Ibm> | 表示制御情報生成方法及びコンピュ―タ |
JP2003186665A (ja) * | 2001-09-28 | 2003-07-04 | Docomo Communications Laboratories Usa Inc | 拡張性のあるグラフィカルユーザインターフェイスアーキテクチャ |
WO2004012087A1 (ja) * | 2002-07-30 | 2004-02-05 | Sony Corporation | プログラム、情報処理方法および装置 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL100990A (en) * | 1991-02-27 | 1995-10-31 | Digital Equipment Corp | Multilingual optimization compiler that uses Gladi in the production of a multi-pass cipher |
EP0606718A3 (en) | 1992-12-30 | 1998-10-21 | AT&T Corp. | Communications protocol for exchanging interface information between a host and a terminal |
CA2168762C (en) * | 1993-08-03 | 2000-06-27 | Paul Butterworth | Flexible multi-platform partitioning for computer applications |
US5664133A (en) | 1993-12-13 | 1997-09-02 | Microsoft Corporation | Context sensitive menu system/menu behavior |
US6173289B1 (en) * | 1995-07-07 | 2001-01-09 | Novell, Inc. | Apparatus and method for performing actions on object-oriented software objects in a directory services system |
US5887139A (en) * | 1996-08-19 | 1999-03-23 | 3Com Corporation | Configurable graphical user interface useful in managing devices connected to a network |
US6611878B2 (en) | 1996-11-08 | 2003-08-26 | International Business Machines Corporation | Method and apparatus for software technology injection for operating systems which assign separate process address spaces |
US6012152A (en) * | 1996-11-27 | 2000-01-04 | Telefonaktiebolaget Lm Ericsson (Publ) | Software fault management system |
US6292827B1 (en) * | 1997-06-20 | 2001-09-18 | Shore Technologies (1999) Inc. | Information transfer systems and method with dynamic distribution of data, control and management of information |
US7039876B2 (en) * | 1997-10-06 | 2006-05-02 | Canon Kabushiki Kaisha | User interface for image acquisition devices |
US6028998A (en) * | 1998-04-03 | 2000-02-22 | Johnson Service Company | Application framework for constructing building automation systems |
US6697088B1 (en) | 1998-04-27 | 2004-02-24 | Jacada, Inc. | Graphical presentation system |
US6694482B1 (en) * | 1998-09-11 | 2004-02-17 | Sbc Technology Resources, Inc. | System and methods for an architectural framework for design of an adaptive, personalized, interactive content delivery system |
US6628305B1 (en) | 1998-11-09 | 2003-09-30 | International Business Machines Corporation | Architecture and definition of an extensible, object-oriented graphical user interface framework for managing and administering heterogenous digital library datastores |
WO2001098936A2 (en) * | 2000-06-22 | 2001-12-27 | Microsoft Corporation | Distributed computing services platform |
US6738077B1 (en) * | 2000-07-18 | 2004-05-18 | Apple Computer, Inc. | Dynamic generation and automated distribution of user interface from database model |
US6583798B1 (en) | 2000-07-21 | 2003-06-24 | Microsoft Corporation | On-object user interface |
US6957390B2 (en) * | 2000-11-30 | 2005-10-18 | Mediacom.Net, Llc | Method and apparatus for providing dynamic information to a user via a visual display |
US6996800B2 (en) * | 2000-12-04 | 2006-02-07 | International Business Machines Corporation | MVC (model-view-controller) based multi-modal authoring tool and development environment |
US20030007485A1 (en) * | 2001-05-22 | 2003-01-09 | Motorola, Inc | Method and system for operating an edge router |
JP2003108373A (ja) | 2001-09-28 | 2003-04-11 | Toshiba Corp | 汎用型ソフトウェア開発支援システム、汎用型ソフトウェア開発支援プログラム、およびそのシステムで用いられるソフトウェア部品 |
US7934162B2 (en) * | 2001-09-28 | 2011-04-26 | Ntt Docomo, Inc. | Running state migration of platform specific graphical user interface widgets between heterogeneous device platforms |
US7234111B2 (en) * | 2001-09-28 | 2007-06-19 | Ntt Docomo, Inc. | Dynamic adaptation of GUI presentations to heterogeneous device platforms |
US7392483B2 (en) * | 2001-09-28 | 2008-06-24 | Ntt Docomo, Inc, | Transformation of platform specific graphical user interface widgets migrated between heterogeneous device platforms |
US7895522B2 (en) * | 2001-09-28 | 2011-02-22 | Ntt Docomo, Inc. | Layout of platform specific graphical user interface widgets migrated between heterogeneous device platforms |
US7283846B2 (en) * | 2002-02-07 | 2007-10-16 | Sap Aktiengesellschaft | Integrating geographical contextual information into mobile enterprise applications |
US20030172193A1 (en) | 2002-03-07 | 2003-09-11 | Olsen Jesse Dale | User interface generator and method of automatically generating a user interface |
US6917938B2 (en) * | 2002-05-06 | 2005-07-12 | Ideapivot Corporation | Collaborative context information management system |
RU2348964C2 (ru) | 2002-09-30 | 2009-03-10 | Майкрософт Корпорейшн | Система и способ для обеспечения известности элементов пользовательского интерфейса для приложения и пользователя |
US7266773B2 (en) * | 2002-10-24 | 2007-09-04 | Efficient Analytics, Inc. | System and method for creating a graphical presentation |
US7493592B2 (en) * | 2003-10-24 | 2009-02-17 | Microsoft Corporation | Programming interface for a computer platform |
-
2004
- 2004-05-03 US US10/838,462 patent/US7636922B2/en not_active Expired - Fee Related
- 2004-07-22 CN CN2004800426916A patent/CN101421685B/zh not_active Expired - Fee Related
- 2004-07-22 EP EP04778935.9A patent/EP1743232B1/en not_active Not-in-force
- 2004-07-22 KR KR1020067019905A patent/KR20070026430A/ko not_active Application Discontinuation
- 2004-07-22 WO PCT/US2004/023643 patent/WO2005111768A2/en not_active Application Discontinuation
- 2004-07-22 JP JP2007511342A patent/JP2007538314A/ja active Pending
-
2009
- 2009-09-30 US US12/570,012 patent/US8359606B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05324232A (ja) * | 1992-05-20 | 1993-12-07 | N T T Data Tsushin Kk | 共有オブジェクトの視覚的入出力処理方法 |
JP2000082039A (ja) * | 1998-06-30 | 2000-03-21 | Internatl Business Mach Corp <Ibm> | 表示制御情報生成方法及びコンピュ―タ |
JP2003186665A (ja) * | 2001-09-28 | 2003-07-04 | Docomo Communications Laboratories Usa Inc | 拡張性のあるグラフィカルユーザインターフェイスアーキテクチャ |
WO2004012087A1 (ja) * | 2002-07-30 | 2004-02-05 | Sony Corporation | プログラム、情報処理方法および装置 |
Also Published As
Publication number | Publication date |
---|---|
EP1743232B1 (en) | 2016-10-12 |
WO2005111768A2 (en) | 2005-11-24 |
US20050246725A1 (en) | 2005-11-03 |
US8359606B2 (en) | 2013-01-22 |
CN101421685B (zh) | 2012-03-14 |
EP1743232A2 (en) | 2007-01-17 |
CN101421685A (zh) | 2009-04-29 |
EP1743232A4 (en) | 2009-11-04 |
US7636922B2 (en) | 2009-12-22 |
US20100023954A1 (en) | 2010-01-28 |
KR20070026430A (ko) | 2007-03-08 |
WO2005111768A3 (en) | 2009-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8359606B2 (en) | Generic user interface command architecture | |
KR101076904B1 (ko) | 컴퓨터 플랫폼에 대한 프로그래밍 인터페이스 | |
US7636897B2 (en) | System and method for property-based focus navigation in a user interface | |
US7398474B2 (en) | Method and system for a digital device menu editor | |
US8095565B2 (en) | Metadata driven user interface | |
RU2398266C2 (ru) | Использование механизма привязки данных для выполнения привязки команд | |
US6469714B2 (en) | Infocenter user interface for applets and components | |
US7363628B2 (en) | Data centric and protocol agnostic workflows for exchanging data between a workflow instance and a workflow host | |
US8762936B2 (en) | Dynamic design-time extensions support in an integrated development environment | |
AU2005200697B2 (en) | Priority binding | |
JP2002189595A (ja) | リフレッシュ可能なWebクエリを作成するための統合された方法 | |
JP2005346722A (ja) | フォームタイプを使用してフォームを生成する方法および装置 | |
JP2015534145A (ja) | 宣言テンプレートを使用してコントロールをスタンプアウトするためのユーザインターフェイスコントロールフレームワーク | |
US20080005752A1 (en) | Methods, systems, and computer program products for generating application processes by linking applications | |
US8656293B1 (en) | Configuring mobile devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100903 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110215 |