JP4420968B2 - コマンディングのために方法及びコンピュータ可読媒体 - Google Patents

コマンディングのために方法及びコンピュータ可読媒体 Download PDF

Info

Publication number
JP4420968B2
JP4420968B2 JP2008529246A JP2008529246A JP4420968B2 JP 4420968 B2 JP4420968 B2 JP 4420968B2 JP 2008529246 A JP2008529246 A JP 2008529246A JP 2008529246 A JP2008529246 A JP 2008529246A JP 4420968 B2 JP4420968 B2 JP 4420968B2
Authority
JP
Japan
Prior art keywords
command
binding
readable medium
computer readable
input
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.)
Expired - Fee Related
Application number
JP2008529246A
Other languages
English (en)
Other versions
JP2009506465A (ja
JP2009506465A5 (ja
Inventor
グプタ,ナミタ
ヒルバーグ,マイケル・ジェイ
ボグダン,ジェフリー・エル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009506465A publication Critical patent/JP2009506465A/ja
Publication of JP2009506465A5 publication Critical patent/JP2009506465A5/ja
Application granted granted Critical
Publication of JP4420968B2 publication Critical patent/JP4420968B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • User Interface Of Digital Computer (AREA)

Description

技術分野及び背景技術
ユーザがアプリケーションを開くときには、ユーザは、自分自身がアプリケーションでの各種機能を行なうことを可能にするコマンドにアクセスする。例えば、ユーザはアプリケーションからテキスト又は他のオブジェクトをカット又はコピーし、当該テクスト又はそれ以外のオブジェクトを別のアプリケーションにペーストすることができる。
これらのコマンドは、様々な方法で呼び出される。例えば、ユーザは、メニュ・ツールバーを選択し、メニュの中を移動して、カット又はコピー・コマンドを見つける。別の例としては、ユーザは、ショートカット・キー(例えば、[コントロール]−x)を入力して、アプリケーションからオブジェクトをカットすることがある。更に別の例では、ユーザは、マウスを用いてテキストを選択し、当該テキストを別の位置にドラッグし、カット及びペースト・コマンド開始することがある。
コマンドを用いる必要がある入力装置及びアプリケーションは様々なであるので、コマンド・アーキテクチャのインプリメンテーション及び使用は、より複雑になる。この複雑さは、コマンドを用いるプログラムを開発するアプリケーション開発者及びそれ以外の者によって実行される必要がある業務を増加させる。
発明の概要
簡潔に、この出願において開示される発明の特徴は、コマンドの生成及び伝達に関する。複数の特徴において、グラフィカル・ユーザ・インターフェースの要素は、ジェスチャをコマンドと関連付ける入力バインディングを含む。ジェスチャが受け取られると、コマンドは、どの要素がフォーカスを有するのかに応じて生成される。更に、グラフィカル・ユーザ・インタフェースの要素は、コマンドが受け取られるときにコールすべき方法を定義する。イベント又はコマンドが受け取られると、グラフィカル・ユーザ・インターフェースにおいて表現可能な要素の階層的データ構造が、イベント又はコマンドに応答して横断される。
この概要は、詳細な説明において後述される本発明の特徴を簡潔に識別するために提供される。この概要は、本発明の本質的な中心的な又は本質的な特徴を識別することは意図していないし、本発明の範囲を限定することも意図しない。
「この出願において開示される主題又は本発明」という用語は、格別に断らない限りは、詳細な説明において説明される主題を意味する。「特徴」という用語は、「1又は複数の特徴」という意味に読まれるべきである。詳細な説明において記載された主題の特徴は、本発明の中心的又は本質的特徴を識別することを意図しない。
以上の及び後述する特徴は、添付の図面を参照して以下の詳細な説明を読むことによって明らかになる。
例示的な動作環境
図1は、主題の様相がここに記述した適切な計算機システム環境100の一例がインプリメントされることがあることを示す。計算機システム環境100は適切なコンピュータ環境の単なる1つの例で、使用又はここに記述された主題の様相の機能性のスコープに関してどんな制限も示唆するようには意図されない。また、コンピュータ環境100はどんな従属性又は任意のオン又は例示的な操作環境100に図解された成分の組合せに関係のある要求も持っているとは解釈されるべきでない。ここに記述された主題の様相は、多数の他の汎用又は専用の計算機システム環境か構成で使用可能である。
有名な計算機システム、環境及び(又は)ここに記述された主題の様相を備えた使用にふさわしいことがある構成の例は含んでいる、しかし制限されない、パーソナルコンピュータ、サーバーコンピュータ、携帯型のデバイス又はラップトップ・デバイス、マルチプロセッサーシステム、マイクロコントローラベースのシステム、セットトップ・ボックス、プログラム可能な家電、ネットワークPC、ミニコンピュータ、メインフレーム・コンピュータ、上記のシステム又はデバイスのうちのどれでも含んでいる分散コンピューティング環境など。
ここに記述された主題の様相は、コンピュータによって実行されて、プログラムモジュールのようなコンピュータ実行可能命令の一般情勢に述べられることがある。一般に、プログラムモジュールはルーチン、プログラム、オブジェクト、成分、データ構造などを含んでいる。それは特別のタスクか道具項目抽象データ型を行なう。ここに記述された主題の様相も、通信網によってリンクされる遠隔処理デバイスによってタスクが行なわれる分散コンピューティング環境中で実行されることがある。分散コンピューティング環境では、プログラムモジュールは、記憶装置デバイスを含むローカル・リモートコンピュータ記憶媒体の両方に位置することがある。
図1に関して、ここに記述された主題の様相をインプリメントするための例示的なシステムは、汎用のコンピューティング装置をコンピュータ110の形で含んでいる。コンピュータ110の成分は含んでいることがある、しかし制限されない、演算処理装置120、システムメモリー130、及び演算処理装置120へのシステムメモリーを含む様々なシステムコンポーネントを連結するシステム・バス121。システム・バス121は、様々なバス方式のうちのどれでも用いて、メモリーバスかメモリーコントローラー、周辺バス及びローカルバスを含むいくつかのタイプのバス構造のいずれかであることがある。
制限ではなく例経由で、そのようなアーキテクチャは産業標準アーキテクチャ(ISA)バス(マイクロチャネル・アーキテクチャ(MCA)バス)を含んでいる、ISA(EISA)バス、ビデオエレクトロニクス標準組織(VESA)ローカルバス、及びメザニーン・バスとして知られている周辺の構成要素の相互接続(PCI)バスを向上させた。
コンピュータ110は例示的には様々なコンピュータを含む判読可能な媒体。コンピュータが読める媒体は、コンピュータ110によってアクセスすることができ、揮発性・不揮発性の媒体及び取外し可能及び非リムーバブル・メディアの両方を含んでいるあらゆる利用可能な媒体になりえる。制限ではなく例経由で、コンピュータが読める媒体はコンピュータ記憶装置媒体及び通信メディアを含むことがある。コンピュータ記憶装置媒体は揮発性、コンピュータが読める命令、データ構造、プログラムモジュール又は他のデータのような情報の記憶のための任意の方法又はテクノロジー中でインプリメントされた不揮発性で、取外し可能及び非リムーバブル・メディアの両方を含んでいる。コンピュータ記憶装置媒体は含んでいる、しかし制限されない、RAM、ROM、EEPROM、フラッシュ・メモリ又は他のメモリ技術、CD−ROM、DVD又は他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶装置、又は希望情報を格納するために用いることができ、コンピュータ110によってアクセスすることができる他の媒体を含む。通信メディアは、例示的にはコンピュータが読める命令、データ構造、プログラムモジュール又は他のデータを搬送波又は他の移送機構のような変調データ信号で実施例し、どんな情報配送媒体も含んでいる。「変調データ信号」という用語は、信号中のエンコード情報にような方法で1つ又はその特性のそれ以上のをセットするか変更される信号を意味する。制限ではなく例経由で、通信メディア、有線ネットワークか直接の有線接続のようなインターネットを利用している媒体、及び音響で、RF、赤外線・他の無線メディアのような無線メディアを含んでいる。上記のもののうちのいずれかの組合せもコンピュータが読める媒体の範囲内で含まれる。
システムメモリー130は、コンピュータ記憶装置媒体を揮発性及び/又は読み取り専用メモリ(ROM)131及びランダムアクセス記憶装置(RAM)132のような不揮発性メモリの形で含んでいる。始動中にのようにコンピュータ110内の要素間の情報を転送するのを支援する基本ルーチンを含んでいる基本入出力システム133(BIOS)は、ROM131に例示的に格納される。RAM132は例示的にはデータ及び/又は直ちにアクセス可能なプログラムモジュールを含み、又は演算処理装置120によってまもなく動作される。制限ではなく例経由で、図1は、オペレーティング・システム134、アプリケーション・プログラム135、他のプログラムモジュール136及び番組データ137を示す。
コンピュータ110は更に他のものを含んでいることがあるが、例えば、取外し可能な/非取外し可能、揮発性の/不揮発性のコンピュータ記憶装置媒体などである。例のみ経由で、図1は、非取外し可能で不揮発性の磁気媒体から読むか、書くハードディスク・ドライブ140、取外し可能で不揮発性の磁気ディスク152から読むか、書く磁気ディスク装置151、及びCDROM又は他の光学の媒体のような取外し可能で不揮発性の光ディスク156から読むか、書く光ディスクドライブ155を示す。取外し可能な/非取外し可能な他のもの、揮発性の/不揮発性のコンピュータ記憶装置媒体、それは例示的な操作環境加算の中で用いることができるが、制限されない、磁気カセットテープ、フラッシュ・メモリカード、DVD、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどである。ハードディスク・ドライブ141は、システム・バス121に例示的に接続されるインターフェース140のようなリムーバブルメモリ・インターフェース及び磁気ディスク装置151及び光ディスクドライブ155は、インターフェース150のようなリムーバブルメモリ・インターフェースによってシステム・バス121に例示的に接続される。
上述し、図1に図解されたドライブ及びそれらの関連するコンピュータ記憶装置媒体は、コンピュータ110のためにコンピュータが読める命令、データ構造、プログラムモジュール及び他のデータの記憶を提供する。図1では、例えば、ハードディスク・ドライブ141は、オペレーティング・システム144、アプリケーション・プログラム145、他のプログラムモジュール146及び番組データ147の格納として図解される。これらの成分が同じでありえることに注目する、として、又はオペレーティング・システム134、アプリケーション・プログラム135、他のプログラムモジュール136及び番組データ137と異なるオペレーティング・システム144、アプリケーション・プログラム145、他のプログラムモジュール146及び番組データ147は、最小では、それらが異なるコピーであることを図解するために異なる数をここに与えられる。ユーザは、マウス、トラックボール又はタッチパッドと一般に呼ばれるキーボード162のような入力装置及びポインティング・デバイス161によってコンピュータ20へコマンドと情報を入力することがある。他の入力装置(図示せず)はマイクロホン、ジョイスティック、ゲーム・パッド、衛星放送アンテナ、スキャナー、ハンドヘルドPC又は他の書くタブレットのタッチセンシティブスクリーンなどを含んでいることがある。これら及び他の入力装置は、ユーザ入力によって演算処理装置120にしばしば接続される、システム・バスにつながれるが、パラレルポート、ゲームポート又はユニバーサル・シリアル・バス(USB)のような、他のインターフェース及びバス構造によって接続されることがある160を接続する。モニタ191又は他のタイプの表示装置もビデオインタフェース190のようなインターフェース経由でシステム・バス121に接続される。モニタに加えて、コンピュータは、更にスピーカ197及びプリンタ196のような他の周辺の出力デバイスを含んでいることがある。それはアウトプット周辺インタフェース190によって接続されることがある。
コンピュータ110は、リモートコンピュータ180のような1つ以上のリモートコンピュータへの論理結合を用いて、ネットワーク化された環境中で動作することがある。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、貴族デバイス又は他の共通ネットワークノードで例示的には多数含んでいる。又は、要素はすべて上に記述した、記憶装置デバイス181だけは図1に図解されたが、コンピュータ110に関連のある図1に描かれた論理結合はローカルエリアネットワーク(LAN)171及びワイドエリアネットワーク(WAN)173を含んでいるが、更に他のネットワークを含んでいるかもしれない。そのようなネットワーキング環境は、オフィス、企業全体に渡るコンピュータネットワーク、イントラネット及びインターネットで普通である。
LANネットワーキング環境の中で用いられた時、コンピュータ110はネットワークインタフェイス又はアダプターの170によってLAN171に接続される。WANネットワーキング環境の中で用いられた時、コンピュータ110は例示的にはモデム172又はインターネットのようなWAN 173の上のコミュニケーションを確立するための他の手段を含んでいる。モデム172(それは内部ことがあるか外部のことがある)はユーザ入力インターフェース160又は他の適切な機構経由でシステム・バス121に接続されることがある。ネットワーク化された環境では、コンピュータ110(すなわちそれの部分)へのプログラムモジュールに描かれた関係詞は、遠隔記憶記憶装置に格納されることがある。制限ではなく例経由で、図1はメモリ・デバイス181上で駐在するとして遠隔のアプリケーション・プログラム185を示す。示されたネットワーク接続がコンピュータ間の通信リンクが用いられてもよいと確証する例示的・他の手段であることが認識されるだろう。
インターフェース
プログラミング・インターフェース(より単にインターフェース)は、コードの1以上の他のセグメントによって提供される機能性とコードの1以上のセグメントが通信するか又はアクセスすることを可能にするための任意の機構、プロセス又は試験計画書として見られることがある。又は、プログラミングインターフェースは1つ以上の機構として見られることがある、方法、関数コール、モジュール、オブジェクトなど、他のコンポーネントに1つ以上の機構、方法、関数コール、モジュールなどへの通信するカップリングに有能なシステムの成分である。「コードのセグメント」という用語は、応用の用語又はコード・セグメントが別々にコンパイルされるかにかかわらず、1つ以上の命令又は命令行を含むように意図され、例えば、コード・モジュール、オブジェクト、サブルーチン、機能などを含んでいる、又は、コード・セグメントが実行時システムかプロセスで利用されても、コード・セグメントがソース、中間物又はオブジェクトコードとして提供されても、又は、それらが同じか異なるマシンに置かれるか、多数のマシンを横切って分配されても、又はかどうか、コードのセグメントによって表わされる機能性、全くハードウェア、又はハードウェアとソフトウェアの組み合わせ中で全くソフトウェア中でインプリメントされる。
概念的に、図2A又は図2Bの中で示されるように、プログラミングインターフェースはジェネリックに見られることがある。図2Aは、第1と第2コード・セグメントが通信するコンジットとしてインターフェース205を図解する。図2Bはインターフェース・オブジェクト210及び215(それらは1番目と2番目コード・セグメントの一部であることがあり、でないことがある)を含むインターフェースを図解する。システムの第1と第2コード・セグメントは、媒体220によって通信することができる。図2Bでは、210と215がミディアム220を加えてインターフェースを含むこと反対すると同システムとオンの個別のインターフェースが更に思うことがあるとともに、人はインターフェース・オブジェクト210及び215を考慮することがある。図2A及び2Bはフローの両側の可逆流れ及びインターフェースを示すが、あるインプリメンテーションは単に一方向(又は下記に述べられるような情報の流れはない)の中に情報の流れを持っていることがあるし、又は単に一面でインターフェース・オブジェクトを持っていることがある。制限ではなく例経由で、アプリケーション・プログラム・インターフェイス(API)、入力点、方法、機能、サブルーチン、リモート・プロシージャ・コール及びコンポーネント・オブジェクト・モデル(COM)インターフェースなどが、プログラミング・インターフェースの定義に含まれる。
そのようなプログラミングインターフェースの様相は方法を含んでいることがあり、第2のコード・セグメントへの最初のコード・セグメント送信情報(ここで「情報」とは、その最も広い意味の中で用いられ、データ、コマンド、リクエストなどを含む)、それによって第2のコード・セグメントが情報を得る方法、また構造、シーケンス、シンタックス、構成、スキーマ、タイミング及び情報の内容などが含まれる。この点では、下位にある転送媒体は、インターネットを利用している、又はワイヤレス、又は両方の組合せなどにより情報が運ばれる限り、インターフェースによって定義された方法。それ自身インターフェースのオペレーションにとってあまり意味がない。あるシチュエーションで、1つのコード・セグメントが別のコード・セグメントによって行なわれた機能性に単にアクセスする場合には、情報転送が別の機構(例えば、バッファに置かれた情報、ファイルなどは、コード・セグメント間の情報の流れから分離する)、又は、架空のものであることがあるので、情報は1又は従来の感覚の両方の方角に決められないことがある。コード・セグメントが疎結合か密結合の構成中のシステムの一部かどうかに依存して、与えられたシチュエーションでこれらの様相のうちのどれ又はすべてでも、例えば重要なことがある。したがって、このリストは、単なる例示であって、制限を意味しない。
プログラミングインターフェースについてのこの概念は当業者に知られており、先の詳述から明らかである。しかし、プログラミングインターフェースをインプリメントするには他の方法もあり、もし明らかに除外されなかったならば、特許請求の範囲で定義される本発明の範囲に含まれることが意図される。他のそのような方法は、もっと精巧か又は図2A及び2Bの極度に単純化した視界より複雑なように見えることがある。しかし、それらは、同じ全面的な結果を遂行するためにそれにもかかわらず類似の機能を有する。下記はプログラミングインターフェースのいくつかの実例となる代替的なインプリメンテーションである。
A.ファクタリング:
あるコード・セグメントから別のコード・セグメントまでのコミュニケーションは、多数の離散的なコミュニケーションへコミュニケーションを分解することにより間接的に遂行されることがある。これは、図3A及び3Bの中で概略的に描かれている。示されているように、いくつかのインターフェースは、機能性の分割可能な組の点から記述することができる。したがって、数学的には24を2X2X3X2として提供することがあるように、図2A及び2Bのインターフェース機能は、同じ結果を達成するために因数分解(ファクタリング)されることがある。従って、図3Aの中で図解されるように、インターフェース205によって提供される機能は同じ結果を達成する間に多数のインターフェース305、306及び307の中へのインターフェースのコミュニケーションなどを変換するために細分されることがある。
図3Bの中で図解されるように、インターフェース210によって提供される機能は、同じ結果を達成する間に多数のインターフェース310、311及び312などに細分化される。同様に、最初のコード・セグメントから情報を得る第2のコード・セグメントのインターフェース215は、多数のインターフェース320、321及び322の要因として考慮される。ファクタリングの際には、第1のコード・セグメントと共に含まれているインターフェースの数は、第2のコード・セグメントと共に含まれているインターフェースの数と一致する必要はない。図3A及び3Bの場合のどちらかでは、インターフェース205及び210の機能的なスピリットは、それぞれ、図2A及び2Bの場合と同じである。
インターフェースのファクタリングは、更に、ファクタリングが認識困難であるような結合性、可換性及びそれ以外の数学的性質に従う。例えば、演算の順序は重要でないことがある。従って、インターフェースによって実行された機能は、もう1個のコード又はインターフェースによって、インターフェースに到着する途中で実行されることがあるし、システムの個別の成分によって行なわれることがある。更に、プログラム技術において通常の知識の1つとして、同じ結果を達成するのに異なる関数コールを行う様々な方法があることを認識することができる。
B.再定義
ある場合には、意図した結果を遂行する間、プログラミング・インターフェースのある様相(例えばパラメータ)を無視する、加える、再定義することが可能なことがある。これは図4A及び4Bにおいて図解されている。例えば、図2Aのインターフェース205が関数コールであるSquare(input, precision, output)であるが、それは3つのパラメータである入力と精度と出力とを含んでおり、それは第1のコード・セグメントから第2のコード・セグメントまで発行されると仮定する。図4Aの中で示されるように、中央のパラメータの精度が与えられたシナリオ中の関係である場合、それ、できた、かえって都合がよい、無視されるか、無意味な(このシチュエーションで)パラメータと更に取り替えられる。重要でない付加パラメータも加えられることがある。いずれにしても、入力が第2のコード・セグメントによって2乗された後、アウトプットが返される限り、二乗という機能が達成できる。
精度は、非常によく計算機システムの下流又は他の部分への意味のあるパラメータであることがある。しかし、いったん精度が二乗を計算する狭い目的に必要ではないことが認識されれば、交換されることがあるし無視されることがある。例えば、有効な精度価値を送る代わりに、結果に悪影響を及ぼさずに生年月日のような無意味な値を送ることができる。同様に、図4Bの中で示されるように、インターフェース210はインターフェースへのパラメータを無視するか加えると再定義され、インターフェース210と取り替えられる。インターフェース215は、不必要なパラメータ又は他のところに処理されることがあるパラメータを無視すると、再定義され、インターフェース215として同様に再定義される。ある場合には、見ることができるように、プログラミング・インターフェースが、パラメータ(それはある目的に必要とされない)のような特徴を含んでいることがある。したがって、それらは無視されることがあるし、再定義されることがあるか、他の目的のためにどこか他のところに処理されることがある。
C.インライン・コーディング
間にある「インターフェース」が形式を変更するように、2つの別個のコード・モジュールの機能性のうちのいくらか又はすべてを合併することが実現可能なことがある。例えば、図2A及び2Bの機能性は図5A及び5Bの機能性にそれぞれ変換される。図5Aの中で、図2Aの第1と第2コード・セグメントはそれらを両方とも含んでいるモジュールに合併される。この場合、コード・セグメントは、まだ互いに伝達していることがある。しかし、インターフェースは、シングルモジュールに、よりふさわしいフォームに適したことがある。したがって、例えば、形式的なコール及びリターンのステートメントは、もはや必要ではない。しかし、インターフェース205に準ずる同様の処理又はレスポンスは、まだ有効であることがある。同様に、図5Bの中で示されてている、図2Bからのインターフェース215の一部(又は全部)は、インターフェースを210形成するインターフェース210にインラインで書かれる。図解されるように、インターフェース215は215A”及び215B”に分割される。そしてインタフェース部分215A”は、インターフェースを210"を形成するインターフェース210に従ってコード化された。
具体的な例については、図2Bからのインターフェース210が関数コールであるSquare(input, output)を実行し、それがインターフェース215によって受け取られ、第1のコード・セグメントによって入力(二乗する)を用いて送られた値を処理した後で、二乗された結果を出力を用いて送る。そのような場合、第2のコード・セグメント(入力を2乗する)によって行なわれた処理は、インターフェースへの呼び出しのない第1のコード・セグメントによって行なうことができる。
D.分離
あるコード・セグメントから別のコード・セグメントまでのコミュニケーションは、多数の離散的なコミュニケーションへコミュニケーションを分解することにより間接的に遂行されることがある。これは、図6A及び6Bに、概略的に描かれている。図6Aの中で示されたように、1又は複数のミドルウェア(機能性及び/又はインターフェース機能を下のインターフェースから分離(divorce)するので、分離インターフェースと称される)が提供され、第1のインターフェース605における通信を、この例ではインターフェース610、615、620である別のインターフェースに変換する。例えば、第1のインターフェース605のプロトコルに従うオペレーティング・システムと通信するように設計されたが、その後に、オペレーティング・システムが別のインターフェースに変更される場合である。これは、この場合は、インターフェース610、615及び620である。第2のコード・セグメントによって用いられるオリジナルのインターフェースが、それが第1のコード・セグメントによって用いられるインターフェースともはや互換性をもたないそのように変更されることは理解される。したがって、中間携帯が用いられ、古く新しいインターフェースを互換性をもつようにするために用いられる。
同様に、図6Bの中で示されるように、3番めのコード・セグメントは、インターフェース630から知らせを受ける分離インターフェース635及び分離で開始することができる、640で働くのデザインを変更されて、例えばインターフェース650及び655へインターフェース機能性を送信するために640を接続する、しかし同じ機能的な結果を提供する。同様に、同じか同様の機能的な結果を提供している間に、635と640は、図2Bのインターフェース210及び215の機能性を新しいオペレーティング・システムに翻訳するために相互に働くことがある。
E.書き直し(rewriting)
しかし、別の可能な変形は、コードをダイナミカル(動的)に書き換えて、インターフェースの機能を、別のものであるが全体として同一の結果を達成できる何かに置き換えることである。例えば、中間的な言語(例えば、マイクロソフトIL、Java(登録商標)バイトコードなど)で与えられているコード・セグメントがジャスト・イン・タイム(JIT)コンパイラ又はインタプリタに実行環境(.Net frameworkや、Java(登録商標)ランタイム環境や、それ以外の類似のランタイム・テイプの環境)で提供されているシステムがある。JITコンパイラはダイナミックに、つまり、それらを第2のコード・セグメント(オリジナル又は異なる別のコード・セグメントのいずれか)によって要求されることがあるのと同じくらい異なるインターフェースに順応させるためにコミュニケーションを第1のコード・セグメントから第2のコード・セグメントに変換するように書かれる。これは図7及び8に図解されている。
図7で見ることができるように、このアプローチは上で説明された分離シナリオに似ている。例えば、アプリケーションのインストールベース、最初のインターフェースプロトコルに従ってオペレーティング・システムと通信するように設計されているが、しかし、その後に、オペレーティング・システムが異なるインターフェースを用いるために変更される場合である。JITコンパイラはオペレーティング・システムの新しいインターフェースへのインストールベース・アプリケーションから急いでコミュニケーションを準拠するために用いられてもよい。図8に描かれるように、ダイナミック(動的)にインターフェースを書き直すこのアプローチは、ダイナミックにファクタリングを行うか又はそうでなければ、同様にインターフェースを変更するために適用される。
別の実施例によってインターフェースと同じか同様である結果を達成するための上記シナリオも、いろいろな状態の中で連続的に、並列中で、又は他の中間コードで組み合わせられることがあることは更に注目される。したがって、上に示された代替実施例は相互排除でなく、図2A及び2Bの中で示された総括的なシナリオに同じか等価なシナリオを生産するために混合され、一致し、組み合わせられることがある。更に、ほとんどのプログラミングコンストラクトでのように、ここに記述されないことがあるが、それにもかかわらず主題のスピリット及びスコープによって表わされるインターフェースの同じか同様の機能性を達成する他の同様の方法である、ここに記述した、つまり、それが少なくとも部分的にそばに表わされた機能性、及び可能にされた有利な結果であることは注目される、インターフェース、それはインターフェースの値の基礎となる。
コマンディング
コマンドは、様々なシナリオにおいて用いられる。例えば、コマンドは、編集において、切り取り、コピー、ペースト、ボールド、イタリクス及び下線追加などのテキスト属性の追加に用いられる。
これらのコマンドは、様々なソースから生成される。例えば、カット・コマンドは、メニュからのカット・コマンドの選択、キーボード・ショートカット(例えば、[コントロール]−x)の入力、ハンドヘルド・デバイスにおける何らかの動作(例えば、フリック)、ボイス・コマンドに応答して、また、他の入力デバイスや他のプログラム・コードなどにより生成される。
コマンドは、異なるオブジェクトに適用されると、異なるものを意味することがある。例えば、カット・コマンドは、テキスト・ボックスでは選択されたテキストをカットすることを意味するが、選択されたローを有するデータ・グリッドではローの全体を削除することを意味することがある。
別のシナリオとして、コマンドは、コントロール・テンプレートにおいて用いられる。例えば、図9に表わされるようなスクロール・バー905では、ラインアップ・ボタン910と、ラインダウン・ボタン920とトラック915とが存在する。コントロール・テンプレートは、コントロールの機能を変更せずに、ユーザ又はソフトウェア開発者がコントロールのルック・アンド・フィールをコントロールすることを可能にする。例えば、マークアップ言語では、ソフトウェア又はページの開発者は、スクロール・バー用のテンプレートを次のように定義できる。
Figure 0004420968
スクロール・バー905のボタンが付勢される場合は常に、適切なコマンドが生成される。スクロール・バー905は、LineUp又はLineDownコマンドを実際に何によって生成されたかを意識する必要はない。例えば、コマンドは、ユーザが音声認識ソフトウェアやキーボード入力などによってボタン910又は920の1つを選択することによって生成されることがある。
コマンドが用いられる別のシナリオは、アプリケーション開発者がある動作(アクション)又は方法(メソッド)を実行したいときや、動作やイベントが生じる場合は常に、である。アプリケーション開発者は、コントロール・ライクなボタン上のイベント又は動作に当該コマンドを関連付けることによって、これを生じさせることがある。例えば、ファイル・オブジェクトは、FileOpen及びFileEdit動作を定義することがある。ユーザがエンタを押下するか選択されたアイテムをダブルクリックすると、FileOpen動作を実行することができる。例えば、コマンドを用いることにより、アプリケーション開発者がビジネスロジックからUIロジックを分離することが可能になる。
コマンドは、ICommandインターフェースを介してインプリメント可能である。ICommandインターフェースは、Execute方法とCanExecute方法とを含む。Execute方法は、コマンドが実行されるときに講ずるべき動作を定義することを可能にする。例えば、テキストボックスがフォーカスを有する間にカット・コマンドが実行されると、テキストボックス・コンポーネントは、選択されたテキストをバッファの中にカットする。
コマンドは、その動作を実行するのにパラメータを必要とすることがある。例えば、FileOpen又はPrintコマンドは、正確に動作するのにファイル名を必要とすることがある。ある実施例では、Execute方法は、パラメータ又はタイプ・オブジェクトのジェネリックなデータを受け取るが、その場合、コマンドの消費者及び作成者がパラメータ又はジェネリックなデータが何を意味するかを定義する。コマンドは、パラメータを必要としない場合には、すべての過去のパラメータも無視することがある。
CanExecute方法は、コマンドが実行するかどうかを指示する。例えば、フォーカスがスクロール・バーに設定される場合、カット・コマンドは実行することができないことがある。コンポーネントが、CanExecute方法をコールして、Execute方法を実行できるかどうかを判断する。CanExecute方法は、また、必要とされない場合には無視されることがあるパラメータを受け取る。
更に、あるイベントが、ICommandインターフェースと関係付けられることもある。イベントは、コマンドのexecute能力がいつ変化したのか、又は、ICommandインターフェースに従って具体化されたオブジェクトがCanExecuteをコールして実行することがあるかどうかをいつ判断べきかを、指示する。例えば、オブジェクトは、関連付けられている視覚的要素をイネーブル又はディセーブルして、実行に関する現在の能力を指示することができる。
ICommandインターフェースをインプリメントする例示的なインターフェースとして、次のものがある。
Figure 0004420968
このインターフェースでは、ICommand.Executeは、コマンドが実行されるときに実行されるべき方法を定義し、ICommand.CanExecuteはブーリアンを返し、コマンドが実行されるかどうかを示し、実行すべきその能力が変わる場合は常に、CanExecuteChangedEventがコマンドによって上げられる。
インターフェースを用いるオブジェクトの一例は、フォーム上のボタンである。ボタンは、submitコマンドと関連付けられる。ボタンがクリックされると、例えば、サーバに情報を提出することが望まれている。これが許可されるかどうかに関して指示を提供するため、ボタンは、当該情報が特定の時点において提出されるかどうかに基づいて、イネーブル又はディセーブルされる。例えば、その情報は、提出すべきデータがすべて利用可能(例えば、フォーム上で満たされている)かどうか、サーバへの接続が利用可能かどうか、フォームがサーバに接続されるかどうかなどに基づき、提出されることができることがあるし、提出されないことがある。サーバへの接続が変わる場合には、CanExecuteChangedEventのイベントがレイズ(raise)されることにより、ボタンがそのイネーブル/ディセーブルされた状態を変更する。
上述されたボタンは、Commandsourceの一例(以下では、「CommandSource」とする)である。一般に、CommandSourceは、コマンドを呼び出すことができる任意の要素を含む。他の例示的なCommandSourcesは、MenuItem、ListBoxItem、Hyperlink及び他のコントロールを含む他の要素を含んでいる。CommandSourceクラスの例示的なインターフェースは次のものを含む。
Figure 0004420968
CommandSourceは、CommandSourceが呼び出されるときは常にICommand.Executeをコールすることにより、コマンドを呼び出す。CommandSourceは、呼び出されることが意味するものを定義する。例えば、ボタンがクリックされるときに、ボタンなどのCommandSourceは、コマンドを呼び出す。更に、CommandSourceは、ICommand.Execute方法に、CommandSourceのCommandParameterの値を送る。
更に、CommandSourceは、コマンド上のCanExecute状態に基づいて、それ自体をイネーブル又はディセーブルする。そうするために、CommandSourceはICommand.CanExecute方法を呼び出して、それに、CommandParameterの値を渡す。次に、CommandSourceは、戻されたブーリアンを用いて、CommandSourceの状態をイネーブル又はディセーブルに設定する。
CommandSourceは、また、ICommand.CanExecuteChangedEventのための登録をして、CommandSourceがCanExecuteChangedEventを受け取る度に、ICommand.CanExecute方法を再び呼び出す。ICommand.CanExecuteから返された値に基づいて、CommandSourceは、そのイネーブル又はディセーブルされた状態をそれに従って更新する。
コマンドを呼び出すために用いられるオブジェクトの別の例として、InputBindingオブジェクト(以下では、「InputBinding」とする)がある。InputBindingは、入力をコマンドと関連付ける。後述するように、そして、ある条件の下では、InputBindingによって識別された入力が受け取られると、コマンドが生成される。
上述したように、入力は、キーボード、スタイラス、マウス、音声入力などを含む多くのソースから与えられる。InputBindingクラスの例示的なクラス定義には、次のものがある。
Figure 0004420968
InputGestureオブジェクト(以下では、「InputGesture」)は、マウスのクリック、スタイラスのフリック又はキーボード入力など(InputGestureは、これらを聞きたい)の1又は複数のイベントの組を定義する。この組は、InputGestureのInputEventsのプロパティを用いる際に定義される。イベントに対応するイベント・リスナが登録されることによって、InputGestureオブジェクトは、任意のイベントが生じるときに通知される。
InputGestureは、また、InputEventArgsを受け取り、InputEventsArgsがInputGestureと関連付けられたイベントの組と一致するかどうかを示す値を返すMatch方法を定義する。
更に、ValidateCallback方法は、InputGestureクラスのサブクラスによって提供される。一致に関してInputGestureに対応する可能性があるすべてのInputBindingsをチェックする前に有効な引数が受け取られたかどうかを判断するためイベントが受け取られる場合、VallidateCallbackがコールされる。InputGestureクラスは、InputGestureのより多くの特定のタイプ(例えば、マウス、キーボード、スタイラスなど)に対するペアレント・クラスとして機能する。
InputGestureクラスのための例示的なインターフェースは、次のものを含む。
Figure 0004420968
InputBindingは、InputGestureをコマンドに関連付ける。例えば、InputBindingオブジェクトは、[コントロール]]−cを「コピー」コマンドと関連付ける。別のInputBindingオブジェクトは、スタイラスのフリックを、「カット」コマンドと関連付ける。InputBindingオブジェクトがInputGesture(イベントの適切な組によって指示される)を得る度に、関連付けられたコマンドが実行される。InputBindingクラスは、InputBinding(例えば、マウス、キーボード、スタイラスなど)のより多くの特定のタイプに対するペアレント・クラスとして機能する。
図10は、この出願に開示されている主題の特徴に従った視覚的なツリーを一般的に表わすブロック図である。グラフィックス・フレームワーク(図12との関係で説明されるものなど)は、視覚的なツリーを用いて、視覚的要素を表示する。視覚的なツリーは、表示する要素を表わす視覚的要素1005−1014を含む。そのような要素は、ウィンドウ、グリッド、リストボックス、コンボ・ボックス、ボタン、テキスト、グラフィックス、パネルなどを含む。視覚的なツリーのいくつかの要素は、視覚的なツリーにおける他の要素を含むことがある。例えば、ウィンドウ要素は、パネルとグリッドとを含む。別の例として、ボタン要素は、テキスト要素と長方形要素とを含む。ある意味では、視覚的なツリーは、階層的データ構造の1つの形式と考えることが可能である。
上述したように、InputBinding(例えばInputGesture)によって特定される入力が受け取られると、InputBindingは、コマンドを生成する。一般に、要素は、それ自体と関連付けられたInputBindingsの集まり(すなわち、0、1、又はそれより多く)を有する。これらのInputBindingsは、時には、「インスタンス」InputBindingsと呼ばれる。更に、InputBindingは、クラス・レベルで、そして、グローバル・レベルで登録される。
図11は、この出願に開示される主題の特徴に従い、InputEventを受け取ることに応答してコマンドを生成する際に生じる動作を一般的に表す流れ図である。ブロック1105において、動作が開始する。
ブロック1110では、InputEventが、受け取られる。例えば、キーボード上の1つのキーが押下される、又は、マウスボタンが押下される。ブロック1110では、フォーカスを備えた要素が選択される。例えば、テキストボックスがフォーカスを有するときにInputEventが受け取られると、テキストボックスが選択される。
ブロック1120では、要素がInputEventのために定義されたインスタンスInputBindingを有するかどうかに関する判断がなされる。ブロック1125では、要素がInputEventのために定義されたInputBindingを有する場合には、動作はブロック1160で継続し、そうでなければ、その動作はブロック1130で継続する。
ブロック1130では、要素がInputEventのために定義したクラスInputBindingを有するかどうかが判断される。ブロック1135では、要素がInputEventのために定義されたクラスInputBindingを有する場合には、動作は、ブロック1160で継続し、そうでなければ、その動作はブロック1140で継続する。
いくつかのインプリメンテーション(実装例)では、クラスInputBindingがInputEventに対して定義されていない場合には、InputEventは、要素への入力として送られる。要素は、一連のキーストローク又は他の入力を「聞く」ことができる。要素がそのような入力に聞いていてその入力を処理する場合には、動作は停止し、そうでなければ、その動作はブロック1140で継続する。
ブロック1140では、ペアレント要素が現在の要素に対して存在するかどうかに関して判断がなされる。存在する場合には、その動作は、ブロック1145で継続し、そうでなければ、その動作はブロック1150で継続する。
ブロック1145では、ペアレント要素が選択される(例えば、ペアレント要素においてInputEventをレイズすることよって)。次に、アンセスタ(先祖)がInputEventに対して定義されたインスタンス又はクラスInputBindingを含むまで、又は、そのようなInputBindingを含むアンセスタが見つからなくなるまで、ブロック1120-1140に関連付けされた動作が反復される。
インスタンス又はクラスInputBindingが見つからない場合には、ブロック1150において、グローバル(広域)なInputBindingがInputEventのために定義されるかどうかに関して判断がなされる。ブロック1155では、グローバルなInputBindingがInputEventに対して定義されている場合には、動作はブロック1160で継続し、そうでなければ、その動作はブロック1165で継続する。
ブロック1160では、発見されたInputBindingに関連付けられたコマンドが実行される。ブロック1165で、動作は終了する。
上記の動作がコマンドの生成に関して大きな柔軟性を提供するということが認識されるだろう。例えば、インスタンス・コマンドによって更に無視される可能性があるクラス・コマンドによって無視されうるグローバル・コマンドは登録されることがある。
RoutedCommandオブジェクト(以下では、「RoutedCommand」)を用いて、コマンドを、視覚的なツリー又はそれ以外のデータ構造を介して、コマンドを処理する要素にルーティングすることができる。例えば、RoutedCommandは、カット、コピー、ペーストなどのようなコマンドと共に用いられることがある。その場合、コマンドのターゲットはフォーカスと共に変化する。
[0070] RoutedCommandは、特定のターゲット要素においてイベントをレイズするか、又は、コマンドが生じるときにフォーカスを有する要素においてイベントをレイズすることによって、コマンドをルーティングする。要素がコマンドに結びつけられている(例えば、後述のCommandBindingによって)場合には、CommandBindingによって定義されたハンドラは、コマンドを処理するためにコールされる。要素がコマンドに結び付けられていない場合には、イベントは、要素のペアレントの上でレイズされる。要素のペアレントがコマンドに結び付けられている場合には、ペアレント要素のCommandBindingによって定義されたハンドラが、コマンドを処理する。要素のペアレントがコマンドに結び付けられていないときには、イベントは、そのペアレントなどの上でレイズされる。結局、要素はコマンドに結び付けられていることがわかるか、又は、コマンドが、どの要素にも処理されることなく、視覚的なツリーの上に到達する。
いくつかのインプリメンテーションでは、クラス及びグローバルなCommandBindingsが、登録され用いられる。そのようなインプリメンテーションでは、適切なCommandBindingの選択は、InputBindingsに関して図11を参照して説明したのと類似の態様で進む。
CommandBindingオブジェクト(以下では、「CommandBinding」)は、そのRoutedCommandと、当該RoutedCommandのためのイベントと関連付けられたイベント・ハンドラにおいてコールするデリゲート(例えば方法)との間の関連性を定義する。コマンドオブジェクトは、実行されると、フォーカスされた要素におけるPreviewCommandExecuteEventとCommandExecuteEventとをファイア(点火)し、パラメータとしてコマンドを送る。同様に、コマンドのIsEnabled方法は、コールされると、フォーカスされた要素におけるCommandQueryEnabledとPreviewCommandQueryEnabledEventとを呼び出す。CommandBindingクラスの例示的な定義には、次のものがある。
Figure 0004420968
図12は、この出願に記載される主題の特徴に従ってコマンドに関連付けられた動作を実行する際に生じる動作を一般的に表わす流れ図である。ブロック1205で、動作は開始する。
ブロック1210では、Execute方法が呼び出される。例えば、ユーザはあるフォーム上でボタンを押す。ブロック1210では、フォーカスを備えた要素が選択される。コマンドが目標とされた(ターゲットの)要素と関連付けられている場合には、その要素が選択される。例えば、目標とされたテキスト・ボックスに関連付けられたExecute方法が呼び出された場合には、テキスト・ボックスが選択される。
ブロック1220では、要素がコマンドに対して定義されたCommandBindingを有しているかどうかに関して判断がなされる。ブロック1225では、要素が当該コマンドに対して定義されたCommandBindingを有する場合、動作はブロック1260で継続し、そうでなければ、動作はブロック1230で継続する。
ブロック1230では、要素がコマンドに対して定義されたCommandBindingを有するかどうかに関して判断がなされる。ブロック1235では、要素がコマンドに対して定義されたCommandBindingを有する場合、動作はブロック1260で継続し、そうでなければ、動作はブロック1240で継続する。
ブロック1240では、ペアレント要素が現在の要素に対して存在するかどうかに関する判断がなされる。存在する場合には、動作はブロック1245で継続すし、そうでなければ、動作はブロック1250で継続する。
ブロック1245では、当該ペアレント元素が選択される(例えば、ペアレント要素においてイベントをレイズすることによって)。次に、当該コマンドに対して定義されたインスタンス又はクラスCommandBindingをアンセスタが含むまで、又は、そのようなCommandBindingを含むアンセスタが見つからなくなるまで、ブロック1220-1240に関連付けられた動作が反復される。
インスタンス又はクラスCommandBindingが見つからない場合、ブロック1250において、グローバルなCommandBindingが当該コマンドに対して定義されテイルかどうかに関して判断がなされる。ブロック1255では、グローバルなCommandBindingがコマンドに対して定義される場合、動作はブロック1260で継続し、そうでなければ、動作はブロック1265で継続する。
ブロック1260では、見つかったCommandBindingによって識別されるハンドラが実行される。ブロック1265で、動作は終了する。
更に、CanExecuteクエリがRoutedCommandと同じ機構によって処理される。例えば、要素がCanExecute方法を含み、当該要素のフォーカスが合っている場合には、当該要素のCanExecute方法がコールされる。そうでなければ、要素のアンセスタに関して、CanExecute方法を見つけるためのサーチがなされる。CanExecuteクエリを実行する際に、RoutedCommandは、フォーカスを備えた要素と選択された要素とのいずれかにおいてCanExecuteEventをレイズする。RoutedCommandのための例示的なインターフェースは次のものを含む。
Figure 0004420968
アプリケーション開発者がフォーカスされた要素の代わりに特定の要素へのRoutedCommandを直接ターゲットとすることをInputElementターゲットが可能にすることに注意すべきである。例えば、アプリケーション開発者が、当該ボタンの次にあるテキストボックスにおいてボタンに常に「サブミット」コマンドを実行させたい、又は、他の何らかの行動を実行させたいときに、これは有用である。
更に、RoutedCommandは、RequerySuggestedのイベントを聞くことができる。RequerySuggestedイベントは、多くの理由で生じる。例えば、フォーカスがテキストボックスの中で選択されたテキストに設定されている場合、カット、コピー及びペースト・コマンド(及び、関連するボタン、メニュ・アイテムなど)をイネーブルすることが必要である。しかし、フォーカスがスクロール・バーに設定されている場合には、カット、コピー及びペーストは適用可能でないから、これらのボタンとコントロールはディセーブルされることが必要となることがある。RequerySuggestedイベントは、1例としてフォーカスが変化する度に、1又は複数の要素において、レイズされる。
RequerySuggestedのイベントが受け取られると、RoutedCommandは、CommandSourceが聞くCanExecuteChangedEventをレイズする。CommandSourceは、その状態を更新するそのCanExecute方法をコールする。
RoutedCommandsは、また、IsRMEnabledプロパティを含む。IsRMEnabledプロパティがフォールス(偽)に設定されている場合には、要素は、CanExecuteがたとえトゥルー(真)であっても、イネーブル状態になることを妨げられる。これは、例えば、様々なコマンドを行なう権利が制限される可能性があるデジタル著作権管理(DRM)システムで機能させるのに用いることができる。
RoutedPropertyは、アプリケーション開発者が、フォーカスと共にターゲットが変化する際にターゲット上で直接定義できないプロパティを定義することを可能にする。例えば、ツールバーは、ボールド、イタリック、下線付などのツールバー・アイテムを含んでいることがある。更に、ツールバーは、テキストボックスとの関連付けが可能であり、テキストは、テキストボックスから選択可能である。例えば、ボールドのツールバー・アイテムが選択される場合には、選択されたテキストのボールド化は、トグル式に切り換え可能である。選択されたテキストがボールドをサポートする場合には、ボールドのツールバー・アイテムをイネーブルすることができる。更に、ツールバー・アイテムは、選択されたテキストがツールバー・アイテムに関連付けられた属性(例えば、ボールド、イタリック、下線付き)を含むかどうかに関して、現在の状態を表示することができる。
RoutedPropertyのための例示的なインターフェースは、次のものを含む。
Figure 0004420968
RoutedPropertyと関連付けられた要素は、コマンドとRoutedCommandsとに関して上述した機構を用いることにより、そのイネーブル/ディセーブル状態を設定することができる。更に、RoutedPropertyは、フォーカスを備えた要素の現在値を得るのに用いて、それがその状態を従って表示するようすることができる。この値は、値を返すフォーカスされた要素においてGetValueEventをファイアすることにより、得られることがある。RoutedPropertyは、また、コマンドを介してフォーカスを有する要素の現在の値(例えば、ボールドからノーマルまで)を設定するのに用いられる。この値は、フォーカスされた要素においてSetValueEventをファイアし、当該値を設定する値のパラメータを送ることにより、設定される。これらのイベントは、RoutedCommandsとの関係で上述したのと同じ方法で伝達可能である。
図13は、この出願に開始されている本発明の特徴が動作する環境を一般的に表すブロック図である。この環境は、プログラム1305、プレゼンテーション・フレームワーク1310、プレゼンテーション・コア1315、ミルコア(milcore)1320、ランタイム・コンポーネント1345、コーデック(codecs)成分1325、ダイレクトX(DirectX)コンポーネント1330、グラフィック・デバイス・インターフェース(GDI)1335、ドライバ1340及びランタイム・モジュール1345を含む。
プレゼンテーション・フレームワーク1310は、ソフトウェア開発者に開示されており、様々なリクエストがなされるAPIを含む。ボタン、リストボックス、コンボ・ボックス、スクロール・バー、スプリッタなどのグラフィックス・フレームワークのトップ・レベル・オブジェクトは、プレゼンテーション・フレームワーク1310に常駐することがある。
プレゼンテーション・コア1315も、様々なリクエストがなされることがあるAPIによってソフトウェア開発者に開示される。上述したインターフェースは、プレゼンテーション・コア1315によって開示されることがある。ImageSourceオブジェクト、ブラシ、ペン、形状(シェープ)、アニメーション・サポート、テキストなどのグラフィックス・フレームワークのトップ・レベル・オブジェクトのプロパティは、プレゼンテーション・コア1315又はプレゼンテーション・フレームワーク1310に常駐することがある。
ミルコア1320は、プレゼンテーション・フレームワーク1310及びプレゼンテーション・コア1315のAPIによって提供される機能性をインプリメントする。ミルコア1320は、プレゼンテーション・コア1315及びプレゼンテーション・フレームワーク1310によってアクセスされる。
ランタイム・コンポーネント1345は、1又は複数のプログラミング言語から作成された中間言語を実行するために環境を提供する。例えば、ランタイム・コンポーネントは、プレゼンテーション・コア1315、プレゼンテーション・フレームワーク1310及びプログラム1305をインプリメントするコードから作成された中間言語を実行するために用いられる。
コーデック1325は、プレゼンテーション・コア1315及びミルコア1320によってイメージをエンコード及びデコードするイメージング・タスクに用いられてもよい。
ダイレクトXコンポーネント1330は、ソフトウェア開発者がハードウェアに特定のコードを書く必要なしに、特別のハードウェア機能(ビデオ及び音声ハードウェア機能のような)にアクセスすることを可能にするAPIを提供することがある。プログラム1305及びミルコア1320は、ダイレクトXコンポーネントを用いて、当該特徴にアクセスする。
GDI1335は、複数のプロセスがビデオ・ディスプレイにグラフィクス及びフォーマットされたテキストを表示することを可能にし、また、そのようなプロセスに代わってグラフィクスやフォーマットされたテキストを表示するデバイス・ドライバと対話することができる。
ドライバ1340は、ランタイム1345が様々なプログラミング言語から生成された中間コードを実行するのに用いられる間に、ハードウェアとのインターフェースに用いることができる。
図13の環境の様々なコンポーネントの間で何本かの線が引かれ、これらのコンポーネントの間での通信可能性が示されているが、本発明の精神又は範囲から逸脱することなく、これよりも多い、少ない又は他の通信経路が存在しうる。更に、この環境の様々な成分が記載されているが、本発明の精神又は範囲から逸脱することなく、これより多い、少ない又は別のコンポーネントを用いたり、他の構成に構成することが可能である。
ここに記述された主題の様相が入力(抽象的なインプリメンテーション)を抽象するために用いられてもよいことは、認識されるだろう。これは、アプリケーション開発者がメニュー、ツールバー及び他のUI要素をより容易に作成することを可能にする。例えば、アプリケーション開発者は、マークアップ言語でコマンドにメニュー品かツールバー・アイテムを関連させることにより、より容易にメニューかツールバーを作成することがある。更に、標準コマンド(例えばカット、コピー、貼り付けなど)を定義するコマンドライブラリは作られることがある。コマンドが出される場合、インプリメンテーションが抽象されるので、要素又はその被相続人用の適切なハンドラは自動的に呼ばれる。
以上の詳述から見ることができるように、様相はユーザ・インタフェースに関連して記述された。ここに記述された主題の様相が様々な変更及び代替構造(それの絵入りの実施例が図面中で示され、上に詳細に記述されてある)に弱い間。しかしながら、要求された主題の様相を示された特定形態に制限する意図がないことは理解されるに違いない。しかし、これに反して、意図は、変更、代替構造、及びここに記述された主題の種々相のスピリット及びスコープ以内にある等価物をすべてカバーすることである。
本発明の複数の特徴を組み入れることができるコンピュータ・システムを表すブロック図である。 本発明の複数の特徴に従って動作する例示的なアプリケーション・プログラミング・インターフェース(API)を表すブロック図である。 本発明の複数の特徴に従って動作する例示的なアプリケーション・プログラミング・インターフェース(API)を表すブロック図である。 本発明の複数の特徴に従って動作する例示的なアプリケーション・プログラミング・インターフェース(API)を表すブロック図である。 本発明の複数の特徴に従って動作する例示的なアプリケーション・プログラミング・インターフェース(API)を表すブロック図である。 本発明の複数の特徴に従って動作する例示的なアプリケーション・プログラミング・インターフェース(API)を表すブロック図である。 本発明の複数の特徴に従って、コンパイラ又はインタプリタが1又は複数のインターフェースを1又は複数の別のインターフェースにどのように変換するかを一般的に表すブロック図である。 本発明の複数の特徴に従って、コンパイラ又はインタプリタが1又は複数のインターフェースを1又は複数の別のインターフェースにどのように変換するかを一般的に表すブロック図である。 本発明の複数の特徴に従って、コントロール・テンプレートとして用いられるスクロール・バー・コントロールを表すブロック図である。 本発明の複数の特徴による視覚的ツリーを一般的に表すブロック図である。 本発明の複数の特徴に従って、InputEventを受け取ることに応答してコマンドを生成する際に生じる動作を一般的に表す流れ図である。 本発明の複数の特徴に従って、コマンドと関連付けられた動作を実行する際に生じる動作を一般的に表す流れ図である。 本発明の複数の特徴による環境を一般的に表すブロック図である。

Claims (20)

  1. インターフェースにおいて、コマンドを実行する命令を受け取る動作と、
    前記命令に応答して、前記コマンドと関連付けられたコマンド・バインディング・オブジェクトを階層的なデータ構造を横断することにより発見することを試みる動作と、
    前記コマンドと関連付けられ、前記コマンドと第1の命令とを関連付けるバインディング情報を含む第1の高レベルコマンド・バインディング・オブジェクトを決定する動作と、
    前記コマンドと関連付けられ、前記コマンドと前記第1の命令と異なる第2の命令とを関連付けるバインディング情報を含む第2の低レベルコマンド・バインディング・オブジェクトを決定する動作と、
    前記第1の高レベルコマンド・バインディング・オブジェクトのバインディング情報を前記第2の低レベルコマンド・バインディング・オブジェクトのバインディング情報により無効化して、前記第2の低レベルコマンド・バインディング・オブジェクトのバインディング情報を使用する動作と、
    コンピュータで実行する命令を含むことを特徴とする少なくとも1つのコンピュータ可読媒体。
  2. 請求項1記載の少なくとも1つのコンピュータ可読媒体において、前記コマンドと関連付けられたオブジェクトを階層的なデータ構造を横断することにより発見することを試みる前記動作は、フォーカスを用いて要素を選択する動作と、コマンド・バインディング・オブジェクトが前記要素を前記コマンドと関連付けるかどうかを判断する動作と、を含むことを特徴とする少なくとも1つのコンピュータ可読媒体。
  3. 請求項2記載の少なくとも1つのコンピュータ可読媒体において、前記コマンドと関連付けられたオブジェクトを階層的なデータ構造を横断することにより発見することを試みる前記動作は、フォーカスを用いて前記要素のアンセスタを選択する動作と、コマンド・バインディング・オブジェクトが前記アンセスタを前記コマンドと関連付けるかどうかを判断する動作と、を更に含むことを特徴とする少なくとも1つのコンピュータ可読媒体。
  4. 請求項2記載の少なくとも1つのコンピュータ可読媒体において、前記コマンドと関連付けられたオブジェクトを階層的なデータ構造を横断することにより発見することを試みる前記動作は、コマンド・バインディング・オブジェクトが前記要素を含むクラスを前記コマンドと関連付けるかどうかを判断する動作を更に含むことを特徴とする少なくとも1つのコンピュータ可読媒体。
  5. 請求項2記載の少なくとも1つのコンピュータ可読媒体において、前記コマンドと関連付けられたオブジェクトを階層的なデータ構造を横断することにより発見することを試みる前記動作は、グローバル・コマンド・バインディング・オブジェクトが前記コマンドと関連付けられているかどうかを判断する動作を更に含むことを特徴とする少なくとも1つのコンピュータ可読媒体。
  6. 請求項2記載の少なくとも1つのコンピュータ可読媒体において、前記階層的データ構造は複数の要素の間の関係を含む視覚的ツリーを含み、前記要素はそれぞれがグラフィカル・ユーザ・インターフェースにおいて表現可能であることを特徴とするコンピュータ可読媒体。
  7. インターフェースにおいて、入力イベントを受け取る動作と、
    前記入力イベントに応答して、グラフィカル・ユーザ・インターフェースにおいて表現された要素は前記入力イベントに対して定義されたインスタンス・クラス・バインディングを有するかどうかを判断する動作と、
    前記コマンドと関連付けられ、前記コマンドとクラス命令とを関連付けるバインディング情報を含むクラス・コマンド・バインディング・オブジェクトを決定する動作と、
    前記コマンドと関連付けられ、前記コマンドとインスタンス命令とを関連付けるバインディング情報を含むインスタンス・コマンド・バインディング・オブジェクトを決定する動作と、
    前記クラス・コマンド・バインディング・オブジェクトのバインディング情報を前記インスタンス・コマンド・バインディング・オブジェクトのバインディング情報により無効化して、前記インスタンス・コマンド・バインディング・オブジェクトのバインディング情報を使用する動作と、
    コンピュータにより実行する命令を含むことを特徴とする少なくとも1つのコンピュータ可読媒体。
  8. 請求項7記載の少なくとも1つのコンピュータ可読媒体において、前記入力イベントに応答して前記要素が前記入力イベントに対して定義されたクラス入力バインディングを有するかどうかを判断する動作を更に含み、前記クラス入力バインディングは、当該クラス入力バインディングのタイプを有する要素をコールする方法を定義することを特徴とするコンピュータ可読媒体。
  9. 請求項8記載の少なくとも1つのコンピュータ可読媒体において、前記要素のペアレントが前記入力イベントに対して定義されたインスタンス入力バインディングを有するかどうかを当該入力イベントが判断する動作を更に含むことを特徴とするコンピュータ可読媒体。
  10. 請求項8記載の少なくとも1つのコンピュータ可読媒体において、前記要素のアンセスタが前記入力イベントに対して定義されたインスタンス又はクラス入力バインディングを有しない場合には、前記入力イベントに対してグローバル入力バインディングが定義されているかどうかを判断する動作を更に含むことを特徴とするコンピュータ可読媒体。
  11. 請求項7記載の少なくとも1つのコンピュータ可読媒体において、前記入力イベントは入力ソースに応答して生成され、入力ソースは少なくともキーボード、マウス、スタイラス又は音声コマンドを捕捉するマイクロフォンから構成されることを特徴とするコンピュータ可読媒体。
  12. 請求項7記載の少なくとも1つのコンピュータ可読媒体において、前記要素が前記入力イベントと関連付けられた入力バインディングを有する場合には前記入力バインディングと関連付けられたコマンドを実行する動作を更に含むことを特徴とするコンピュータ可読媒体。
  13. 請求項12記載の少なくとも1つのコンピュータ可読媒体において、前記入力バインディングと関連付けられたコマンドを実行する前記動作は、前記コマンドをハンドラと関連付けるコマンド・バインディングを有する要素に対する視覚的表現を有する要素の視覚的ツリーをサーチする動作を含むことを特徴とするコンピュータ可読媒体。
  14. 請求項7記載の少なくとも1つのコンピュータ可読媒体において、前記入力バインディングは入力ジェスチャをコマンドと関連付け、前記入力ジェスチャは1又は複数のイベントの組と関連付けられ、前記入力ジェスチャは前記1又は複数のイベントの中の任意のものが生じるかどうかを告知されることを特徴とするコンピュータ可読媒体。
  15. 請求項7記載の少なくとも1つのコンピュータ可読媒体において、グラフィカル・ユーザ・インターフェースにおいて表現された要素が、フォーカスを備えた要素を選択する動作を含む入力イベントに対して定義されたインスタンス・バインディングを有するかどうかを判断し、かつ、コマンド・バインディング・オブジェクトが前記要素と前記コマンドとを関連付けるか否かを判定する動作を含むことを特徴とするコンピュータ可読媒体。
  16. 請求項15記載の少なくとも1つのコンピュータ可読媒体において、グラフィカル・ユーザ・インターフェースにおいて表現された要素が前記入力イベントに対して定義されたインスタンス・バインディングを有するかどうかを判断する前記動作が、フォーカスを用いて前記要素のアンセスタを選択する動作と、コマンド・バインディング・オブジェクトが前記アンセスタを前記コマンドと関連付けるかどうかを判断する動作と、を更に含むことを特徴とする少なくとも1つのコンピュータ可読媒体。
  17. 計算環境における方法であって、
    入力イベントを受け取るステップと、
    前記入力イベントを方向付ける視覚的要素を選択するステップと、
    前記入力イベントを含む入力ジェスチャをコマンドと関連付けるバインディング情報を含むバインディング・オブジェクトを前記視覚的要素が含むかどうかを判断するステップと、
    前記コマンドと関連付けられ、前記コマンドと第1の命令とを関連付けるバインディング情報を含む第1の高レベルコマンド・バインディング・オブジェクトを決定する動作と、
    前記コマンドと関連付けられ、前記コマンドと前記第1の命令と異なる第2の命令とを関連付けるバインディング情報を含む第2の低レベルコマンド・バインディング・オブジェクトを決定する動作と、
    フォーカスと共に変化するコマンド・ターゲット上でコマンドを使用可能にするルーティング・コマンドを使用して、前記コマンドを前記第2の命令にルーティングする動作と、
    前記第1の高レベルコマンド・バインディング・オブジェクトのバインディング情報を前記第2の低レベルコマンド・バインディング・オブジェクトのバインディング情報により無効化して、前記第2の低レベルコマンド・バインディング・オブジェクトのバインディング情報を使用する動作と、
    を含むことを特徴とする方法。
  18. 請求項17記載の方法において、前記入力ジェスチャをコマンドと関連付けるバインディングを前記視覚的要素が含まない場合には、前記入力ジェスチャをコマンドと関連付けるクラス・バインディングと前記要素が関連付けされているかどうかを判断するステップを更に含むことを特徴とする方法。
  19. 請求項18記載の方法において、前記視覚的要素のペアレントのバインディングが前記入力ジェスチャをコマンドと関連付けるかどうかを判断するステップを更に含むことを特徴とする方法。
  20. 請求項17記載の方法において、ルーティングされたコマンド・オブジェクトを介してコマンドを実行するステップを更に含み、前記ルーティングされたコマンド・オブジェクトは、前記コマンドと関連付けられた方法を有する要素を発見するために階層的データ構造をサーチするのに用いられることを特徴とする方法。
JP2008529246A 2005-08-30 2006-08-29 コマンディングのために方法及びコンピュータ可読媒体 Expired - Fee Related JP4420968B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/215,575 US7568035B2 (en) 2005-08-30 2005-08-30 Command binding determination and implementation
PCT/US2006/033926 WO2007027815A1 (en) 2005-08-30 2006-08-29 Method and computer-readable medium for commanding

Publications (3)

Publication Number Publication Date
JP2009506465A JP2009506465A (ja) 2009-02-12
JP2009506465A5 JP2009506465A5 (ja) 2009-09-10
JP4420968B2 true JP4420968B2 (ja) 2010-02-24

Family

ID=37805656

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008529246A Expired - Fee Related JP4420968B2 (ja) 2005-08-30 2006-08-29 コマンディングのために方法及びコンピュータ可読媒体

Country Status (6)

Country Link
US (1) US7568035B2 (ja)
EP (1) EP1922610A4 (ja)
JP (1) JP4420968B2 (ja)
KR (1) KR101238550B1 (ja)
CN (1) CN101253474A (ja)
WO (1) WO2007027815A1 (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7707255B2 (en) 2003-07-01 2010-04-27 Microsoft Corporation Automatic grouping of electronic mail
US8146016B2 (en) 2004-08-16 2012-03-27 Microsoft Corporation User interface for displaying a gallery of formatting options applicable to a selected object
US8255828B2 (en) 2004-08-16 2012-08-28 Microsoft Corporation Command user interface for displaying selectable software functionality controls
US7703036B2 (en) 2004-08-16 2010-04-20 Microsoft Corporation User interface for displaying selectable software functionality controls that are relevant to a selected object
US9015621B2 (en) 2004-08-16 2015-04-21 Microsoft Technology Licensing, Llc Command user interface for displaying multiple sections of software functionality controls
US20060253831A1 (en) * 2005-05-03 2006-11-09 Microsoft Corporation Validation architecture
US8627222B2 (en) 2005-09-12 2014-01-07 Microsoft Corporation Expanded search and find user interface
US9727989B2 (en) 2006-06-01 2017-08-08 Microsoft Technology Licensing, Llc Modifying and formatting a chart using pictorially provided chart elements
US20080168402A1 (en) 2007-01-07 2008-07-10 Christopher Blumenberg Application Programming Interfaces for Gesture Operations
US7844915B2 (en) 2007-01-07 2010-11-30 Apple Inc. Application programming interfaces for scrolling operations
US20080168478A1 (en) * 2007-01-07 2008-07-10 Andrew Platzer Application Programming Interfaces for Scrolling
US8436815B2 (en) * 2007-05-25 2013-05-07 Microsoft Corporation Selective enabling of multi-input controls
US8484578B2 (en) 2007-06-29 2013-07-09 Microsoft Corporation Communication between a document editor in-space user interface and a document editor out-space user interface
US8762880B2 (en) 2007-06-29 2014-06-24 Microsoft Corporation Exposing non-authoring features through document status information in an out-space user interface
WO2009043033A2 (en) 2007-09-28 2009-04-02 Xcerion Aktiebolag Network operating system
US8174502B2 (en) * 2008-03-04 2012-05-08 Apple Inc. Touch event processing for web pages
US8645827B2 (en) 2008-03-04 2014-02-04 Apple Inc. Touch event model
US8416196B2 (en) * 2008-03-04 2013-04-09 Apple Inc. Touch event model programming interface
US8717305B2 (en) * 2008-03-04 2014-05-06 Apple Inc. Touch event model for web pages
US9588781B2 (en) * 2008-03-31 2017-03-07 Microsoft Technology Licensing, Llc Associating command surfaces with multiple active components
US9665850B2 (en) 2008-06-20 2017-05-30 Microsoft Technology Licensing, Llc Synchronized conversation-centric message list and message reading pane
US8285499B2 (en) * 2009-03-16 2012-10-09 Apple Inc. Event recognition
US8566045B2 (en) 2009-03-16 2013-10-22 Apple Inc. Event recognition
US9311112B2 (en) * 2009-03-16 2016-04-12 Apple Inc. Event recognition
US9684521B2 (en) 2010-01-26 2017-06-20 Apple Inc. Systems having discrete and continuous gesture recognizers
US8566044B2 (en) * 2009-03-16 2013-10-22 Apple Inc. Event recognition
US20100325565A1 (en) * 2009-06-17 2010-12-23 EchoStar Technologies, L.L.C. Apparatus and methods for generating graphical interfaces
US9268404B2 (en) * 2010-01-08 2016-02-23 Microsoft Technology Licensing, Llc Application gesture interpretation
US8552999B2 (en) 2010-06-14 2013-10-08 Apple Inc. Control selection approximation
US20130181945A1 (en) * 2010-09-22 2013-07-18 Nec Casio Mobile Communications, Ltd. Display device, display method, program for the device and the method, and terminal device
US20120198353A1 (en) * 2011-01-28 2012-08-02 Microsoft Corporation Transferring data using a physical gesture
US9298363B2 (en) 2011-04-11 2016-03-29 Apple Inc. Region activation for touch sensitive surface
US9733716B2 (en) 2013-06-09 2017-08-15 Apple Inc. Proxy gesture recognizer
EP3509635A1 (en) 2016-09-06 2019-07-17 Vavotar Life Sciences LLC Methods of treating triple-negative breast cancer using compositions of antibodies and carrier proteins
JP6651275B1 (ja) * 2019-08-01 2020-02-19 株式会社ディスコ 加工装置
CN113126992A (zh) * 2021-05-11 2021-07-16 南京炫佳网络科技有限公司 一种控件元素的控制方法、装置、设备及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5237654A (en) * 1990-04-17 1993-08-17 International Business Machines Corporation Hierarchical inter-panel process flow control
US5761656A (en) 1995-06-26 1998-06-02 Netdynamics, Inc. Interaction between databases and graphical user interfaces
US7302670B2 (en) 2000-12-21 2007-11-27 Bryan Darrell Bowyer Interactive interface resource allocation in a behavioral synthesis tool
JP4558255B2 (ja) * 2002-01-28 2010-10-06 三菱電機インフォメーションテクノロジー株式会社 エミュレータ端末への表示データダウンロード方法
JP2004334332A (ja) * 2003-04-30 2004-11-25 Ricoh Co Ltd 多次元データベース参照プログラム
US7721254B2 (en) * 2003-10-24 2010-05-18 Microsoft Corporation Programming interface for a computer platform
US7386856B2 (en) * 2003-11-18 2008-06-10 Microsoft Corporation Extension of commanding to control level

Also Published As

Publication number Publication date
EP1922610A4 (en) 2011-09-21
EP1922610A1 (en) 2008-05-21
KR101238550B1 (ko) 2013-03-04
US7568035B2 (en) 2009-07-28
US20070050469A1 (en) 2007-03-01
CN101253474A (zh) 2008-08-27
JP2009506465A (ja) 2009-02-12
KR20080041211A (ko) 2008-05-09
WO2007027815A1 (en) 2007-03-08

Similar Documents

Publication Publication Date Title
JP4420968B2 (ja) コマンディングのために方法及びコンピュータ可読媒体
Guerrero-Garcia et al. A theoretical survey of user interface description languages: Preliminary results
US7437715B2 (en) System and method for generating a set of robot commands based on user entry events in a user interface
US7676785B2 (en) Hosted application as a designer in an integrated development environment
US8201143B2 (en) Dynamic mating of a modified user interface with pre-modified user interface code library
US20040145601A1 (en) Method and a device for providing additional functionality to a separate application
US20060117267A1 (en) System and method for property-based focus navigation in a user interface
US20100318894A1 (en) Modifications to Editable Elements of Web Pages Rendered in Word Processor Applications
EP2136292A1 (en) Service program generation technology
US20060253831A1 (en) Validation architecture
US20060200760A1 (en) Method and system for displaying and interacting with paginated content
CN108027721B (zh) 用于使用控件来配置通用程序的技术
US7631272B2 (en) Focus scope
KR20060101221A (ko) 풍부한 데이터 바인딩된 애플리케이션
JP2006506698A (ja) マルチメディア・ファイルのツールチップ
US20080155406A1 (en) Gui generation apparatus and method for generating gui
CN113032273B (zh) 一种应用程序的调试方法、装置、计算机设备和存储介质
US20230004362A1 (en) Code execution and data processing pipeline
US8302070B2 (en) Output styling in an IDE console
CN112395843A (zh) 一种基于php代码的业务处理方法、装置及设备和介质
US20230236910A1 (en) Systems and Methods for Executing Robotic Process Automation (RPA) Within a Web Browser
US20060236244A1 (en) Command links
US8719704B2 (en) Seamless integration of additional functionality into enterprise software without customization or apparent alteration of same
CN113419711A (zh) 页面引导方法、装置、电子设备及存储介质
WO2006051973A1 (ja) 文書処理装置及び文書処理方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090721

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090721

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20090812

TRDD Decision of grant or rejection written
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20091102

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20091106

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091201

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121211

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4420968

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121211

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131211

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees