(57)【特許請求の範囲】
【請求項１】
文書アプリケーションプログラムにおけるコマンドを表示するためにコンピュータが実行する方法であって、
アプリケーションプログラム内のユーザのコンテキストを決定するステップであって、前記コンテキストは、前記アプリケーションプログラム中の１つ以上の、前記コンピュータによって検出される状態から決定され、ユーザが実施を試みているタスクに関係する、ステップと、
該ユーザのコンテキストに基づいて前記ユーザに対しディスプレイ上に前記コンテキストに応じたコマンドのセットを含むコンテキストブロックを表示するステップであって、前記コンピュータには、前記コンテキストブロックを表示するために使用される前記コンテキストブロックのタイトルおよび前記コンテキストブロックにおけるコマンドのセットを含む情報を格納する、ステップと
を備え、前記コンテキストブロックは、前記コンテキストブロックを表示する条件を記述するブール式に関連し、前記コンピュータには、前記コンテキストブロックのタイトルと前記コンテキストブロックに関連するブール式とを関連付ける情報を格納し、前記ユーザのコンテキストを決定するステップは、前記ユーザのコンテキストの変化に応答して、各コンテキストブロックを隠すか、または表示するかを決定するステップを含み、前記各コンテキストブロックを隠すか、または表示するかを決定するステップは、
ａ）コンテキストブロックに関連するブール式を、複数のノードを有するツリー構造として表し、前記ツリー構造を取得するステップであって、前記ノードは、前記コンピュータによって検出される状態を示すオペランド、または前記ノードの子ノードに対する演算に対応する、ステップと、
ｂ）前記ツリー構造上の１つのリーフノードを取得するステップと、
ｃ）前記取得したノードの値を求め、前記ノードの値が前記ユーザのコンテキストの変化により変化したかどうかを決定するステップと、
ｄ）前記ステップｃ）で前記ノードの値が変化していないと決定した場合には、前記ツリー構造上に他のリーフノードがあるかどうかを決定し、他のリーフノードがある場合に、他のリーフノードを取得し、前記ステップｃ）に戻るステップと、
ｅ）前記ステップｃ）で前記ノードの値が変化したと決定した場合には、前記ノードは親ノードがあるかどうかを決定するステップと、
ｆ）前記ステップｅ）で前記ノードは親ノードがないと決定した場合に、求めた前記ノードの値が真であれば、前記コンテキストブロックを表示する条件を満たしていると判定して、前記ツリー構造のブール式に関連するコンテキストブロックを表示すると決定し、求められた前記ノードの値が真でなければ、前記コンテキストブロックを表示する条件を満たしていないと判定して、前記ツリー構造のブール式に関連するコンテキストブロックを隠すと決定するステップと、
ｇ）前記ステップｅ）で前記ノードは親ノードがあると決定した場合に、親ノードを取得し、ステップｃ）に戻るステップと
を含むことを特徴とする方法。
【請求項２】
前記表示するステップによって前記ユーザが作業をしている文書が覆い隠されないことを特徴とする請求項１に記載の方法。
【請求項３】
前記コンテキストブロックにおけるコマンドを前記コンテキストブロックが表示される間に前記ユーザが文書内で作業を続行することができるようなモードレスの形態で表示することを特徴とする請求項１に記載の方法。
【請求項４】
前記表示するステップの後に、前記コマンドを選択すること以外にユーザによる操作を必要とせずにコマンドを実行するステップをさらに備えたことを特徴とする請求項１に記載の方法。
【請求項５】
前記ユーザのコンテキストを決定するステップは、前記アプリケーションプログラムによって提供される文書内のユーザのカーソル位置を確認するステップを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記ユーザのコンテキストを決定するステップは、前記アプリケーションプログラムによって提供される文書内のユーザの選択を確認するステップを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記ユーザのコンテキストを決定するステップは、
前記アプリケーションプログラムによって提供される文書内のユーザのカーソル位置を確認するステップ、および
前記アプリケーションプログラムによって提供される文書内のユーザの選択を確認するステップのうち1つまたは2つを含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記コンテキストは、前記ユーザが作業中の文書のタイプ、前記ユーザが作業中の文書の状態、文書内のカーソルの位置、および文書内の特定のユーザ選択のうち1つまたは2つに関係することを特徴とする請求項１に記載の方法。
【請求項９】
前記表示するステップは、表示されたメニュー項目のいずれをユーザが選択することとは無関係であることを特徴とする請求項１に記載の方法。
【請求項１０】
前記表示するステップは、コンテキストブロックにラベル付けるタイトルバーエリアを有するコンテキストブロックを表示するステップを含むことを特徴とする請求項１に記載の方法。
【請求項１１】
前記タイトルバーエリアは、前記コンテキストブロックを展開された状態と縮小された状態との間で切り換えることが可能となるように構成されたことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記タイトルバーエリアは、前記コンテキストブロックに関連するメニューを表示することが可能となるように構成されたメニューディスプレイボタンを有することを特徴とする請求項１０に記載の方法。
【請求項１３】
前記メニューディスプレイボタンは、1つまたは2つ以上のコンテキストペインへのリンクを含むメニューに関連し、各コンテキストペインは、追加のコンテキスト感応型コマンドを有することを特徴とする請求項１２に記載の方法。
【請求項１４】
前記表示するステップは、コマンドを前記ユーザに表示する制御エリアを有するコンテキストブロックを表示するステップを含むことを特徴とする請求項１に記載の方法。
【請求項１５】
前記制御エリア内のコマンドの表示は、HTMLで定義されることを特徴とする請求項１４に記載の方法。
【請求項１６】
前記表示するステップは、前記少なくとも1つのコンテキストブロックをモードレスに表示することを含むことを特徴とする請求項１に記載の方法。
【請求項１７】
前記コンテキストブロックにおけるコマンドが表示されている間、前記ユーザが種々のコマンドを複数回選択し、および適用することができるようにするステップを備えたことを特徴とする請求項１に記載の方法。
【請求項１８】
1つまたは2つ以上のコマンドがユーザによって選択されたとき、さらにユーザと対話することなく前記1つまたは2つ以上の選択されたコマンドを適用するステップをさらに備えたことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記表示するステップは、コンテキスト感応型コマンドを含むコンテキストブロックであって、自動的に出現および消滅するコンテキストブロックによってサポートされるメニューから、前記ユーザの選択に応答して前記コマンドを表示するステップを含むことを特徴とする請求項１７に記載の方法。
【請求項２０】
前記表示するステップは、前記コマンドをモードレスに表示するステップを含むことを特徴とする請求項１７に記載の方法。
【請求項２１】
前記表示するステップは、コンテキストペインにラベル付けるタイトルバーと前記コマンドを前記ユーザに表示する制御エリアとを有するコンテキストペイン内に前記コマンドを表示するステップを含むことを特徴とする請求項１７に記載の方法。
【請求項２２】
前記コンテキストペインは、縮小可能ではないことを特徴とする請求項２１に記載の方法。
【請求項２３】
前記コンテキストペインは、前記ユーザによって閉じられなければならないことを特徴とする請求項２１に記載の方法。
【請求項２４】
前記ユーザは、表示されるべきコンテキストペインを要求しなければならないことを特徴とする請求項２１に記載の方法。
【請求項２５】
前記制御エリア内の前記コマンドのうちのいくつかは、コンテキスト感応型とすることができ、およびそれらのコマンドがコンテキスト外である場合に使用不能となることを特徴とする請求項２１に記載の方法。
【請求項２６】
前記コンテキストペインは、コンテキストペインとコンテキストの点から関係するヘルプ情報を表示するコンテキスト感応型ヘルプ機能を含むことを特徴とする請求項２１に記載の方法。
【請求項２７】
前記ヘルプ機能は、前記タイトルバー上のアイコンを介してアクセス可能であることを特徴とする請求項２６に記載の方法。
【請求項２８】
前記ヘルプ機能は、モードレスに表示されることを特徴とする請求項２６に記載の方法。
【請求項２９】
複数のコンテキストペインは、キュー内にスタック可能であることを特徴とする請求項２１に記載の方法。
【請求項３０】
前記コンテキストブロックのタイトルと前記コンテキストブロックに関連するブール式とを関連付ける情報は、テーブルで格納することを特徴とする請求項１に記載の方法。
【請求項３１】
文書アプリケーションプログラムにおけるコマンドを表示するための方法をコンピュータに実行させるコンピュータ読み取り可能な命令を有する1つまたは2つ以上のコンピュータ読み取り可能な記録媒体であって、前記命令は、
アプリケーションプログラム内のユーザのコンテキストを決定するステップであって、前記コンテキストは、前記アプリケーションプログラム中の１つ以上の、前記コンピュータによって検出される状態から決定され、ユーザが実施を試みているタスクに関係する、ステップと、
前記ユーザのコンテキストに基づいて、前記ユーザのためのディスプレイ上に前記コンテキストに応じたコマンドのセットを含むコンテキストブロックを表示するステップであって、前記コンピュータには、前記コンテキストブロックを表示するために使用される前記コンテキストブロックのタイトルおよび前記コンテキストブロックにおけるコマンドのセットを含む情報を格納し、前記コンテキストブロックにおけるコマンドは、モードレスに表示され、前記コンテキストブロックが表示される間に前記アプリケーションプログラムによって提供される文書内で前記ユーザが作業を続行することができるようにした、ステップと
を前記コンピュータに実行させ、前記コンテキストブロックは、前記コンテキストブロックを表示する条件を記述するブール式に関連し、前記コンピュータには、前記コンテキストブロックのタイトルと前記コンテキストブロックに関連するブール式とを関連付ける情報を格納し、前記ユーザのコンテキストを決定するステップは、前記ユーザのコンテキストの変化に応答して、各コンテキストブロックを隠すか、または表示するかを決定するステップを含み、前記各コンテキストブロックを隠すか、または表示するかを決定するステップは、
ａ）コンテキストブロックに関連するブール式を、複数のノードを有するツリー構造として表し、前記ツリー構造を取得するステップであって、前記ノードは、前記コンピュータによって検出される状態を示すオペランド、または前記ノードの子ノードに対する演算に対応する、ステップと、
ｂ）前記ツリー構造上の１つのリーフノードを取得するステップと、
ｃ）前記取得したノードの値を求め、前記ノードの値が前記ユーザのコンテキストの変化により変化したかどうかを決定するステップと、
ｄ）前記ステップｃ）で前記ノードの値が変化していないと決定した場合には、前記ツリー構造上に他のリーフノードがあるかどうかを決定し、他のリーフノードがある場合に、他のリーフノードを取得し、前記ステップｃ）に戻るステップと、
ｅ）前記ステップｃ）で前記ノードの値が変化したと決定した場合には、前記ノードは親ノードがあるかどうかを決定するステップと、
ｆ）前記ステップｅ）で前記ノードは親ノードがないと決定した場合に、求めた前記ノードの値が真であれば、前記コンテキストブロックを表示する条件を満たしていると判定して、前記ツリー構造のブール式に関連するコンテキストブロックを表示すると決定し、求められた前記ノードの値が真でなければ、前記コンテキストブロックを表示する条件を満たしていないと判定して、前記ツリー構造のブール式に関連するコンテキストブロックを隠すと決定するステップと、
ｇ）前記ステップｅ）で前記ノードは親ノードがあると決定した場合に、親ノードを取得し、ステップｃ）に戻るステップと
を含むことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項３２】
前記コンピュータは、
前記アプリケーションプログラムによって提供される文書内のユーザのカーソル位置を確認するステップおよび
前記アプリケーションプログラムによって提供される文書内のユーザの選択を確認するステップのうち1つまたは2つを実行することによって前記ユーザのコンテキストを決定することを特徴とする請求項３１に記載のコンピュータ読み取り可能な記録媒体。
【請求項３３】
前記命令は、さらに前記コンピュータに
前記コンテキストブロックにおけるコマンドが表示されている間、前記ユーザが種々のコマンドを複数回選択し、および適用することができるようにするステップを実行させることを特徴とする請求項３１に記載のコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
(技術分野)
本発明は一般に、ソフトウェアアプリケーションプログラム内でコマンドを表示する方法およびシステムに関する。
【０００２】
(発明の背景)
一般に、アプリケーションプログラムは、特定のアプリケーションプログラムで作業しているときにユーザが使用できる個々のコマンドを含むコマンドセットを含む。これらのコマンドは、アプリケーションプログラムの目的に特有のものである。例えば、ワードプロセッシングアプリケーションプログラムは一般に、文書のテキストおよび/またはフォーマットを操作するのに使用することができるコマンドセットを含む。しかしこれらのコマンドセットは、常に望む通りに容易に使用できるわけではない。このコンテキストは、ユーザが現在使用しているアプリケーションプログラムのコマンドセットにユーザが精通していないときに悪化する可能性がある。
【０００３】
アプリケーションプログラムコマンドセットに伴う現在の問題には、多数のコマンドがコマンドセット中に含まれるために、アプリケーションプログラムコマンドセットの使用またはブラウズが困難となる可能性があること、ならびにユーザが文書を使用しようとするときに、しばしばアプリケーションプログラムコマンドセットが一時的にその文書を覆い隠す可能性があることが含まれる。加えて、コマンドセットは一般に、ユーザが関与している可能性のないタスクに関係した方式で提示される。
【０００４】
コマンドセットをブラウズする困難さに関し、以下のことを考慮する。コマンドセットは一般に、利用可能な数多くの異なるコマンドを含むことができる。典型的なユーザディスプレイでは、作業エリアを不快に覆い隠すことなく情報を提示するには限られたスペースしかないので、必然的に、すべてのコマンドを常にユーザに対して表示することはできない。この問題に対処するため、その解決策として、あるコマンドを表示することができ、かつユーザがブラウズすることができるメニュー構造を含む静的なツールバーを提供するものが含まれていた。例えば、例示的ユーザディスプレイ10を示す図１を考えてみる。例示的ユーザディスプレイ10は、メニュー構造14と、コマンド16の集合とを含むツールバー12を含む。メニュー構造14は、個々のエントリ、例えば「ファイル」、「編集」、「表示」、「挿入」などを含む。これらの各エントリは、そのエントリに論理的に関係する個々のコマンドの集合を含むドロップダウンメニューに関連付けられる。例えば、「ファイル」エントリでは、個々のドロップダウンメニューアクセス可能なコマンドには、「新規作成」、「開く」、「閉じる」、「印刷」、「印刷プレビュー」、および「オプション」選択を介してアクセス可能な追加のコマンドが含まれる。「オプション」選択は、ドロップダウンメニューをさらに展開して、その追加のコマンドを表示する。メニュー構造14内の最上行の各メニューエントリは、ドロップダウンメニューと関連付けることができる。さらに、コマンドの一部は、大きなグループ(フォント形式設定ダイアログなど)にまとめられ、このグループ内のコマンドを見つけるためには、ユーザはフォント形式設定が何であるかを知っている必要がある。言うまでもなく、利用可能なコマンドの数はしばしば非常に多くなる可能性があり、したがってそれらをブラウズするのは容易な仕事ではない。加えて、この手法の本質的に非効率な点は、表示されるコマンドのほとんどではないとしてもその多くが、ユーザが現在探しているコマンドとはほとんど、または全く関係ないことである。実際しばしば、コマンドのうちの多くは、現タスクとは関連しないのでグレー表示され、使用不能にされる。それでも、そのコマンドはコマンドの全サブセットに表示される。
【０００５】
ユーザがアプリケーションプログラムにあまり精通しておらず、または全く精通していないときにこの問題がいかに悪化するかを考えてみる。(恐らく「ヘルプ」ダイアログを除いて)説明のない広範なコマンドセットを理解し、その中をナビゲートしていかなければならないことは、ユーザ体験を困難なものとし、時間を浪費させる。加えて、多くのアプリケーションプログラムは、追加のコマンドを含む限り、物理的または論理的にタップアウト(tap out)される。具体的には、多くのアプリケーションプログラムでは、コマンドセット中に単に非常に多くのコマンドがあるので、より多くのコマンドを含むことは、より多くの「オプション」ボタンを含めるためのメニュー構造を必要とし、「オプション」ボタンがさらに多くのコマンドを提示し、したがってユーザがより多くのコマンド中を物理的にナビゲートしていくことが必要となる。
【０００６】
加えて、多くのアプリケーションプログラムは、ユーザ用の作業エリアを覆い隠す可能性のある方式で、そのコマンドセットを表示する。例えば図２を考察する。図２は、ユーザの作業エリアの中央に提示される「フォント」ダイアログボックス18を示す。このダイアログボックスにたどり着くためには、ユーザは、メニュー構造14内の「フォーマット」メニューエントリをクリックし、次いで提示されたドロップダウンメニュー内の「フォント」コマンドを選択しなければならない。その結果、図示するダイアログボックス18が表示される。このことは、ユーザがコマンドの広範なリストを閲覧することを可能にする助けにはなるが、２、３の相異なる理由から最適なものではない。第1に、ユーザの文書が、ダイアログボックス18によって部分的に覆い隠されることである。ユーザは作業エリアを視野内に保つことを望むかもしれないので、このことは望ましくない。加えて、ダイアログボックス内で作業するために、ユーザは自身の文書内での作業を終了しなければならない。したがって、ユーザが特定のモードに入らなければならず、それによってダイアログボックス内で作業するためにユーザが自身の文書内で作業することができなくなるので、ダイアログボックスは「モード」を有する、または「モーダル」であると呼ばれる。第2に、おそらくより重要なことであるが、ユーザのコマンド選択が直ちに実施されず、直ちに実施された場合であっても、文書がダイアログボックスで覆い隠されることである。具体的には、コマンド、例えば「取消し線」コマンドを実施するためには、ユーザは作業中の文書内のテキストを選択し、ダイアログボックスをプルアップしなければならない。ユーザが「取消し線」ボックスをクリックし、「OK」ボックスをクリックした後でなければコマンドは実施されない(これはある程度、上述のモードの性質に関係する)。加えて、ユーザがテキストの複数の異なる部分に対してコマンドを実施することを望む場合、ユーザは各テキスト部分を別々に選択し、選択したテキストの各部分ごとにコマンドを適用しなければならない。すなわち、テキストの各部分に対して、ユーザは適切なダイアログボックスを別々かつ個々にプルアップし、コマンドを適用しなければならない。これは最適ではない。
【０００７】
コマンド16の収集も考慮する。多くのアプリケーションプログラムでは、ユーザが直ちにクリックすることができ、かつアプリケーションプログラムのコンテキスト（context）内に適用できるように、頻繁に使用されるコマンドが表示される機能が提供される。これらのコマンドは、しばしば(「モーダル」コマンドとは対照的に)いわゆる「モードレス」コマンドとして提示される。これらのコマンドは、文書内で作業を続行しながら使用することができるからである。すなわち、図示する例では、集合の個々のコマンドには、「ボールド」コマンド、「イタリック」コマンド、および「下線」コマンドが含まれる。しかし、これらの頻繁に使用されるコマンドを表示する目的がユーザの効率を向上することであっても、この試みは、以下の理由のために目標に達しない。表示されるコマンドが最も頻繁に使用されると考えられる場合であっても、その使用頻度は、あったとしてもユーザセッションの非常に小さい部分しか構成しない可能性がある。この限りで、コマンドが使用されないときにそのコマンドを表示することは、貴重なディスプレイ資産が浪費されるという意味で不経済である。これは、表示されるコマンドがユーザの特定のコンテキストと関係ないことの直接的な現れである。確かにユーザは、自身のコンピューティングセッション中に特定のコマンドを使用する必要があるかもしれないが、ユーザがそのコマンドを具体的に必要とするまで、その表示は、ユーザのコンピューティングコンテキストとは何の論理的関係も持たない。
【０００８】
したがって、本発明は、コマンドセットをユーザに提示する、改良された方法およびシステムを提供することに関連する問題に由来する。具体的には、本発明は、物理画面スペースをより効率的に使用する助けとなる、タスク感応式の（task-sensitive）手法でコマンドを表現する方法およびシステムを提供することに関連する問題に由来する。
【０００９】
(発明の概要)
この方法およびシステムは、アプリケーションプログラム内のユーザのコンテキストを決定し、ユーザインタフェース内に、ユーザの現在のコンテキストに関係するコンテキスト感応型（context-sensitive）コマンドを自動的に表現することにより、ソフトウェアアプリケーションプログラム内でユーザにコマンドを提示する。ユーザのコンテキストが変化したとき、コンテキスト感応型コマンドが、自動的にユーザインタフェースに加えられ、またはユーザインタフェースから削除され、それによって追加の、より関係の深いコマンドのためにスペースが空けられる。
【００１０】
一実施例では、コンテキストブロックおよびコンテキストペイン(pane)を利用してコマンドが提示される。コンテキストブロックおよびコンテキストペインは、ユーザインタフェース中の文書エリアに隣接して位置するコンテキストUIコンテナ内に表示される。コンテキストブロックおよびコンテキストペインは、表示されるとき、ユーザの文書を覆い隠さない。
【００１１】
コンテキストブロックおよびコンテキストペインは、それぞれ、そのブロックまたはペインのラベルを付けるタイトルバーエリアと、コマンドをユーザに提示する制御エリアとを有する。制御エリア内のコマンドは、論理的にグループ化することができる。コンテキストブロックは、ユーザの現在のコンテキストに関係する1次コマンドを含む。複数のコンテキストブロックをコンテキストUIコンテナ内に表示することができる。コンテキストペインは、コンテキストブロックと関係付けられ、自動的には表示されない。その代わりユーザは、特定のコンテキストブロック、キーボードショートカット、または他のツールバーから、1つまたは2つ以上の複数のコンテキストペインを選択することができる。コンテキストペインは追加のコマンドを含み、その追加のコマンドは、その関連するコンテキストブロックのコマンドと論理的に関連付けられる。コンテキストペインは、表示されるときコンテキストUIコンテナ内のコンテキストブロックと置き換えられ、ユーザによって閉じられなければならない。
【００１２】
一実施形態では、ユーザのコンテキストは、特定のアプリケーションプログラム内のユーザの操作を監視することによって決定される。一連の式(expression)が提供され、この一連の式は、ユーザとアプリケーションプログラムとの対話の性質と関連する条件を記述する。各式はコンテキストブロックと関連する。ユーザのコンテキストが変化したとき、式の少なくとも一部が評価され、その関連するコンテキストブロックを表示すべきかどうかが決定される。1つの最適化では、各式はルートノードと、ルートノードに関連する複数のノードとを有するツリー構造として表される。各ノードは、ユーザのコンテキストが変化するにつれて変化することができる、各ノードに関連する値を有する。ユーザのコンテキストが変化したとき、変化に対して個々のノード値が評価される。ノード値が変化した場合、その親ノードはその変化によって通知を受ける。次いで親ノードは親ノードの値を評価し、親ノードの子の値の変化に応答して親ノードが変化したかどうかを確認する。このプロセスは、ノード値が変化するときはいつでも続行する。ルートノード値が変化した場合、ルートノードに関連するコンテキストブロックが自動的に表示され、または削除される。
【００１３】
1つの特定の有利な実施例では、単一のアプリケーションプログラムは、単一のナビゲート可能なウィンドウを備える。アプリケーションプログラムは、単一のナビゲート可能なウィンドウをそれに対してナビゲートすることができる複数の異なる機能を有する。異なる機能により、ユーザが異なるタスクを実施することが可能となる。例えば一実施例では、ユーザは電子メールを読み、電子メールメッセージを作成し、またはウェブ上のサイトにナビゲートすることができる。ユーザが各機能間をナビゲートしていくとき、およびユーザのコンテキストが特定の機能内で変化するとき、ユーザが有用なコマンドを手元に有して使用できるように、コンテキストブロックが自動的に提示および/または削除される。単一のアプリケーションプログラムの機能は、アプリケーションが多くの異なるタイプ機能を組み込むことができるように、例えばウェブを介して配信することができるサードパーティ機能を組み込むことによって拡張可能であることが望ましい。組み込まれた各機能は、自動的に表示可能なコンテキストブロックのそれ自体の収集に付随することができる。
【００１４】
(好ましい実施例の詳細な説明)
（概説）
以下で説明する方法およびシステムは、アプリケーションプログラム内のユーザのコンテキストを決定し、およびユーザインタフェースにおいて、ユーザの現在のコンテキストに関係するコンテキスト感応型コマンドを自動的に提示することにより、ソフトウェアアプリケーションプログラム内のユーザにコマンドを提示する。ユーザのコンテキストが変化したとき、コンテキスト感応型コマンドを、ユーザインタフェースから自動的に除去することができる。
【００１５】
（例示的コンピュータシステム）
図３に、本明細書で説明する実施形態を実装するのに利用することができる例示的コンピュータシステムを示す。コンピュータ130は、1つまたは2つ以上のプロセッサまたは処理装置132と、システムメモリ134と、システムメモリ134を含む様々なシステム構成要素をプロセッサ132に結合するバス136とを含む。バス136は、メモリバスまたはメモリコントローラと、周辺バスと、アクセラレーテッドグラフィックスポートと、様々なバスアーキテクチャのうちのいずれかを用いるプロセッサバスまたはローカルバスとを含むいくつかのタイプのバス構造のいずれか1つまたは2つ以上を表す。システムメモリ134は、読取り専用メモリ(ROM)138およびランダムアクセスメモリ(RAM)140を含む。始動中などにコンピュータ130内の要素間で情報を転送する助けになる基本ルーチンを含む基本入出力システム(BIOS)142がROM 138内に格納される。
【００１６】
コンピュータ130は、ハードディスク(図示せず)を読み書きするためのハードディスクドライブ144と、取外し可能磁気ディスク148を読み書きするための磁気ディスクドライブ146と、CD-ROMまたは他の光媒体などの取外し可能光ディスク152を読み書きするための光ディスクドライブ150とをさらに含む。ハードディスクドライブ144、磁気ディスクドライブ146、および光ディスクドライブ150は、SCSIインタフェース154または他の適切なインタフェースによってバス136に接続される。ドライブと、それに関連するコンピュータ読み取り可能な媒体とにより、コンピュータ130に対して、コンピュータ実行可能命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶が実現される。本明細書で説明する例示的環境では、ハードディスク、取外し可能磁気ディスク148、および取外し可能光ディスク152を使用しているが、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)など、コンピュータがアクセス可能な、データを格納することができる他のタイプのコンピュータ読み取り可能な媒体も、この例示的動作環境で使用できることを当業者は理解されたい。
【００１７】
オペレーティングシステム158、1つまたは2つ以上のアプリケーションプログラム160、他のプログラムモジュール162、およびプログラムデータ164を含むいくつかのプログラムモジュールは、ハードディスク144、磁気ディスク148、光ディスク152、ROM 138、またはRAM 140上に格納することができる。ユーザは、キーボード166およびポインティングデバイス168などの入力装置を介してコンピュータ130にコマンドおよび情報を入力することができる。他の入力装置(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどを含めることができる。これらの入力装置および他の入力装置は、バス136に結合されたインタフェース170を介して処理装置132に接続される。モニタ172または他のタイプのディスプレイ装置もまた、ビデオアダプタ174などのインタフェースを介してバス136に接続される。モニタに加えて、パーソナルコンピュータは、一般にスピーカおよびプリンタなどの他の周辺出力装置(図示せず)を含む。
【００１８】
コンピュータ130は一般に、リモートコンピュータ176などの1つまたは2つ以上のリモートコンピュータに対する論理接続を用いて、ネットワーク環境で動作することができる。リモートコンピュータ176は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、または他の共通ネットワークノードでよく、一般にはコンピュータ130に関して上述した要素のうちの多くまたはすべてを含むが、図3にはメモリ記憶装置178だけを示してある。図3に示す論理接続は、ローカルエリアネットワーク(LAN)180およびワイドエリアネットワーク(WAN)182を含む。このようなネットワーキング環境は、オフィスまたは企業全体のコンピュータネットワーク、イントラネット、およびインターネットで一般的なものである。
【００１９】
LANネットワーキング環境で使用するとき、コンピュータ130は、ネットワークインタフェースまたはアダプタ184を介してローカルネットワーク180に接続される。WANネットワーキング環境で使用するとき、コンピュータ130は一般に、モデム186、あるいはインターネットなどのワイドエリアネットワーク182を介して通信を確立するための他の手段を含む。モデム186は内蔵でも外付けでもよく、シリアルポートインタフェース156を介してバス136に接続される。ネットワーク環境では、パーソナルコンピュータ130に関して示したプログラムモジュールまたはその一部は、リモートメモリ記憶装置内に格納することができる。ここで示したネットワーク接続は例示的なものであって、コンピュータ間の通信リンクを確立する他の手段も使用できることが理解される。
【００２０】
一般に、コンピュータ130のデータプロセッサは、コンピュータの様々なコンピュータ読み取り可能な記憶媒体内に様々な時に格納された命令によってプログラムされる。プログラムおよびオペレーティングシステムは一般に、例えばフロッピィ（登録商標）ディスクまたはCD-ROMで配布される。プログラムおよびオペレーティングシステムは、そこからコンピュータの2次メモリ内にインストールまたはロードされる。実行時に、プログラムおよびオペレーティングシステムは、コンピュータの1次電子メモリ内に少なくとも部分的にロードされる。これらのコンピュータ読み取り可能な記憶媒体、または他の様々なタイプのコンピュータ読み取り可能な記憶媒体が、マイクロプロセッサまたは他のデータプロセッサと共に、以下で説明するステップを実施するための命令またはプログラムを含むとき、本明細書で説明する発明はそれらの媒体を含む。本発明はまた、以下で説明する方法および技法に従ってコンピュータがプログラムされるとき、そのコンピュータ自体も含む。
【００２１】
図示の便宜上、プログラム、ならびにオペレーティングシステムなどの他の実行可能プログラムコンポーネントを離散的ブロックとして図示するが、このようなプログラムおよびコンポーネントは、様々な時に、コンピュータの様々な記憶構成要素内に常駐し、コンピュータのデータプロセッサによって実行されることが理解される。
【００２２】
（コンテキスト感応型コマンド）
記載の実施形態では、1つまたは2つ以上の個別コマンドを含むコマンドセットが、ユーザのコンテキストに応じてユーザに自動的に提示される。具体的には、ユーザが行う操作のタイプに応じて、その操作に特有のコマンドが自動的に出現し、したがって、ユーザがメニュー構造の中を探して目当てのコマンドを見つける必要がなくなる。これにより、ユーザが必要としない場合でも常にトップレベルコマンドが提示された過去の手法が改良される。この実施形態はまた、特定のソフトウェアアプリケーションに精通していないユーザを援助する見地からも有利である。過去においては、このようなユーザは、不慣れなメニュー構造の中を探して、ユーザが行いたい操作に関係するかもしれず、または関係しないかもしれないコマンドを見つけなければならなかった。ユーザはまた、ツールを見つけるために機能の名前を知っていなければならなかった(例えばユーザは、テーブルのためのツールが適切なメニュー内に存在していることを理解するために、「テーブル」が何であるかを知っている必要があった)。本実施例では、コンテキストの点からに適切なコマンドがインタフェース内に自動的に提示され、かつインタフェース内から自動的に削除され、それによってユーザは、適切なコマンドを見つけることについて困惑しなくてもよい。すなわち、記載の実施形態では、コンテキストの点から適用可能なコマンドが現れ、他の適用不能なコマンドがユーザから隠されるという不変性(invariant)が維持される。
【００２３】
一例として以下のコンテキストについて考察する。ユーザがワードプロセッシングアプリケーションで作業しており、文書を準備している過程にあるとする。ユーザは、綴りが不正確である思われるテキストの一部を自身のカーソルで選択する。文書の上端のツールバーメニューまで行って、1つまたは2つ以上の他のメニューをプルダウンし、スペルチェック機能を見つける代わりに、スペルチェックコンテキストブロックが文書に隣接するインタフェース内に自動的に出現する。次いでユーザは、スペルチェックコンテキストブロックを使用して、綴りの不正確な単語を訂正することができる。単語を訂正し、ユーザのコンテキストがもはや綴りの不正確な単語に関連しなくなると、スペルチェックコンテキストブロックは自動的に消滅する。ユーザのコンテキストがユーザの文書内で変化するとき、自動的に提示および除去されるコマンドのセットも変化する。さらに、ユーザが自身の文書中にテーブルを含め、ユーザがテーブル特有のコマンドを用いてテーブルまたはその内容を操作したいというコンテキストについて考察する。過去においては、ユーザは一般に、テーブルメニューエントリをプルダウンし、1つまたは2つ以上のコマンドのうちから選択しなければならず、その1つまたは2つ以上のコマンドのうちの一部は、ユーザの文書を覆い隠すダイアログボックスを提示することがあった。本実施例では、ユーザは、単にテーブルの内部にカーソルを置くことによってテーブルを選択し、コンテキストの点から的に正確かつ適切なテーブル特有のコマンドを専用スペース内に自動的に表示させる。したがってユーザは、使用するのに適したコマンドを見つけるために、広大なメニュー構造の中を探す必要がない。この場合、コンテキストの点から適切なコマンドがユーザに自動的に提示される。ユーザのコンテキストが変化するとき、表示されるコマンドセットも変化する。
【００２４】
図４は、記載の実施形態による方法でのステップを説明する流れ図である。図示する方法は、どのような適切なハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せでも実施することができる。本実施例では、この方法は、ユーザのコンピュータ上で実行中のソフトウェアで実施される。
【００２５】
この方法はステップ400でスタートし、次いでステップ402で、ユーザの現在のコンテキストが変化したかどうかを決定する。ユーザの現在のコンテキストは、ユーザが実施を試みている様々なタスクに関係する。コンテキストは、プログラム中のほぼどんな検出可能な状態からでも決定することができる。上記の例では、2つの例示的タスクは、不正確に綴られた単語を訂正し、テーブルの内容を操作することを含んでいた。これらの各タスクに関連するコンテキストは、ユーザが作業している文書のタイプ(すなわち、複数の異なる機能のうちのどの機能にユーザがアクセスしているか)、文書の現在の状態、例えば文書が読み取り専用(またはブラウズ)モードであるか、それとも編集可能であるか、カーソルの文書内での(すなわち、カーソルが文書内のテーブル、スプレッドシートなどの中に位置している)現在の位置、あるいは文書内で行われる可能性のある特定の選択(テキスト、テーブルなどの選択)などから決定することができる。コンテキストを決定することができる他の例には、限定はしないが、ある拡張機能がインストールされているか、今日の日付が特定の文書の締切日より後か、対処する必要のあるコメントを文書が含んでいるか、Eメールメッセージの件名行が欠けているか、文書が綴りの不正確な語を含んでいるか、などを含めることができる。ユーザのコンテキストが変化したかどうかを確認するのに、どんな適切な方法も用いることができる。
【００２６】
ステップ402でユーザの現在のコンテキストが変化したことが確認された場合、ステップ404で、ユーザのコンテキストに応じてコマンドセットを変更する。具体的には、ユーザのコンテキストに基づいてコマンドセットを自動的に追加および/または削除することができる。
【００２７】
（コンテキストコンテナ、コンテキストブロック、コンテキストペイン）
図５に、コンテキスト感応型コマンドをユーザに自動的に提示するシステムの単なる一実施例を構成する、例示的ユーザインタフェース(UI)ディスプレイ500を示す。もちろん、記載の主題から逸脱することなく他の実施例も使用することができる。
【００２８】
図示する例では、ディスプレイ500は、コンテキストUIコンテナ502と、コンテキストUIコンテナに隣接する文書エリア504とを含む。コンテキストUIコンテナは、ソフトウェアアプリケーション内にコマンドを表示するのに使用することができる、垂直方向に整列された小幅のユーザインタフェーススペースである。特定の実装では、コンテキストUIコンテナ502は、その機能が主に文書との対話を対象とするアプリケーションと共に動作するように設計される。コンテキストUIコンテナ502はアプリケーション内の他のUI構造を妨げず、実際この設計では、グローバルツールバーエリア506内に表示されるような、コマンドを有するツールバーなどのある追加のUIを想定する。このようなコマンドには、限定はしないが、ウェブブラウザ用のアドレスウェル(address well)、新しい文書タイプを作成するための「新規作成」ボタン、「検索」または「ヘルプ」を表示するボタンを含めることができる。
【００２９】
この例では、コンテキストUIコンテナ502は、アプリケーション内の文書エリア504の左に置かれる。しかし、コンテキストUIコンテナ502はどんな適切な場所にも位置することができる。コンテキストUIコンテナ502は、コンテキスト感応型コマンドをユーザに表示するのに使用される2つのタイプのオブジェクトを含む。第1タイプのオブジェクトはコンテキストブロックであり、その例が508a-cで示されている。コンテキストブロックは本質的に、コマンド「ショートカット」を有するコンテキストベースのパレットであり、このコマンド「ショートカット」は、現在のユーザコンテキストに対するトップレベルツールをユーザに与える。この例では、編集コマンド(ブロック508a)、テキストコマンド(ブロック508b)、およびテーブルコマンド(ブロック508c)用のコンテキストブロックが存在する。この例において、選択されたテーブルをユーザが有し、したがってこれらのブロックの3つすべてが関係すると仮定する。第2タイプのオブジェクトはコンテキストペインである。コンテキストペインは、コンテキストに関する2次ツールへのアクセスを提供し、特定のタスクを完了するのに用いられる。2次ツールは、一般に、ペインが関連するコンテキストブロックに関係する、より特定の機能、またはより高度な機能である。
【００３０】
記載の実施形態では、コンテキストブロックは、ユーザのコンテキストに基づいて自動的に出現および消滅し、現れているとき、展開形と縮小形の2つの主な形態を有する。コンテキストブロックは、デフォルトで展開され、ユーザの手動操作によってのみ縮小される。コンテキストペインは、コンテキストUIコンテナ502全体を占有し、ユーザがアプリケーション中の他のコマンドに進むことができるまで、タスクを完了させることにユーザを集中させる。
【００３１】
（コンテキストUIコンテナ）
コンテキストUIコンテナ502は、コンテキストブロックおよびコンテキストペインを含む、縮小可能な垂直エリアである。コンテキストUIコンテナ502は、上記で指摘したように、展開形と縮小形の間で切り換えることができる。コンテナは縮小時には全く見えない。コンテキストUIコンテナ502は、展開時には、一般に固定サイズ、例えば184ピクセル幅であるが、より幅の広いコンテキストブロックまたはコンテキストペインを収容するように広くすることができる。
【００３２】
（コンテキストUIコンテナ展開状態の変更）
記載の実施形態では、ユーザは、アプリケーション内のグローバルツールバー上の「ツール」ボタンをクリックすることにより、コンテキストUIコンテナの展開状態を手動で変更することができる。このボタンはコンテナの展開状態を切り換えることができる。コンテナが展開されるとき、ボタンは「オン」に切り換えたものとして視覚化される。コンテナが縮小されるとき、ボタンは「オフ」に切り換えたものとして視覚化される。
【００３３】
加えて、コンテキストUIコンテナ502はプログラム式に展開することができる。例えば、ユーザが、アプリケーション内のほかのところにある、コンテナを開くように要求するコマンドをクリックした場合、コンテキストUIコンテナが自動的に開く。コンテキストUIコンテナが開いたとき、アプリケーションによって表示される文書の左端が移動し、文書の全幅が、コンテキストUIコンテナ502のサイズ分だけ縮小する。
【００３４】
（コンテキストUIコンテナの群）
コンテキストUIコンテナ502には、コンテキストブロックまたはコンテキストペインのどちらも入れることができる。加えて、コンテキストUIコンテナには、ヘルプペインを入れることができる。ヘルプペインはコンテキストペインと似ているが、コンテキストペインまたはコンテキストブロックの隣に出現する。ヘルプペインは、コンテキストペインとほぼ同サイズおよび同形状であり、プログラム式に立ち上がり、コンテキストブロックまたはコンテキストペインに関連付けられる。コンテキストブロックは、デフォルトでコンテキストUIコンテナ内に出現する。図５には、例示的コンテキストブロック508a-cが示されている。コンテキストブロック508aは、文書を編集することに関連するコマンドを含み、コンテキストブロック508bは、文書内のテキストを操作することに関連するコマンドを含み、コンテキストブロック508cは、テーブルを操作することに関連するコマンドブロックを含む。一度に複数のコンテキストブロックを表示することができることは、自明である。
【００３５】
一方コンテキストペインは、この例では、一度に1つだけ閲覧できるように構成される。しかも、コンテキストブロックはユーザのコンテキストに応じて自動的に表示されるのに対して、コンテキストペインは、この例ではユーザが選択したときに表示される。コンテキストペインはタスク指向であり、タスクが完了したときにユーザによって除去される。ユーザはコンテキストペインを除去するが、ペインが開いている間にユーザが引き続き文書に対する作業ができるという意味で、コンテキストペインはモードレスである。コンテキストペインはまた、ユーザに警報を通信するのに使用することもできる。例えば、ユーザが文書を出版(publish)しようとしているが、マージ矛盾のためにそうすることができない場合、マージ矛盾ユーザインタフェースをコンテキストペインによって提供することができる。
【００３６】
どのコンテキストブロックを自動的に表示するかを決定するため、一実施例では、ユーザのコンテキストを確認し、次いで適切なコンテキストブロックが表示されるようにする、式ベースの(expression-based)システムが使用される。例示的な式ベースシステムは、「式の値を求める」と題する節で以下により詳細に説明する。
【００３７】
（サイズ変更とオーバーフローの問題）
コンテキストUIコンテナ502は、垂直方向に固定のサイズであるが、コンテキストブロックの数およびサイズは限定されない。したがって、アプリケーションが、現在のコンテキストブロックのすべてを表示するのに十分な空間を有さないコンテキストがあり得る。このコンテキストは、「オーバーフローケース」と呼ばれる。オーバーフローケースは、コンテキストブロックのすべてを表示するのに十分な垂直方向の空間がコンテキストUIコンテナ502内に存在しないときに生じる。この特定の例におけるオーバーフローケースの一つの解法は以下の通りである。オーバーフローが生じたとき、アプリケーションは、コンテキストブロックコンテナの下端に小さいスクロールボタンを表示することができる。このボタンは、コンテナの外にスクロールされた1つまたは2つ以上のコンテキストブロックが存在するという標識として利用される。ボタンを1回クリックすると、所定のピクセル数、例えば44ピクセルだけ、あるいは最後のコンテキストブロックの終わりまでのいずれか小さいピクセル数だけ下方向にスクロールされる。これにより、あるコンテキストブロックの一部または全部が、コンテキストUIコンテナ502の上端から外にスクロールされる。したがって、この場合、コンテキストUIコンテナ502はその上端にもスクロールボタンを表示する。この上端ボタンをクリックすると、所定のピクセル数、例えば44ピクセルだけ、あるいは第1コンテキストブロックの上端までのいずれか小さいピクセル数だけ上方向にスクロールする。
【００３８】
ある方向(上方向または下方向のどちらか)で、コンテナ外にスクロールされたコンテキストブロックまたはコンテキストブロックの一部が存在しない場合、対応するスクロールボタンが消滅する。スクロールボタンはコンテナ502内でスペースを占有するので、スクロールボタンが消滅すべきときに関する計算では、ボタンがそこになかった場合に現れるはずの追加の空間が考慮に入れられる。
【００３９】
（アプリケーションウィンドウサイズ変更問題とコンテキストUIコンテナ）
コンテキストUIコンテナ502は、図示する例では、水平方向には標準サイズを有するように定義され、垂直方向にはアプリケーションウィンドウに適合するサイズに作成される。コンテキストUIコンテナ502は、ウィンドウ/解像度サイズ変更問題に以下のように対応する。垂直方向には、コンテナは、アプリケーションフレームの上端および下端の他のUIエリアから残された、アプリケーションフレーム内のスペースに適合するようにサイズ変更される。垂直方向のスペースがすべてのコンテキストブロックを保持するのに十分ではない場合、前述のオーバーフロー機構が起動される。水平方向には、コンテキストUIコンテナは、より大きなコンテキストブロックまたはコンテキストペインを収容するようにサイズ変更されることを除き、サイズ変更されない。この場合以外には、コンテナは完全に展開または縮小するだけである。アプリケーションウィンドウがサイズ変更されるので、コンテナは水平方向にはサイズ変更されない。ウィンドウがコンテキストUIコンテナよりも狭くなるようにユーザがウィンドウを水平方向にサイズ変更する場合、コンテナは縮小される。
【００４０】
（コンテキストブロック）
図示する例では、コンテキストブロックは、所与のコンテキストについてのトップレベルコマンドを表示する長方形の制御コンテナである。コンテキストは、アプリケーション中の「式」によって記述することができる任意のものである。式の例を以下に示す。典型的なコンテキストには、現在閲覧されている文書のタイプ、文書の現在の状態、例えば文書が読み取り専用(またはブラウズ)モードであるか、それとも編集可能であるか、ならびに文書内で現在選択されているオブジェクトが含まれる。他のコンテキストは上記で列挙した。コンテキストブロックは、そのコンテキストを記述する式が真か、それとも偽かに基づいて、それぞれ出現および消滅する。このことは、以下の「式の値を求める」という節でより詳細に議論する。
【００４１】
図６に、図５のコンテキストUIコンテナ502を除く例示的なコンテキストブロック508bを示す。コンテキストブロック508bはテキスト形式設定コマンドを表示する。各ブロックは、タイトルバーエリア600および制御エリア602を有する。
【００４２】
タイトルバーエリア600は、コンテキストブロック全体にラベルを付ける場所を提供し、展開/縮小機能を提供する。タイトルバーエリア600は、コンテキストブロックメニューを開くボタン604も含む。ユーザは、メニューボタンの外側のタイトルバー上の任意の場所をクリックし、コンテキストブロックの展開状態を切り換えることができる。タイトルバーエリア600の右側では、ボタン604をクリックして、コンテキストペインへのリンクと、コンテキストペインを起動することなく直ちに実行されるコマンドとを含むことができるメニューを表示することができる。次いでメニューは、ユーザがメニューからコマンドを起動した後に閉じられる。
【００４３】
制御エリア602は、コンテキストブロックのメインエリアであり、ユーザに対してコマンドを表示する。図示する例では、制御エリアに任意のHTMLコードを充填することが可能であり、したがってHTMLをサポートするコマンドを何らかの方法で表示することができる。もちろん、HTML以外のコマンドを定義する他の方法も用いることができる。有利なことに、ユーザの行うどんな操作も文書中のユーザの選択に直ちに適用されるという意味で、コンテキストブロックは「モードレス」である。この方法は、ユーザがコンテキストブロックを介して利用可能な様々な選択を試すことができ、かつユーザの選択がユーザの文書で直ちに実施されるのを見ることができるので、過去の方法よりも有利である。ある場合には、この方法により、(スペースと時間の点で)高価な「プレビューペイン」が不要となる。しかしこれは、コンテキストブロックが常にモードレスでなければならないという意味ではない。例えば、テーブルを挿入するためのコンテキストブロックは、ユーザが「挿入」ボタンを押下する前に行と列の数を設定する場合に提供することができる。
【００４４】
コンテキストブロックが誤って表示されることを防止するコンテキストブロックの一態様は、特定の文書中でユーザによって(例えばユーザのカーソルを用いて)行われる選択が、表示可能なコマンドの特定の組に関係する内容だけを含まなければならないというものである。ユーザの選択がオブジェクトだけではなくオブジェクトの周りの追加の内容も含む場合、そのオブジェクトに関するコンテキストブロックは表示されない。したがって例えば、テーブル形式設定コンテキストブロックを視覚化するためには、ユーザの選択は、テーブルだけを含む必要があり、またはユーザの挿入点(すなわちカーソル)がテーブル中になければならない。
【００４５】
（コンテキストペイン）
記載の実施形態では、コンテキストペインはコンテキストブロックと同様に、長方形の制御コンテナである。この実施形態での1つの主な差は、コンテキストペインが一般にコンテキストブロックよりも大きく、一度に閲覧できるコンテキストペインが1つだけであることである。しかしこれは、この特定の実施形態についての単なる1つの選択に過ぎない。
【００４６】
コンテキストペインは、アプリケーションで文書出版マージ矛盾をステップスルー(step through)することなど、2次コマンドならびにタスクベースのUIを表示するのに使用する。コンテキストペインはまた、文書を出版するときにバージョン管理の問題があり、保持するバージョンについてユーザが決定を行う必要があるときなど、現在の文書に関係する様々なエラーメッセージを表示するのに使用することもできる。整合性を維持するため、コンテキストブロック内に含まれるコマンドは、その関連するコンテキストペイン内でも反復される。
【００４７】
コンテキストペインは、その関連するコンテキストブロックのメニュー、キーボードショートカット、あるいはグローバルツールバーなどのアプリケーション内の他のUIからアクセスすることができる。記載の実施形態では、コンテキストペインが起動されるとき、コンテキストUIコンテナ502(図５)の全内容がコンテキストペインで置換られる。有利なことに、コンテキストペインは、一般に文書に対してモードレスである。このことは、コンテキストペインが開かれる間、ユーザが自身の文書との対話を続行することができることを意味する。例えば、ユーザがテキストの部分に繰り返し取消し線コマンドを使用したい場合、ユーザは、単に適切なテキストを選択し、コンテキストペイン内の取消し線ボックスをクリックすることによって繰り返し行うことができる。過去においては、ユーザは取消し線コマンドを起動するごとにメニュー構造の中を移動しなければならなかったはずである。
【００４８】
図７に、2次フォーマットフォントコマンドを含む例示的コンテキストペイン700を示す。コンテキストペイン700は、タイトルバー702と、個々のコマンドを含む制御エリア704とを含む。コンテキストペインは、コンテキストUIコンテナ全体を満たすコンテキストブロックと同様の外観である。しかし記載の例ではいくつかの差がある。ここでは、コンテキストペインは縮小可能ではない。すなわち、ユーザがコンテキストペインと対話している間、コンテキストペインの全体がユーザに表示される。加えてコンテキストペインは、ユーザがクリックすることのできる、閉じるための標準の方式、例えば「閉じる」ボタンまたはそれと同等のものをパネルの下端に有する。
【００４９】
加えて、ユーザはコンテキストブロックを表示するためにコンテキストブロックを要求する必要がないのに対し、ほとんどの場合ユーザは、コンテキストペインを表示するためにはコンテキストペインを要求する。すなわちコンテキストペインは、式を求めた結果として自動的に表示されない。むしろコンテキストペインは、あるイベントまたは関数の呼出しに基づいて表示される。しかし、式ベースであり、エンドユーザ始動ではないコンテキストペインもある(例えば、エラー条件をユーザに通知するエラーコンテキストペイン)。加えてこの例では、コンテキストペインがもはや必要ではなくなったとき、ユーザはコンテキストペインを物理的に消去もしなければならない。すなわち、コンテキストペインは自動的には消滅しない。したがって、ユーザはコンテキストペインと対話しながら、文書の周囲にその選択を自由に移動することができる。コンテキストペインの機能がコンテキスト感応型である場合(例えば、コンテキストペインの機能が文書内のテーブルだけに適用されるツールを含む場合)、コンテキストペイン内のその制御は、コンテキスト外となった場合に使用不能となる。一般にコンテキストペインは多くの場合、コンテキスト外となったときに消滅または縮小しない。
【００５０】
（コンテキストペインでのユーザ支援）
コンテキストペインは、アプリケーションのコマンドの範囲全体に対するアクセスを提供するのに使用される。このようにして、コンテキストペインはコンテキストブロックを補う。ユーザがコンテキストペイン内に表示されるコマンドすべてに精通していない可能性があることは事実かもしれない。したがって、記載の実施形態では、コンテキストペインは、ポップアウトヘルプペインを介して、ユーザのコマンドの助けとなるコンテキスト感応型アクセスを提供する。このヘルプペインは、コンテキストペインの右側に現れ、コンテキストUIコンテナを水平方向に拡大する。これにより、ユーザの文書は幾分右側に移動する。ヘルプペインにより、ペインまたはコンテキストブロック上の制御の使用方法に関する、迅速なコンテキストヘルプが提供される。図７の例では、コンテキストペインのタイトルバー702の右側のヘルプアイコン706(「?」)によって、ヘルプペインにアクセスする。
【００５１】
このことは、ほとんどの現在のアプリケーションプログラムでの現在のヘルプ機能とは非常に異なる。現在の多くのアプリケーションでは、ユーザは、ヘルプメニューの中を検索して注目する特定のトピックスを見つけなければならず、または検索に関係する複数のトピックスを一般に引き出すダイアログボックスを介して検索照会を入力しなければならないことがある。さらに、ユーザは、ユーザの注目するトピックスを見つけるために、異なる複数のトピックスの中をナビゲートしていかなければならない。これらの例における「ヘルプ」は一般に、ユーザのアプリケーションウィンドウを覆い隠し、またはその外側に表示される別々のアプリケーションとして表示される。ユーザの作業のコンテキストは認識されない。しかし、ここで、記載の手法は幾分異なる。まず、ヘルプ機能は現コンテキストペインとコンテキストの点から関係する。したがって、ユーザは、自身の現在のコンテキストに関係するヘルプ情報だけを受け取る。加えて、ヘルプ情報は、ユーザの現在のコンテキストに対して具体的に適合され、かつコンテキストブロックとコンテキストペイン用の専用スペースがあるので、現在のシステムで通常可能なヘルプ情報よりも完全なヘルプ情報をコンテナUI内に表示することができる。加えて、ヘルプ機能は「モードレス」に与えられ、それによってユーザは、ヘルプメニューが表示されている間に自身の文書での作業を続行することができる。さらに、この例で与えられるコンテキストヘルプが、ユーザのコンテキストに対してだけでなく、そのコンテキストでユーザが必要とする可能性が最も高いタスクステップおよびトラブルシューティングステップに対しても適合させることができる。例えば、ユーザが文書中の綴りの不正確な語を、その目的で設計されたコンテキストペインを用いて訂正している場合、そのコンテキストペインに関連するヘルプペインは、与えられる選択のうちの1つで綴りの不正確な語を訂正する方法、問題の語をシステム辞書に追加する方法、および問題の語を異なる語で完全に置換する方法についての情報を含むことができる。したがって、ユーザは、より効率的かつ有益な方式で支援を受ける。
【００５２】
（スタック可能性）
一度に閲覧することができるコンテキストペインは1つだけであるが、複数のペインをスタック内に格納することが可能である。この場合、1つのコンテキストペインを閉じると、スタック内の次のコンテキストペインが現れる。コンテキストペインを互いの最上部にスタックすることのできる多数の事例が存在する。
以下は、いくつかの例示的な事例を構成する。
・コンテキストペインが開き、次いでエラーコンテキストペインが表示される  ・コンテキストペインが開き、次いでユーザがグローバルツールバー上のボタンから別のコンテキストペインを開く
・コンテキストペインが、別のコンテキストペインを開くボタンを有する
・コンテキストペインが開き、ユーザが、別のコンテキストペインを開くアクセラレータキーを押す
【００５３】
上記の各事例では、後に開くコンテキストペインがスタックの最上部となり、前のコンテキストペインは、スタック上でその下になる。
【００５４】
加えて各文書は、コンテキストペインのそれ自体のスタックを有することができる。ユーザが文書から離れ、その文書に戻ってきた場合、コンテキストペインの文書のスタックは存続し、再表示される(スタックの古いメンバを除くことも可能である)。
【００５５】
（式の値を求める）
上記で議論したように、コンテキストブロックは、ユーザの現在のコンテキストに応じて自動的にユーザに提示される。記載の実施形態では、どのコンテキストブロックを提示するか、およびそれをいつ提示するかを確認するために、式ベースの方法が使用される。
【００５６】
式ベースの方法を実施する1つの手法は以下の通りである。各コンテキストブロックが、所定の値を求めることができる式と関連付けられる。各式は本質的に、ユーザと文書との対話のある性質を記述する定義済み条件である。ユーザが文書と対話するとき、式、または式の少なくとも一部が値を求められ、それが所定の値を有するかどうかが確認される。式のうち1つまたは2つ以上が所定の値を有するとき、その式に関連するコンテキストブロックがユーザに対して表示される。
【００５７】
図８は、記載の実施形態による方法でのステップを記述する流れ図である。記載の方法は、どのような適切なハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せでも実施することができる。図示する例では、この方法はソフトウェアで実施される。
【００５８】
ステップ800では、コンテキスト感応型UIと可視性の式（visibility expression）とを関連付ける。例示的なコンテキスト感応型UIは、前述のコンテキストブロックである。図示する例では、この関連付けのためにテーブルを使用し、このテーブルは、一方が特定のコンテキストブロックに関連し、他方がコンテキストブロックの可視性の式に関連する2つの列を含む。図９に、列902および904を有する例示的なテーブル900を示す。列902は、各コンテキストブロックに関連するエントリを含み、列904は、各コンテキストブロックに関連するいわゆる可視性の式を含む。図示する例では、2つの例示的コンテキストブロックが列902に示され、それらに対応する可視性の式が列904に示されている。例えば、「フォントフォーマット」コンテキストブロックの場合、可視性の式は「em & ts」である。この可視性の式は、アプリケーションが「編集モード」にあり(すなわち「em」)、テキストの一部が選択されている(すなわち「ts」)条件を記述するブール式である。「テーブルコマンド」コンテキストブロックの場合、可視性の式は「em & ip=t+tbs」であり、これは、アプリケーションが編集モードにあり、挿入点がテーブル内にある(すなわち「ip=t」)か、またはテーブルが選択されている(「tbs」)という条件に言い換えられる。
【００５９】
ステップ802では、ユーザの操作によって可視性の式の値が変化したかどうかを決定する。ユーザの操作は一般にユーザのコンテキストを変更する。ユーザのコンテキストは、ほんの一例であるが、ユーザ選択、挿入点、時刻、ユーザの名前など、どんなタイプの変数にも基づくことができる。可視性の式の値が変化した場合、ステップ804では、現在のコンテキストに適用可能でない可視のUI(すなわちコンテキストブロック)を削除する。ステップ806では、以前は可視でなかったが、ユーザの現在のコンテキストに適用可能なUIを表示する。
【００６０】
可視性の式は、どんな適切な方式でも値を求めることができる。例えば、ユーザが文書内で操作を行うごとに、テーブル900中の式のすべてを値を求めることができる。より望ましい手法は以下の通りである。
【００６１】
各式が、「ツリー」として知られるデータ構造で表される。図１０に、図９に図示した2つの可視性の式についての例示的ツリー構造を示す。ここでは、各ツリーの最上位ノードは演算を有する。この場合には、演算は、たまたま各式についての「AND」演算である。各最上位ノードは、オペランド(operand)または演算とすることができる1つまたは2つ以上の子ノードを有する。フォントフォーマットコンテキストブロック式の場合、各子ノード1002、1004はオペランド(すなわち、それぞれ「編集モード」および「テキスト選択」)である。テーブルコマンドコンテキストブロック式の場合、子ノード1008はオペランド(すなわち「編集モード」)であり、子ノード1010は演算(すなわち「OR」演算)である。ノード1010は、2つのオペランドノード1012、1014(すなわち、それぞれ「挿入点=テーブル」および「テーブルを選択」)を有する。
【００６２】
各ツリー構造は、「真」または「偽」のどちらかを有することができる。ツリー構造が「真」を有する場合、それに関連するコンテキストブロックが表示される。ツリー構造が「偽」を有するか、またはノードのうちの一部が評価された後に依然として偽状態である場合、そのコンテキストブロックは表示されない。しかしツリーの式値は、そのオペランドの値が変化しない限り変化することができない。例えば、フォントフォーマットツリー構造について考察する。その現在の値が「偽」(ノード1000に隣接する「F」で示す)であると仮定する。さらに、その編集モードオペランド1002が「真」の値を有し、そのテキスト選択オペランド1004が「偽」の値を有すると仮定する。この場合、ユーザは現在編集モードにあるが、テキストを選択していない。このツリー構造の値を変更するためは、そのテキスト選択オペランド1004の値が「偽」から「真」に変化しなければならない。このことは、ユーザが自身のカーソルを用いてあるテキストを選択したときにのみ生じる。記載の実施形態によれば、子ノードの値が変化したとき、子ノードは、その親ノードに対して、子ノードの値が変化したという通知を生成する。次いで親ノードの式が再評価され、その値が変化したかどうかが確認される。その値が変化し、かつそのノードが親ノードを有する場合、通知が生成され、その親ノードに送られる。このことが、親ノードの式の値が変化しないか、または最上位の親ノードの式の値が変化するまで続行される。最上位の親ノードの式の値が変化した場合、対応するコンテキストブロックが表示または削除される。親ノードの式の値が変化していない場合、現在の状態が維持される(すなわち、コンテキストブロックが以前に表示されていた場合、依然として表示され、コンテキストブロックが以前に表示されていなかった場合、コンテキストブロックは表示されない)。したがって多くの場合、値を求める必要があるのは可視性の式の一部だけとなる。
【００６３】
別の例として、テーブルコマンドコンテキストブロックについての可視性の式について考察する。式の現在の状態が以下のテーブルで示されると仮定する。
【００６４】
【表１】
0004833490.tif 000002
【００６５】
この例では、最上位ノード1006が「偽」と評価されるので、テーブルコマンドコンテキストブロックは表示されない。ユーザが編集モードにあり、挿入点がテーブル中になく、かつテーブルが選択されていない。次に、ユーザが自身のカーソルを用いてテーブルを選択すると仮定する。この場合、ノード1014に関連する値が「真」に変化する。このノードの値が変化したので、このノードは通知を生成し、その親ノード1010に通知を送る。ノード1010は、値がこの時に「真」と再評価されるOR式である。このノードの値が変化したので、このノードは通知を生成し、その親ノード1006に通知を送る。ノード1006は、この時「真」と評価されるAND式である。これは最上位ノードであり、「真」と評価されるので、次に、このノードに関連するコンテキストブロックが表示される。これはユーザの操作の後に論理的に行われる。すなわち、ノード1014の値を変更するためには、ユーザはテーブルを選択しなければならない。ユーザがテーブルを選択したとき、テーブルコマンドコンテキストブロックをユーザに対して表示すべきである。ユーザがテーブルを「選択解除(unselect)」した場合、ノード1014に関連する値が変化し、この変化は、最上位ノード1006が「偽」と再評価されるまで通知の形態でツリーの上部に伝播し、コンテキストブロックが削除される。
【００６６】
図１１は、上述の実施形態による例示的式評価方法におけるステップを記述する流れ図である。記載の方法は、どのような適切なハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せでも実施することができる。図示する例では、この方法はソフトウェアで実施される。
【００６７】
ステップ1100では、各式を、複数のノードを有するツリー構造として表す。例示的な式およびツリー構造は、図９および１０に関連して図示し、記述する。ステップ1102は、第1ツリーまたはツリー構造を取得し、ステップ1104はそのツリー上の第1リーフノードを取得する。図１０の例では、例示的リーフノードが、フォントフォーマットツリーに関して1002、1004に示され、テーブルコマンドツリーに関して1008、1012、および1014に示されている。ステップ1106ではノードの値を求める。ステップ1108では、ノード値が変化したかどうかを決定する。ノード値が変化していない場合、ステップ1110では、ツリー上のさらにノードが存在するかどうかを決定し、ノードが存在する場合、ステップ1112は次のノードを取得してステップ1106に戻る。ツリー上のさらにノードが存在しない場合、ステップ1114では、さらにツリーが存在するかどうかを決定する。追加のツリーが存在する場合、ステップ1116では次のツリーを取得してステップ1104に戻り、そのツリーのノードの値を求める。追加のツリーが存在しない場合、ステップ1114はステップ1102に戻る。上記のプロセスを反復するために、ステップ1114の戻りを自動的に行うことができ、またはユーザのコンテキストの変化によって戻りを実施できることに留意されたい。
【００６８】
ステップ1108でノード値が変化した場合、ステップ1118で、このノードがツリーのルートノードであるかどうかを決定する。ノードがルートノードである場合、この方法はステップ1126に分岐し、ノードの値が「真」であるか、それとも「偽」であるかを確認する。この値が「偽」である場合、ステップ1128で、その特定の可視性の式に関連するコンテキストブロックを隠す。一方この値が「真」である場合、ステップ1130で、その特定の可視性の式に関連するコンテキストブロックを表示する。ステップ1118でノードがルートノードでない場合、ステップ1120で、その特定のノードの親ノードを取得し、ステップ1122でその親ノードの値を求める。ノード値が変化した場合(ステップ1124)、この方法はステップ1118に戻る。一方ノード値が変化しない場合、この方法はステップ1110に分岐する。
【００６９】
上述のプロセスは、コンテキストブロックに関連する完全な式をしばしば値を求める必要がないので有利である。しばしば、値を求める必要があるのは式の一部だけである。式の特定の部分の値が変化した場合、式の追加の部分の値を求めることができる。式の特定の部分の値が変化していない場合、式評価プロセスを終了することが可能であり、それによって処理オーバヘッドが節約される。
【００７０】
ユーザが特定の操作を行ったとき、式評価プロセスが直ちに始動しないよう、小さな遅延の機能をシステム内に構築できることに留意されたい。例えば、ユーザが特定の位置で定義可能な期間だけ自身のカーソルを放置するまで式評価プロセスが開始しないよう、システムをプログラムすることができる。そのような遅延機構を当業者は理解されよう。したがってそのような遅延機構についてさらに詳細には議論しない。
【００７１】
（単一のナビゲート可能なウィンドウアプリケーション）
一実施例によれば、コンテキスト感応型コンテキストブロックおよびコンテキスト感応型コンテキストペインは、ユーザがナビゲートしていくことができ、かつ複数の異なるタスクを実施する、複数の異なる機能を有する単一のアプリケーションプログラムと共に使用することができる。ユーザが様々な機能にナビゲートするとき、ユーザのコンテキストは必然的に変化する。ユーザのコンテキストが変化したとき、ユーザに対して表示されるコンテキストブロックとコンテキストペインも変化する。複数の異なる機能を有する例示的な単一のアプリケーションプログラムは、上記で参照によりこの明細書に組み込まれた「単一のウィンドウナビゲーション方法およびシステム」という名称の米国特許出願に記載されている。
【００７２】
上記で組み込んだ参照出願の主題である、例示的な単一のアプリケーションプログラムでは、ソフトウェアが、ユーザが機能間をナビゲートすることができる単一のナビゲート可能なウィンドウをユーザに提示するユーザインタフェース(UI)を提供する。個々の機能は、その結果が高度に一体化されたソフトウェア製品である単一のアプリケーションプログラムによって提供することが望ましい。
【００７３】
ユーザは、様々なナビゲーション手段(instrumentalities)を使用することによって、各機能間をナビゲートすることができ、そのようにするとき、単一のウィンドウにより、一度に1つの機能だけがユーザに提示されることが保証される。この記載の実施形態では、1つのナビゲーション手段は、ウェブブラウザに類似のナビゲーションツールの形態で提供される。ウェブブラウザに類似のナビゲーションツールを選択するのは、ナビゲーション手段がコンピューティング環境に精通したほとんどの個人に容易に理解されるタイプであるべきであるからである。したがって、ユーザが最初に本発明のナビゲート可能な単一ウィンドウの概念に遭遇したとき、ユーザは、不慣れなナビゲーション概念を学習する必要がない。別のナビゲーション手段は、複数の異なる機能のそれぞれに対するリンクを含む。ユーザは、これらのリンクをクリックすることができ、単一ナビゲート可能なウィンドウは、選択した機能に自動的にナビゲートされる。
【００７４】
図１２に、記載の一実施形態による、単なる1つの例示的ユーザインタフェース(UI)1200を示す。本明細書で説明する本発明の概念を実装するのに他のUIを使用でき、図示する例はそのようにする上での単なる1つの方式を構成していることを理解されたい。図示する例では、UI 1200は、ナビゲーションバー1202、1つまたは2つ以上のコマンドエリア1204、ならびに単一ナビゲート可能ウィンドウを構成する表示エリアまたは文書エリア1206を含む。
【００７５】
ナビゲーションバー1202は、表示エリア1206の上端に隣接して位置し、「戻る」ボタン、「進む」ボタン、「停止」ボタンなどの形態のブラウザに類似のナビゲーションボタン1208を含む。ナビゲーションバーは、UIのどこにでも位置することができる。しかし図示するナビゲーションバーの配置は、伝統的なウェブブラウジングナビゲーション機能の配置と同様の外観である。ナビゲーションボタンに加えて、ナビゲーションバー1202はまた、ユーザがアクセスすることのできる様々な機能へのリンクも含む。図示する例では、3つの例示的機能(すなわち機能1、機能2、および機能3)へのリンクが示されている。これらの機能は一般に、ユーザが様々な各タスクを完了することを可能にする様々な機能である。以下では、様々なタスクの例をより詳細に与える。これらの機能はすべて、単一アプリケーションのコンテキスト内で提供される。特定の機能にアクセスするには、ユーザは単にリンクのうちの1つをクリックし、選択した機能に関係するウィンドウが表示エリア1206内に直ちに提示される。
【００７６】
コマンドエリア1204は、表示エリア1206の上端および左側に隣接して位置する。しかしコマンドエリアは、どんな適切な位置にも位置することができる。コマンドエリアは、グローバルな性質のコマンドと、ユーザが選択した特定のコンテキストに特有のコマンドの両方を提供する。例えば、「検索」および「ヘルプ」などの一部のコマンドは、多くのコンテキストで使用することができるので、グローバルな性質のものと考察することができる。「テキスト太字」または「全員に返信」などの他のコマンドは、ユーザが選択した特定のコンテキストに、より特有のものである。「テキスト太字」コマンドの場合、ユーザのコンテキストはワードプロセッシングのコンテキストであり、一方「全員に返信」コマンドは、Eメールのコンテキストで利用される可能性が高い。
【００７７】
（例）
単一アプリケーションによって提供される単一ナビゲート可能ウィンドウの例として、図１３および１４を考察する。
【００７８】
この例では、ユーザがナビゲートしていくことのできる複数の機能1210は、ブラウザ機能(ホームアイコンで示す)、メール機能(レターアイコンで示す)、プランナ(時計アイコンで示す)、コンタクト機能(人々のアイコンで示す)、文書機能(フォルダアイコンで示す)、およびリンク機能(地球のアイコンで示す)を含む。これらの機能は、すべて何らかの形でユーザが対話する文書、例えばウェブページ文書、Eメール文書、カレンダー文書に関係するので、いわゆる「文書中心(document-centric)」の機能である。
【００７９】
図１３に、ユーザがブラウザ機能へのリンクをクリックするときに表示エリア1206でレンダリングされる(rendered)表示の例を示す。ブラウザ機能へのリンク(すなわちホームアイコン)をクリックすることにより、ユーザのコンピュータ上で実行中の単一アプリケーションプログラムソフトウェアは、ブラウザ機能を実施するように実行される。この例では、ブラウザ機能は、表示エリア1206内にユーザのホームページを表示する。ナビゲーションボタン1208は、様々な選択可能な機能間でのナビゲーションのために提供されることにも留意されたい。コマンドエリア1204は、ユーザが選択したコンテキストに特有のコマンドを有するコマンドセットを含む、「お気に入り」および「ブラウジング」と呼ばれるコンテキストブロックを含む。この例では、ユーザのコンテキストはブラウジングコンテキストである。したがって、最も左側のコマンドエリアは、ブラウジング機能に特有のコマンドを含む。このようなコマンドには、ユーザが通常ウェブブラウザにあると期待するコマンドが含まれる。表示エリア1206の上端に隣接するコマンドエリア1204はまた、ブラウジングコンテキストに特有のコマンド、すなわち「お気に入りに追加」や、ユーザが特定の宛先ウェブサイトのURLをタイプすることができるアドレスウェルも含むことにも留意されたい。したがって、最も左側のコマンドエリア内に表示可能なコンテキストブロックは、ユーザのコンテキストが変化するときにユーザに自動的に提示される。
【００８０】
図１４に、ユーザがメール機能へのリンク(すなわちフォルダアイコン)をクリックするときに表示エリア1206内にレンダリングされる表示の例を示す。このリンクをクリックすることにより、ユーザのコンピュータ上で実行中の単一アプリケーションプログラムソフトウェアは、メール機能を実施するように実行される。この例では、メール機能は、ユーザが受信したメッセージを有する、ユーザの受信ボックスを表示する。最も左側のコマンドエリアがユーザによって最小化されており、かつ表示エリア1206の上端に隣接するコマンドエリア1204が、ユーザの現在のコンテキストに特有のコマンド、例えば新しいEメールメッセージを生成するための「新規作成」コマンド、Eメールメッセージに返信するための「返信」コマンド、Eメールメッセージのすべての受信者に返信するための「全員に返信」コマンドを含むことに留意されたい。表示すべき1つまたは2つ以上のコンテキストブロックが必要となるようにユーザのコンテキストがこの機能内で変化するとき、そのコンテキストブロックが最も左側のコマンドエリア内に自動的に表示される。例えば、ユーザがEメールメッセージを作成し、テキストの一部を斜体にすることを望むことがある。テキストの一部を選択すると、ユーザが使用するためのテキスト形式設定コンテキストブロックが自動的に現れる。別の例では、ユーザが自身のEメールメッセージ内にテーブルを組み込むことを想定し、次いでユーザがカーソルをテーブルの内部に移動した場合、テーブル形式設定コンテキストブロックが最も左側のコマンドエリア内に自動的に現れる。
【００８１】
具体的には図示していないが、ユーザは、プランナ機能、コンタクト機能、文書機能、およびリンク機能へのリンクを単にクリックすることによって表示エリア1206に提示される、これらの特定の機能用の表示を有することもできる。このように表示されるとき、これらの特定の機能でのユーザのコンテキストに関連するコンテキストブロックは、ユーザの特定のコンテキストに従って自動的に表示されることになる。ナビゲーションバー1208は、これらの異なる機能間をブラウザのようにナビゲートする能力をユーザに提供する。
【００８２】
上記の例は、複数の異なる機能およびコンテキストブロックをナビゲート可能な構造の構造内でユーザに提示することができる単なる1つの例示的な方式を構成するに過ぎないことに留意することは重要である。具体的に図示した機能(すなわちブラウザ、メール、プランナなど)は、ナビゲート可能ウィンドウを提供する単一アプリケーションプログラム内に構成することができる様々な機能の特定の例を構成することを理解されたい。したがって、他の異なる機能も利用することができる。この態様は、以下の「拡張可能な機能」と題する節でより詳細に論じる。様々なコンテキストペインが、この例の基礎を形成する個々のコンテキストブロックと関連することにも留意されたい。コンテキストペインは上記で説明したので、この例では具体的に説明しなかった。
【００８３】
図１５は、記載の実施形態による方法でのステップを記述する流れ図である。図示する方法は、どのような適切なハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せでも実施することができる。図示する例では、この方法はソフトウェアで実施される。
【００８４】
ステップ1500は、複数の異なる機能を有する単一アプリケーションプログラムを提供する。有利なことに、上記で指摘したように、ユーザが異なるタスクを実施することが可能となるよう、この各機能は異なる。1つの特定の非限定的な、異なる機能の例は、上記で、ブラウザ機能、メール機能、プランナ機能、コンタクト機能、文書機能、およびリンク機能をユーザが利用することを可能にする文書中心機能のコンテキストで与えた。ステップ1500は、複数の異なる機能を有する単一アプリケーションプログラムを用いて、ユーザのコンピュータなどのコンピューティング装置を構成することによって実施することができる。このステップはまた、上記で参照により本明細書に組み込まれた種々の特許出願に記載されているように、様々な異なる機能を実施する異なる拡張機能またはソフトウェアモジュールを受けるように拡張可能かつ適合可能な、汎用単一アプリケーションシェルの形態のソフトウェアプラットフォームを提供することによっても実施することができる。次いでこれらの異なる拡張機能は、複数の異なる機能を有する単一アプリケーションのコンテキストでユーザに提示される。
【００８５】
これらの拡張機能は、任意の適切な方式で、かつ任意の適切な配信機構を介してプラットフォームに配信することができる。例えば、様々な拡張機能または機能を配信する1つの方式は、インターネットまたはインターネットなどのネットワークを介して送達することである。単一アプリケーションが提供される方式の如何に関わらず、ステップ1502は、単一ウィンドウと、複数の異なる機能へのリンクとを有するユーザインタフェース(UI)を提示する。有利なことに、UIはまた、ユーザが異なる機能間をブラウザのようにナビゲートしていくことを可能にするナビゲーション手段も含む。図１３および図１４に、記載の実施形態に従って使用することができる例示的UIの特定の例を与える。ステップ1504は、ユーザが特定の機能にナビゲートするために機能への特定のリンクを選択したか、またはナビゲーション手段のうちの1つを使用したかを確認する。ユーザがそのどちらも行っていない場合、この方法はステップ1502に戻る。一方、ユーザが特定の機能にナビゲートするために特定のリンクを選択したか、またはナビゲーションツールを使用した場合、ステップ1506では、単一ウィンドウ内に機能特有の表示を提示する。すなわち、単一ナビゲート可能なウィンドウは、選択した機能にソフトウェアによってナビゲートされる。この特定の例が、ブラウジング機能およびメール機能が表示エリア1206内にそれぞれ表示される図１３および１４に関連して上記で与えられた。ステップ1506で機能特有の表示を提示することに関連して、ステップ1508では、UIのコマンドエリア内に機能特有のコマンドを提示することができる。有利なことに、このことは、ユーザが機能間をナビゲートするときに自動的に行われる。すなわち、ユーザが機能を変更するとき、ユーザの現在のコンテキストまたは機能に特有のコマンドセットがコマンドエリア内に自動的に表示される。このステップに関連して、前述のようにコンテキストブロックを自動的に表示することができる。ステップ1508では、前述のようにユーザが様々なコンテキストペインを選択することに応答して、その様々なコンテキストペインを提示するステップを含むことも理解されたい。次いでステップ1508はステップ1504に戻り、ユーザが別の機能にナビゲートしたかどうかを確認する。
【００８６】
（コンテキストブロックおよびコンテキストペインの持続性）
多機能アプリケーションのシナリオでは、特定の文書に具体的に関連しないコンテキストブロックまたはコンテキストペインが提供される可能性がある。それどころか、これらのコンテキストブロックおよびコンテキストペインは、ユーザが明示的に閉じるまで、文書に関わらず開いたままとなる。このようなコンテキストブロックおよびコンテキストペインを本明細書では、「アプリケーションレベルコンテキストブロック」および「アプリケーションレベルコンテキストペイン」と呼ぶ。
【００８７】
（アプリケーションレベルコンテキストブロックおよびアプリケーションレベルコンテキストペイン）
アプリケーションレベルコンテキストブロックは、ユーザが別の文書にナビゲートしていたときであってもUIから削除されないコンテキストブロックである。したがって、特定の文書に関連する代わりに、アプリケーションレベルコンテキストブロックは、全体としてアプリケーションの状態に関連する。アプリケーションレベルコンテキストペインも同様である。アプリケーションレベルコンテキストペインは、ユーザが別の文書にナビゲートしていたときであっても開いたままとなるコンテキストペインである。
【００８８】
例えば、ユーザが「検索」機能の使用を望むことを考える。ユーザが検索機能を開く場合、検索機能に対応するコンテキストペインは、コンテキストUIコンテナ内にある。検索コンテキストペインはユーザの特定の機能に特有である。したがって、ユーザが自身のEメール受信ボックスにナビゲートしていた場合、検索コンテキストペインにより、ユーザは自身の受信ボックスを検索することが可能となる。ユーザが特定の文書にナビゲートした場合、検索コンテキストペインにより、ユーザはその文書を検索することが可能となる。ユーザが検索コンテキストペインを閉じない限り、検索コンテキストペインにより、ユーザは機能間をナビゲートし、ユーザは個々の機能を用いて具体的に検索を実施することが可能となる。
【００８９】
（アプリケーションレベルコンテキストペインとスタッキング）
アプリケーションレベルコンテキストペインは、コンテキストペインのスタッキングに関する特別な挙動(behavioral)特性で実装される。この例では、特定の文書と類似性を有するコンテキストペイン、およびどんな文書とも類似性を有さないコンテキストペインの2種類のコンテキストペインが存在する。開かれたコンテキストペインのスタックは維持される。スタックは、最近のペインがスタックの最上部となるような順番となる。このスタックは、ユーザが明示的に閉じたペインはどれも含まない。以下の2つの基準の一方に満たすスタック中の最初のペインが表示される。その基準とは、(1)現在の文書と類似性を有するペイン、およびペインがどんな文書とも類似性を有さないことである。スタック中のペインがこの基準を満たさない場合、コンテキストブロックが表示される。これは、現在の文書と類似性を有さないどのペインも隠す効果を有することに留意されたい。これは、ナビゲーションが行われるとき、前の文書と類似性を有するペインが抑制されることを意味する。新しい文書との類似性を有するペインと、どんな文書とも類似性を有さないペインが表示の候補となる。これは、スタックの最上部に最も近いペインだけが実際に表示されるので候補と考えられる。
【００９０】
（結論）
上記で述べた実施形態は、ユーザが関わることになったタスクに特有のコマンドをユーザに自動的に提示する方法およびシステムを提供する。有利なことに、ユーザのコンテキストがアプリケーション内で変化するとき、自動的に提示されるコマンドも変化する。様々な実施形態において、ユーザは、追加のコンテキスト感応型コマンドを選択して表示する機会を得ることができる。全体として、この方法およびシステムにより、ユーザは、使用しているアプリケーションについて十分に知らなくても、多くの異なるコマンドを利用することが可能となるので有利である。1つの特定の実施形態では、ユーザが異なるタスクを実施することを可能にする複数の機能を、単一のアプリケーションが有する。この複数の機能は、ユーザが異なる機能間をナビゲート可能な単一ウィンドウのコンテキストで提示される。有利なことに、ある場合にブラウザに類似の外観であり、かつユーザがアプリケーション提供の機能間をブラウザのようにナビゲートしていくことを可能にするナビゲーション手段が提供される。ユーザが特定の機能にナビゲートしていたとき、機能特有のコマンドをユーザに自動的に提示することができる。機能特有のコマンドは、図示した例では、前述のようなコンテキストブロックおよびコンテントペインの形態で提示される。単一ナビゲート可能ウィンドウアプリケーションの一態様は、アプリケーションが様々な機能で構成することができる拡張可能なプラットフォームに対する基礎としての働きを果たすことができるものである。望ましくは、様々な機能を組み込むソフトウェアモジュール、ならびにコンテキストブロックおよびコンテキストペイン内に表示可能な適切なコマンドセットは、ソフトウェアモジュール内に含めることができる。モジュールがプラットフォーム内にプラグされるとき、拡張可能な機能のセットが提供される。拡張可能な各機能は、モジュールのソフトウェア開発者によって定義される方式で自動的に表示することができる、それ自体固有のコンテキストブロックおよびコンテキストペインのセットを有することができる。
【００９１】
本発明を構造的特徴および/または方法ステップに特有の術語で説明したが、添付の特許請求の範囲で定義される本発明は必ずしも説明した特定の機能またはステップに限定されないことを理解されたい。むしろ、特定の特徴およびステップは、特許請求の範囲に記載された発明を実施する好ましい形態として開示されている。
【図面の簡単な説明】
【図１】  従来技術による例示的ユーザディスプレイを示す図である。
【図２】  従来技術による、ダイアログボックスを含む例示的ユーザディスプレイを示す図である。
【図３】  本発明の様々な実施形態を実装するのに利用することができる例示的コンピュータシステムの高レベルブロック図である。
【図４】  記載の一実施形態による方法でのステップを記述する流れ図である。
【図５】  記載の一実施形態による例示的ユーザインタフェースの図である。
【図６】  記載の一実施形態による例示的コンテキストブロックの図である。
【図７】  記載の一実施形態による例示的コンテキストペインの図である。
【図８】  記載の一実施形態による方法でのステップを示す流れ図である。
【図９】  記載の一実施形態によるテーブルの図である。
【図１０】  記載の一実施形態によるツリー構造の図である。
【図１１】  記載の一実施形態による方法でのステップを記述する流れ図である。
【図１２】  記載の一実施形態によるユーザインタフェースの図である。
【図１３】  例示的機能を示す記載の一実施形態によるユーザインタフェースの図である。
【図１４】  例示的機能を示す記載の一実施形態によるユーザインタフェースの図である。
【図１５】  記載の一実施形態による方法でのステップを記述する流れ図である。
【図１】
0004833490.tif 000003
【図２】
0004833490.tif 000004
【図３】
0004833490.tif 000005
【図４】
0004833490.tif 000006
【図５】
0004833490.tif 000007
【図６】
0004833490.tif 000008
【図７】
0004833490.tif 000009
【図８】
0004833490.tif 000010
【図９】
0004833490.tif 000011
【図１０】
0004833490.tif 000012
【図１１】
0004833490.tif 000013
【図１２】
0004833490.tif 000014
【図１３】
0004833490.tif 000015
【図１４】
0004833490.tif 000016
【図１５】
0004833490.tif 000017