(57)【要約】  アプリケーション・ユーザ・インターフェースのプログラミングを公表し、関連付けられたユーザ・インターフェースの変更が、新規または既存のユーザ・インターフェース・コンポーネントの追加、削除、無効化、有効化、および転用を含むことを可能にする方法、システム、およびコンピュータ製品が提供される。
2009506461.tif 000002
【特許請求の範囲】
【請求項１】
グラフィカル・ユーザ・インターフェースを変更する方法であって、
ホスト・ソフトウェア・アプリケーションの１つまたは複数の機能を選択する１つまたは複数の選択可能なコントロールを含むグラフィカル・ユーザ・インターフェースを提供すること、
前記グラフィカル・ユーザ・インターフェースのＥｘｔｅｎｓｉｂｅｌ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ（ＸＭＬ）表現を提供すること、
前記ＸＭＬ表現への変更に適用されるＸＭＬの文法および構文規則を提供するＸＭＬスキーマ・ファイルを提供すること、
前記ホスト・ソフトウェア・アプリケーションに１つまたは複数の追加機能を提供するアドイン・アプリケーションを受け取ること、
前記１つまたは複数の追加機能に従って前記グラフィカル・ユーザ・インターフェースを変更する、前記ＸＭＬスキーマ・ファイルに従う前記ＸＭＬ表現への変更を受け取ること、および
前記グラフィカル・ユーザ・インターフェースが変更されて、前記１つまたは複数の追加機能へのアクセスを提供するように、前記ホスト・アプリケーションにより前記グラフィカル・ユーザ・インターフェースをレンダリングすること
を備えることを特徴とする方法。
【請求項２】
前記ＸＭＬ表現への変更を受け取ることは、前記ホスト・ソフトウェア・アプリケーションに提供された前記１つまたは複数の追加機能に関連付けられている前記グラフィカル・ユーザ・インターフェースに１つまたは複数の選択可能なコントロールを追加する前記ＸＭＬ表現への変更を受け取ることを含み、
前記グラフィカル・ユーザ・インターフェースが変更されて、前記１つまたは複数の追加機能へのアクセスを提供するように、前記ホスト・アプリケーションにより前記グラフィカル・ユーザ・インターフェースをレンダリングすることは、前記グラフィカル・ユーザ・インターフェースが前記アドイン・アプリケーションによって前記ホスト・ソフトウェア・アプリケーションに提供される前記１つまたは複数の追加の選択可能コントロールを表示するように、前記ホスト・ソフトウェア・アプリケーションにより前記グラフィカル・ユーザ・インターフェースをレンダリングすることを含む
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記ＸＭＬ表現への変更を受け取ることは、前記グラフィカル・ユーザ・インターフェースに含まれる選択可能コントロールの動作（behavior）を変える変更を受け取ることを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記ＸＭＬ表現への変更を受け取ることは、前記グラフィカル・ユーザ・インターフェースに含まれる１つまたは複数の選択可能コントロールを無効にする変更を受け取ることを含むことを特徴とする請求項１に記載の方法。
【請求項５】
アドイン・アプリケーションに従って変更される前記グラフィカル・ユーザ・インターフェースに含まれる選択可能コントロールへのフォーカスを受け取ると、前記変更済みの選択可能コントロールに関連付けられている前記アドイン・アプリケーションの識別を表示することを特徴とする請求項１に記載の方法。
【請求項６】
前記アドイン・アプリケーションに従って前記グラフィカル・ユーザ・インターフェースに含まれる前記１つまたは複数の選択可能コントロールの１つまたは複数を変更から制限することをさらに備えることを特徴とする請求項１に記載の方法。
【請求項７】
前記グラフィカル・ユーザ・インターフェースは、選択されたオブジェクトに適用可能な１つまたは複数の選択可能コントロールを表示するためのコンテクスト・ユーザ・インターフェースを含み、
前記ＸＭＬ表現への変更を受け取ることは、前記アドイン・アプリケーションによる前記コンテクスト・ユーザ・インターフェースに１つまたは複数の追加の選択可能コントロールを追加する変更を受け取ることを含む
ことを特徴とする請求項１に記載の方法。
【請求項８】
前記グラフィカル・ユーザ・インターフェースは、選択されたオブジェクトに１つまたは複数の機能を提供する１つまたは複数の選択可能コントロールを提供する選択可能コントロールからなるギャラリーを含み、
前記ＸＭＬ表現への変更を受け取ることは、１つまたは複数の追加の選択可能コントロールを選択可能コントロール・ユーザ・インターフェースの前記ギャラリーに追加する変更を受け取ることを含む
ことを特徴とする請求項１に記載の方法。
【請求項９】
前記ホスト・アプリケーションから前記アドイン・アプリケーションをアンインストールすると、前記ＸＭＬ表現への前記変更に関連付けられている前記グラフィカル・ユーザ・インターフェースに対する変更が前記グラフィカル・ユーザ・インターフェースに表示されないように、前記グラフィカル・ユーザ・インターフェースをレンダリングすることを特徴とする請求項１に記載の方法。
【請求項１０】
前記グラフィカル・ユーザ・インターフェースを変更したドキュメント・ベースのソリューションを終了するとき、前記ＸＭＬ表現への前記変更に関連付けられている前記グラフィカル・ユーザ・インターフェースに対する変更が前記グラフィカル・ユーザ・インターフェースに表示されないように、前記グラフィカル・ユーザ・インターフェースをレンダリングすることを特徴とする請求項１に記載の方法。
【請求項１１】
前記グラフィカル・ユーザに追加された任意のユーザ・インターフェース・コンポーネントが、前記グラフィカル・ユーザ・インターフェースの表示される表示スペースに合わせてスケール調整されるように、前記ＸＭＬ表現への前記変更に応じて前記グラフィカル・ユーザ・インターフェースに追加された任意のユーザ・インターフェース・コンポーネントを自動的にスケール調整することをさらに備えることを特徴とする請求項１に記載の方法。
【請求項１２】
前記ＸＭＬ表現への変更を受け取ることは、前記選択可能コントロールが第１のデータに関連付けられる前記ホスト・ソフトウェア・アプリケーションに提供された１つの追加機能に関連付けられている前記グラフィカル・ユーザ・インターフェースに選択可能なコントロールを追加する前記ＸＭＬ表現への変更を受け取ることを含み、
前記第１のデータへの変更を受け取ると、前記第１のデータへの前記変更に応じて前記グラフィカル・ユーザ・インターフェースに追加された前記選択可能コントロールを自動的に更新するように前記グラフィカル・ユーザ・インターフェースを最新表示する
ことを特徴とする請求項１に記載の方法。
【請求項１３】
コンピュータ実行可能命令を含むコンピュータ可読媒体であって、コンピュータによって実行されるとき、前記コンピュータ実行可能命令は、
前記グラフィカル・ユーザ・インターフェースのＥｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ（ＸＭＬ）表現を提供すること、
前記ＸＭＬ表現への変更に適用されるＸＭＬの文法および構文規則を提供するためのＸＭＬスキーマ・ファイルを提供すること、
前記グラフィカル・ユーザ・インターフェースに１つまたは複数の選択可能コントロールを追加するための前記ＸＭＬ表現への変更であって、前記グラフィカル・ユーザ・インターフェースを変更するための、前記ＸＭＬスキーマ・ファイルに従う前記ＸＭＬ表現への変更を受け取ること、および
前記グラフィカル・ユーザ・インターフェースが、前記グラフィカル・ユーザ・インターフェースに追加された前記１つまたは複数の選択可能コントロールを表示するように、前記グラフィカル・ユーザ・インターフェースをレンダリングすること
を備えるグラフィカル・ユーザ・インターフェースを変更する方法を実行することを特徴とするコンピュータ可読媒体。
【請求項１４】
前記ＸＭＬ表現への前記変更に応じて前記グラフィカル・ユーザ・インターフェースに追加されて、前記グラフィカル・ユーザ・インターフェースに含まれる、選択可能コントロールへのフォーカスを受け取ると、前記ＸＭＬ表現への前記変更に関する前記グラフィカル・ユーザ・インターフェース識別情報に表示することを特徴とする請求項１３に記載のコンピュータ可読媒体。
【請求項１５】
前記グラフィカル・ユーザ・インターフェースは、選択されたオブジェクトに適用可能な１つまたは複数の選択可能コントロールを表示するための、コンテクスト・ユーザ・インターフェースを含み、
前記ＸＭＬ表現への変更を受け取ることは、１つまたは複数の追加の選択可能コントロールを前記コンテクスト・ユーザ・インターフェースに追加する変更を受け取ることを含む
ことを特徴とする請求項１３に記載のコンピュータ可読媒体。
【請求項１６】
前記グラフィカル・ユーザ・インターフェースは、選択されたオブジェクトに１つまたは複数の機能を提供する１つまたは複数の選択可能コントロールを提供する、複数の選択可能コントロールからなるギャラリーを含み、
前記ＸＭＬ表現への変更を受け取ることは、１つまたは複数の追加の選択可能コントロールを選択可能コントロール・ユーザ・インターフェースの前記ギャラリーに追加する変更を受け取ることを含む
ことを特徴とする請求項１３に記載のコンピュータ可読媒体。
【請求項１７】
前記グラフィカル・ユーザ・インターフェースへの変更を可能にする、前記グラフィカル・ユーザ・インターフェースのＥｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ（ＸＭＬ）表現を提供すること、
前記ＸＭＬ表現への変更に適用されるＸＭＬの文法および構文規則を提供するＸＭＬスキーマ・ファイルを提供すること、
前記ＸＭＬスキーマ・ファイルに従う前記ＸＭＬ表現への変更を受け取ること、および
前記ＸＭＬ表現への前記変更に応じて前記グラフィカル・ユーザ・インターフェースが変更されるように、前記グラフィカル・ユーザ・インターフェースをレンダリングすること
を備えることを特徴とするグラフィカル・ユーザ・インターフェースを変更する方法。
【請求項１８】
前記ＸＭＬ表現への変更を受け取ることは、１つまたは複数の選択可能コントロールを前記グラフィカル・ユーザ・インターフェースに追加する前記ＸＭＬ表現への変更を受け取ることを含み、
前記ＸＭＬ表現への前記変更に応じて前記グラフィカル・ユーザ・インターフェースが変更されるように、前記グラフィカル・ユーザ・インターフェースをレンダリングすることは、前記グラフィカル・ユーザ・インターフェースが前記グラフィカル・ユーザ・インターフェースに追加された前記１つまたは複数の追加の選択可能コントロールを表示するように、前記グラフィカル・ユーザ・インターフェースをレンダリングすることを含む
ことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記ＸＭＬ表現への変更を受け取ることは、前記グラフィカル・ユーザ・インターフェースに含まれる選択可能コントロールの動作を変える変更を受け取ることを含むことを特徴とする請求項１７に記載の方法。
【請求項２０】
前記ＸＭＬ表現への変更を受け取ることは、前記グラフィカル・ユーザ・インターフェースに含まれる１つまたは複数の選択可能コントロールを無効にする変更を受け取ることを含むことを特徴とする請求項１７に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータ時代の到来と共に、コンピュータおよびソフトウェア・ユーザは、プレゼンテーションの作成、計算、編成、準備、電子メールの送受信、音楽の制作などを助けるユーザ・フレンドリなソフトウェア・アプリケーションに慣れ親しむようになっている。たとえば、最新の電子文書処理アプリケーションにより、ユーザはさまざまな便利なドキュメントを準備することができる。最新のスプレッドシート・アプリケーションにより、ユーザはデータを入力し、操作して、編成（organize）することができる。最新の電子スライド・プレゼンテーション・アプリケーションにより、ユーザは、テキスト、画像、データその他の便利なオブジェクトを含むさまざまなスライド・プレゼンテーションを作成することができる。最新のデータベース・アプリケーションにより、ユーザは大量のデータを格納し、編成して、交換することができる。
【０００２】
多くのソフトウェア・アプリケーションは、１つまたは複数のグラフィカル・ユーザ・インターフェースを提供し、これを通じてユーザはデータの入力と編集を行い、そこからユーザは関連するソフトウェア・アプリケーションのさまざまな機能にアクセスして利用する。通常のユーザ・インターフェースは、データを入力して、編集し、取り出すことができる作業領域を含む。加えて、ユーザ・インターフェースは通常、関連するソフトウェア・アプリケーションによって提供される機能を選択する働きをする１つまたは複数のボタンおよび／またはコントロールを含む。たとえば、複数のボタンまたはコントロールを、ドキュメントの印刷または保存用に提供することができ、複数のボタンまたはコントロールを、ドキュメントの各側面に対して書式設定プロパティを適用するために提供することができる。
【０００３】
多くの場合、サード・パーティ・ソフトウェア開発者は、既存のアプリケーションからは入手できない機能を提供するために、既存のアプリケーションに追加することができるソフトウェア・アドインを作成する。たとえば、アドイン・ソフトウェア・アプリケーションは、ドキュメントに特殊な脚注または後注を追加する、文書処理アプリケーションに属する機能（feature）を提供することができる。通常、追加の機能を提供することに加えて、アドイン・アプリケーションは、追加の機能にアクセスするための、新しいツール・バー、ボタン、またはその他のコントロールなど、１つまたは複数の新しいユーザ・インターフェース・コンポーネントを、既存のアプリケーション・ユーザ・インターフェースに提供する。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
１つの従来技術の方法によれば、サード・パーティ開発者は、サード・パーティのアドイン・ソフトウェアのニーズに従って、既存のユーザ・インターフェースについてのカスタマイズを可能にするために、アプリケーションの既存ユーザ・インターフェースに関連付けられているオブジェクト・モデルへのアクセスを与えられる。残念なことに、既定のユーザ・インターフェースのためのそのオブジェクト・モデルは、たとえば、文書処理アプリケーション、スプレッドシート・アプリケーション、スライド・プレゼンテーション・アプリケーションなどの多種多様なアプリケーションにわたる共同使用をめざして、一般に、設計されておらず、そのようなアプリケーションは、カスタムのユーザ・インターフェース・コンポーネントに関連して、さまざまなそしておそらくは望ましくない動作を呈することも多いため、そのような従来技術の方法には欠点がある。
【０００５】
本発明は、これらおよび他のさまざまな考慮事項に関して、なされている。
【課題を解決するための手段】
【０００６】
この要約は、以下の詳細な説明でさらに説明される一連の概念を簡略化された形態で示すために提供される。この要約は、請求の範囲に係る主題の重要な特徴または基本的特徴を特定することを意図するものではなく、また請求の範囲に係る主題の範囲を決定する際の補助となることを意図するものでもない。
【０００７】
本発明の実施形態は、ソフトウェア・アプリケーションのユーザ・インターフェース・プログラミングをサード・パーティ・アプリケーション・アドイン開発者に公表し、既存のアプリケーション・ユーザ・インターフェースの変更が、アドイン・アプリケーションに関連付けられている新規または変更されたユーザ・インターフェース・コンポーネントを含むことを可能にする方法、システム、およびコンピュータ製品を提供することにより、前述の問題およびその他の問題を解決する。本発明の態様によれば、既定のユーザ・インターフェースを変更するのに使用できるＸＭＬプログラミングに適用されるＥｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ（ＸＭＬ）スキーマが、サード・パーティ開発者に公表され、彼らが、関連するＸＭＬスキーマに従ってユーザ・インターフェース・プログラミングへの変更を指定することができる。たとえば、サード・パーティ開発者が、アドイン・アプリケーションの機能にリンクされる新しいボタンまたはコントロールを、既存のユーザ・インターフェースに追加したいと考える場合、サード・パーティ開発者は、関連付けられたＸＭＬスキーマによって指示される文法および構文の規則に従って、ユーザ・インターフェースの既存のプログラミングを変更することができる。本発明の１つの態様によれば、ユーザ・インターフェース変更についてのＸＭＬまたはその他の適切な表現は、必ずしも元のユーザ・インターフェースと同じプログラミング言語に従うことはない。さらに、元の組み込みユーザ・インターフェース・プログラミングは非常に複雑なものである場合もあり、本発明に従って公表されるＸＭＬスキーマは、元のユーザ・インターフェースのプログラミング全体のサブセットに過ぎない可能性もある。変更済みプログラミングがホスト・ソフトウェア・アプリケーションによって実行されるとき、ユーザ・インターフェースは、サード・パーティ開発者によって行われた変更を含んでレンダリングされる。たとえば、ユーザ・インターフェースのプログラミングが、新しいボタンを追加するように変更される場合、新しいボタンは、その変更が、その関連付けられたＸＭＬスキーマに従って行われる限り、ユーザ・インターフェースのプログラミングへの変更に応じてユーザ・インターフェース内にレンダリングされる。
【０００８】
本発明の複数の態様によれば、新しいユーザ・インターフェース・コンポーネントが、既存のユーザ・インターフェースに追加することができ、関連するアドイン機能にリンクすることができる。新しいユーザ・インターフェース・コンポーネントのサイズは、ユーザ・インターフェースが表示されるウィンドウが縮小または拡大されると、使用可能な表示スペースに合わせて自動的にスケール調整することができる。加えて、本発明の複数の態様によれば、変更済みユーザ・インターフェースのエンド・ユーザは、必要に応じて、追加されたユーザ・インターフェース・コンポーネントを取り除くことができる。特定のソフトウェア・アドインがアンインストールされる場合、アンインストールされるアドインに関連付けられている追加または変更されたユーザ・インターフェース・コンポーネントは、その後にレンダリングされるユーザ・インターフェースに表示されない。
【０００９】
本発明のその他の態様によれば、ボタンまたはコントロールなどの既存のユーザ・インターフェース・コンポーネントは、サード・パーティによってまとめて無効にされるかまたは取り除かれてもよい。加えて、既存のユーザ・インターフェース・コンポーネントは転用（repurpose）されて、転用されたコンポーネントが選択されたときにさまざまな動作（behaviors）を提示するようにしてもよい。
【００１０】
本発明のその他の態様によれば、既存のユーザ・インターフェースを変更するための公表されたスキーマにアクセスすることによって、サード・パーティのコンテクスト・ユーザ・インターフェースおよびコンテクスト・ユーザ・インターフェースのボタンまたはコントロールは、既存のユーザ・インターフェースに追加され、追加されたコンテクスト・ユーザ・インターフェースに関連付けられているドキュメント・オブジェクトが選択されるときに、既存のユーザ・インターフェース内に顕在化することができる。加えて、選択されると、コントロールは、アプリケーションが、選択されたオブジェクトへの１つまたは複数のアドイン機能からなることをもたらし、このコントロールは、アプリケーションの１つまたは複数の機能を選択されたオブジェクトに適用するための、既存のユーザ・インターフェースで展開される、コントロールからなるギャラリーまたはコレクションに追加することができる。
【００１１】
本発明のその他の態様によれば、ＸＭＬスキーマは、関連するソフトウェア・アプリケーションへのサード・パーティ・アドインのニーズに従ってカスタマイズされる新規ユーザ・インターフェース（start-from-scratch user interfaces）を構築するために使用することができる。そのような新規ユーザ・インターフェース・ソリューションがレンダリングされると、その結果得られるユーザ・インターフェースは、関連付けられたソフトウェア・アプリケーション用の、ユーザに通常公表されるアプリケーション・ユーザ・インターフェースに対する類似性がわずかになることもある。つまり、関連するドキュメントが開始されると、開始されたドキュメントにユーザ機能を提供するカスタマイズされたユーザ・インターフェースは、そのドキュメント用に提供されたカスタマイズされたユーザ・インターフェースに従って、レンダリングされる。
【００１２】
本発明を特徴付けるさまざまな特徴および利点は、以下の詳細な説明を読み、関連図を検討することによって明らかとなろう。前述の概要および以下の詳細な説明は、説明のみを目的とし、請求の範囲に係る本発明を限定するものではないことを理解されたい。
【発明を実施するための最良の形態】
【００１３】
上記で簡単に説明されたように、本発明の実施形態は、新規または既存のユーザ・インターフェース・コンポーネントに対する追加、削除、無効化、有効化、および転用（repurposing）を含めるように、関連するユーザ・インターフェースを変更できるようにするアプリケーション・ユーザ・インターフェースのプログラミングを公表する方法、システム、およびコンピュータ製品に向けられる。以下の詳細な説明において、参照が、本明細書の一部を形成する添付の図に対してなされ、そこでは、特定の実施形態または実施例を説明することにより、示される。これらの実施形態は、組み合わせることもでき、他の実施形態を利用することもでき、本発明の精神または範囲を逸脱することなく、構造的な変更を加えることができる。したがって、以下の詳細な説明は限定的にとらえるべきではなく、本発明の範囲は、請求の範囲およびその均等物によって定義される。
【００１４】
ここで図を参照すると、複数の図全体を通じて類似した番号が類似した要素を示しているが、これ以降、本発明の態様および例示的なコンピューティング・オペレーティング環境について説明してゆく。図１および以下の説明は、本発明が実装される適切なコンピューティング環境について簡単に概要を説明することを意図している。本発明については、パーソナル・コンピュータ上で稼動するアプリケーション・プログラムと共に実行するプログラム・モジュールの一般的なコンテクストにおいて説明されるが、当業者であれば、本発明が他のプログラム・モジュールとの組合せにおいても実装できることを理解するであろう。
【００１５】
一般に、プログラム・モジュールには、特定のタスクを実行するかまたは特定の抽象データタイプを実装するルーチン、プログラム、コンポーネント、データ構造、および他のタイプの構造が含まれる。さらに、本発明が、ハンドヘルド機器、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースまたはプログラマブル家庭用電化製品、ミニ・コンピュータ、メインフレーム・コンピュータなどを含む、他のコンピュータ・システムの構成により実施できることを当業者は理解するであろう。本発明はさらに、タスクが通信ネットワークを通じてリンクされたリモート処理装置によって実行される分散コンピューティング環境においても実施することができる。分散コンピューティング環境において、プログラム・モジュールは、ローカルおよびリモートの記憶装置に配置することができる。
【００１６】
本発明の実施形態は、コンピュータ・プロセス（方法）、コンピューティング・システム、あるいはコンピュータ・プログラム製品またはコンピュータ可読媒体などの製品として実装することができる。コンピュータ・プログラム製品は、コンピュータ・システムによって読み取り可能であり、コンピュータ・プロセスを実行するための命令のコンピュータ・プログラムを符号化することによって読み取り可能なコンピュータ記憶媒体とすることができる。コンピュータ・プログラム製品はさらに、コンピュータ・システムによって読み取り可能であり、コンピュータ・プロセスを実行するための命令のコンピュータ・プログラムを符号化するキャリア上で伝搬される信号とすることができる。
【００１７】
図１を参照すると、本発明を実装するための１つの例示的なシステムは、コンピューティング装置１００のようなコンピューティング装置を含む。基本的な構成において、コンピューティング装置１００は通常、少なくとも１つの処理装置１０２およびシステム・メモリ１０４を含む。コンピューティング装置の正確な構成および種類に応じて、システム・メモリ１０４は揮発性（ＲＡＭなど）、不揮発性（ＲＯＭ、フラッシュ・メモリなど）、またはこの２つの組合せであってもよい。システム・メモリ１０４は通常、ワシントン州レドモンドのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎが提供するＷＩＮＤＯＷＳ（登録商標）オペレーティング・システムなどのネットワーク・パーソナル・コンピュータの動作を制御するのに適したオペレーティング・システム１０５を含む。システム・メモリ１０４はまた、１つまたは複数のソフトウェア・アプリケーション１０６、１２０を含み、プログラム・データ１０７を含むこともできる。この基本構成は、図１において、破線１０８内のコンポーネントにより表されている。
【００１８】
本発明の実施形態によれば、アプリケーション１０６は、電子メール・プログラム、カレンダー・プログラム、インターネット・ブラウジング・プログラムなど、多くの種類のプログラムを備えることができる。そのようなプログラムの例としては、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎが製造するＯＵＴＬＯＯＫ（登録商標）があげられる。アプリケーション１０６はまた、その他の多くの種類の機能を提供する多機能ソフトウェア・アプリケーションを備えることもできる。そのような多機能アプリケーションは、文書処理プログラム、スプレッドシート・プログラム、スライド・プレゼンテーション・プログラム、データベース・プログラムなど、多くのプログラム・モジュールを含むことができる。そのような多機能アプリケーションの例としては、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎが製造するＯＦＦＩＣＥ（商標）があげられる。アドイン・ソフトウェア・アプリケーション１２０は、アプリケーション１０６に追加することができる任意のソフトウェア・アプリケーションであり、これは、本明細書に説明されるように、アプリケーション１０６の機能を高めたり、それへの追加の機能を提供する。さらに、本明細書に説明されるように、アドイン・ソフトウェア・アプリケーションは、ドキュメント・ベースのソフトウェア・ソリューション、たとえば、添付されたツール・バーを含むスプレッドシート・ドキュメント、または、ボタンまたはコントロールをツール・バーを追加するマクロまたはその他のコードを含む文書処理ドキュメントなど、を含むことができる。
【００１９】
コンピューティング装置１００は、追加の特徴または機能を備えることができる。たとえば、コンピューティング装置１００はまた、たとえば磁気ディスク、光ディスク、またはテープなどの追加のデータ記憶装置（取り外し可能および／または固定式）を含むことができる。そのような追加の記憶装置は、取り外し可能記憶装置１０９および固定式記憶装置１１０によって図１に示される。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータなどの情報を記憶するための任意の方法または技術において実装された揮発性および不揮発性の、取り外し可能および固定式の媒体を含むことができる。システム・メモリ１０４、取り外し可能記憶装置１０９および固定式記憶装置１１０はすべて、コンピュータ記憶媒体の例である。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリその他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置その他の磁気ストレージ装置、あるいは望ましい情報を格納するために使用することができ、コンピューティング装置１００によってアクセスすることができる他の媒体を含んでいるが、これらに限定されることはない。そのようなコンピュータ記憶媒体は、装置１００の一部にすることができる。コンピューティング装置１００はさらに、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置１１２を備えることもできる。ディスプレイ、スピーカ、プリンタなどの出力装置１１４も含めることができる。これらの装置は当技術分野においてよく知られており、本明細書において詳細に説明する必要なはい。
【００２０】
コンピューティング装置１００はまた、装置が、たとえばイントラネットまたはインターネットなどの分散コンピューティング環境におけるネットワークなどを介して他のコンピューティング装置１１８と通信できるようにする通信接続１１６を含むことができる。通信接続１１６は、通信媒体の一例である。通信媒体は通常、搬送波その他の搬送機構などの変調データ信号で、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータによって具現され、任意の情報伝達媒体を含むことができる。「変調データ信号」という用語は、信号内に情報を符号化するような方法で設定または変更された１つまたは複数の特性セットを有する信号を意味する。たとえば、通信媒体は、有線ネットワークまたは直接配線接続のような有線媒体、および音響、ＲＦ、赤外線、他の無線媒体などの無線媒体を含んでいるが、これらに限定されることはない。本明細書で使用されているコンピュータ可読媒体という用語は、記憶媒体および通信媒体を共に含んでいる。
【００２１】
図２は、本発明の実施形態により、変更することができるユーザ・インターフェースの例を示すコンピュータ画面表示を表す。当業者であれば理解されるように、図２に示されるユーザ・インターフェース例は、例示および説明のみを目的とするものである。つまり、本発明の実施形態は、さまざまなユーザ・インターフェース・コンポーネントおよびさまざまなユーザ・インターフェースのレイアウトを有する多種多様なユーザ・インターフェースに使用することができる。したがって、図２に示されるユーザ・インターフェース例に関して本発明の説明は、請求の範囲に係る発明をいかなる方法によっても制限または限定するものと見なすべきではない。
【００２２】
図２に示されるユーザ・インターフェースは、図１に示されるソフトウェア・アプリケーション１０６などの、所定のソフトウェア・アプリケーションのもとで使用可能なタスク・ベースの機能に関連付けられている選択可能なコントロールを表示するリボン状ユーザ・インターフェースを含む。ユーザ・インターフェース２００の第１のセクション２１０は、スプレッドシート・データ分析に対する文書処理などの、特定のタスクに関連付けられていない機能用の汎用選択可能コントロール（generic selectable controls）を含む。たとえば、セクション２１０は、「ファイルを開く」、「ファイルを保存」、「印刷」などの一般的なファイル・コマンド用の選択可能コントロールを含む。本発明の１つの実施形態によれば、第１のセクション２１０に含まれている選択可能コントロールは、たとえば文書処理アプリケーション、スプレッドシート・アプリケーション、スライド・プレゼンテーション・アプリケーションなど、さまざまなソフトウェア・アプリケーションによって使用される可能性のあるコントロールである。つまり、第１のセクション２１０に含まれている選択可能コントロールは、複数の異なるソフトウェア・アプリケーションにわたって一般に、見い出され、使用されるコントロールとすることができる。
【００２３】
ユーザ・インターフェース２００の第１のセクション２１０に隣接しているのは、タスク・ベースのタブ・セクションである。タブ・セクションは、所定のソフトウェア・アプリケーションによって提供されるタスク・ベースの機能に関連付けられている選択可能タブを含む。例示のため、図２に示されるタスク・ベースのタブは、文書処理アプリケーションを使用して実行することができるタスクに関連付けられている。たとえば、「Ｗｒｉｔｉｎｇ」タブ２１５は、書き込みタスクを実行するために使用される機能に関連付けられている。「Ｉｎｓｅｒｔ」タブ２２０は、挿入操作またはタスクの実行に関連する機能に関連付けられている。「Ｐａｇｅ  Ｌａｙｏｕｔ」タブ２３０は、所定のドキュメントのページ・レイアウト属性を実行または編集するために関連するアプリケーションによって提供される機能に関連付けられている。
【００２４】
他の多くのタスク・ベースのタブまたは選択可能コントロールは、他のタスクに関連付けられている機能を呼び出すためにユーザ・インターフェースのタブ・セクションに追加できることを理解されたい。たとえば、タスク・タブは、テキスト効果、ドキュメント・スタイル、レビューおよびコメントなどに対して追加することができる。さらに、前述のように、ユーザ・インターフェース２００は、多種多様なソフトウェア・アプリケーションに使用することができる。たとえば、ユーザ・インターフェース２００がスライド・プレゼンテーション・アプリケーションに使用される場合、タブ・セクションに含まれるタブは、「Ｃｒｅａｔｅ  Ｓｌｉｄｅｓ」、「Ｉｎｓｅｒｔ」、「Ｆｏｒｍａｔ」、「Ｄｒａｗｉｎｇ  Ｅｆｆｅｃｔｓ」などのように、スライド・プレゼンテーション・アプリケーションが実行できるさまざまなタスクに関連付けられたタブを含むことができる。同様に、スプレッドシート・アプリケーション１４０に対してユーザ・インターフェース２００のタブ・セクションで使用されるタブは、「Ｄａｔａ」または「Ｄａｔａ  Ｅｎｔｒｙ」、「Ｌｉｓｔｓ」、「Ｐｉｖｏｔ  Ｔａｂｌｅｓ」、「Ａｎａｌｙｓｉｓ」、「Ｆｏｒｍｕｌａｓ」、「Ｐａｇｅｓ  ａｎｄ  Ｐｒｉｎｔｉｎｇ」などのような、スプレッドシート・アプリケーションを使用して実行できるタスクに関連付けられたタブを含むことができる。
【００２５】
汎用コントロール・セクション２１０およびタスク・ベースのタブ・セクションのすぐ下には、タスク・ベースのタブ・セクションから選択されたタブ２１５、２２０、２３０に関連付けられている選択可能機能コントロールを表示するための選択可能機能コントロール・セクションがある。本発明の実施形態によれば、「Ｗｒｉｔｉｎｇ」タブ２１５などの特定のタブが選択された場合、たとえば書き込みタスクなど、選択されたタスクを実行するための関連付けられたソフトウェア・アプリケーションから使用可能な選択可能機能が、論理グルーピングに表示される。たとえば、図２を参照すると、第１の論理グルーピング２４０は、「Ｃｌｉｐｂｏａｒｄ」の見出しの下に表示される。本発明の実施形態によれば、クリップボード・セクション２４０は、論理的にグループにまとめられ、書き込みの一般タスクの下でクリップボード・アクションに関連付けられている選択可能機能コントロールを含む。
【００２６】
「Ｆｏｒｍａｔｔｉｎｇ」セクション２５０に提示される選択可能コントロールは、テキスト行端そろえ、テキスト・タイプ、フォントサイズ、行間隔、太字体、イタリック体、下線などの選択可能コントロールを含むことができる。したがって、書式設定操作に関連付けられている機能は、「Ｗｒｉｔｉｎｇ」の全タスクの下で論理的にグループ化される。第３の論理グルーピング２６０は、「Ｗｒｉｔｉｎｇ  Ｔｏｏｌｓ」の見出しの下に提示される。書き込みツール・セクション２６０は、検索／置換、オートコレクトなどの書き込みツールを含んでいる。本発明の実施形態によれば、タブ・セクションから個々のタスク・ベースのタブを選択すると、さまざまな論理グルーピングの選択可能機能コントロールの異なるセットが、選択されたタスク・ベースのタブに関連付けられているユーザ・インターフェース２００内に提示される。たとえば、「Ｉｎｓｅｒｔ」タスク・タブ２２０が選択された場合、ユーザ・インターフェース２００に提示される選択可能機能コントロールは、図２に示されているようなものから、挿入タスクに関連付けられている選択可能機能コントロールを含むように変更される。
【００２７】
本明細書において説明されるように、多くの場合、サード・パーティ・アプリケーションまたはソリューション開発者は、既存のアプリケーションに機能を追加するために、既存のアプリケーションに追加することができるソフトウェア・アプリケーションまたはモジュールを提供する。たとえば、ソフトウェア開発者は、ホスト・アプリケーション（たとえば、文書処理アプリケーション、スプレッドシート・アプリケーション、スライド・プレゼンテーション・アプリケーションなど）で使用可能ではない追加の書式設定プロパティまたはその他の機能を追加する、文書処理アプリケーションに追加可能なソフトウェア・アプリケーションまたはモジュールを作成することができ、またはサード・パーティのアドイン・アプリケーションまたはモジュールは、ホスト・アプリケーションによってすでに提供されている機能を変更したり強化したりすることができる。本明細書に説明されるように、本発明の実施形態は、ホスト・アプリケーションの１つまたは複数のユーザ・インターフェースに関連付けられているプログラミングへのアクセスを提供して、サード・パーティ・アプリケーション開発者が、ホスト・アプリケーションのユーザ・インターフェースを変更することを可能にして、所定のアドイン・アプリケーションまたはモジュールによって提供される追加または変更された機能に適用できるユーザ・インターフェース・コンポーネントを提供する。
【００２８】
本発明の実施形態は、アドイン・アプリケーションに関連する使用に限定されないことが理解されよう。たとえば、サード・パーティ開発者は、本発明の複数の態様を使用して、追加された機能とは関係なく、アプリケーション・ユーザ・インターフェースのコンポーネントを変更することができる。たとえば、サード・パーティは、本明細書に説明されるように、追加の機能とは切り離して、ユーザ・インターフェース・コンポーネントの動作を変更したいと考えることもできる。
【００２９】
図３は、本発明の実施形態による、ユーザ・インターフェース例と、ユーザ・インターフェース例を変更するために修正することができるユーザ・インターフェース例のＸＭＬ表現との関係を示す簡略化ブロック図である。図３を参照すると、たとえば文書処理アプリケーション、スプレッドシート・アプリケーション、スライド・プレゼンテーション・アプリケーションなどの、ホスト・アプリケーション１０６のユーザ・インターフェース３０５は、Ｆｉｌｅコマンド・ボタン３１０、Ｔａｂ１ボタン３１５、およびＴａｂ２ボタン３２０を有することが示される。図２を参照して上記で説明されているように、図３に示されるユーザ・インターフェース例３０５は、例示を目的としているに過ぎず、本発明の実施形態により所定のユーザ・インターフェースで提供できる多数のボタン、コントロール、またはその他の選択可能機能を限定するものではない。ユーザ・インターフェース例３０５は、ボタンまたはコントロールの第１の論理グルーピング３２５、ボタンまたはコントロールの第２の論理グルーピング３３０を含む。ユーザ・インターフェース例３０５によれば、ボタンまたはコントロールの第１の論理グルーピング３２５および第２の論理グルーピング３３０を提供するＴａｂ２ボタン３２０が選択されている。
【００３０】
本発明の実施形態によれば、ユーザ・インターフェース３０５は、Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ（ＸＭＬ）などのマークアップ言語に従ってプログラミングされ構造化される。本明細書において説明されるように、ユーザ・インターフェース３０５のプログラミングと構造化に適したその他の言語も使用できることを理解されたい。図３に示されるように、ＸＭＬファイル３４０は、ユーザ・インターフェース例３０５のＸＭＬプログラミングおよび構造を提供するために説明される。たとえば、＜ＵＩ＞ルート・タグは、３つの子タグ＜ＦＩＬＥ＞、＜ＴＡＢ１＞、および＜ＴＡＢ２＞を有するものとして提供される。＜ＴＡＢ２＞タグは、＜ＬＧ１＞タグ（ボタンまたはコントロールの第１の論理グルーピング）および＜ＬＧ２＞タグ（ボタンまたはコントロールの第２の論理グルーピング）を含む２つの子タグを含む。ＸＭＬファイル３４０は、適格な（well-formed）ＸＭＬファイル３４０を示すことを意図するものではなく、説明のみを目的として提供されることを理解されたい。
【００３１】
ＸＭＬスキーマ・ドキュメントまたはファイル（図示せず）は、ホスト・アプリケーションの開発者によって提供され、ＸＭＬの文法および構文規則を提供し、このＸＭＬの文法および構文規則は、たとえば新規または既存のタグのＸＭＬファイル３４０への追加、削除、あるいは変更など、ユーザ・インターフェース３０５をプログラミングして構造化するために使用されるＸＭＬに適用可能である。たとえば、ＸＭＬスキーマは、ＸＭＬファイル３４０に追加できるＸＭＬタグのタイプおよび名前を指示することができる。たとえば、ユーザ・インターフェース３０５に関連付けられているＸＭＬスキーマは、各タブ・タグが少なくとも１つの論理グルーピングの子タグを含む必要があることを要求することができる。もう１つの例をあげると、ユーザ・インターフェース３０５に関連付けられているＸＭＬスキーマは、ＸＭＬファイル３４０内の特定のＸＭＬが変更されてはならないこと、たとえば元のユーザ・インターフェース３０５の所定のタブ・タグの下にある論理グルーピング・タグがサード・パーティによって変更されてはならないことを指示することができる。
【００３２】
もう１つの例をあげると、ＸＭＬスキーマは、ＸＭＬファイル３４０への変更を介してユーザ・インターフェース３０５に適用される、あるいは適用されない特定の書式設定プロパティ（formatting properties）を指示することができる。ＸＭＬスキーマ・ファイル３４０全体および関連するＸＭＬスキーマ・ファイル全体は、サード・パーティ開発者に公表することができる。あるいは、ホスト・アプリケーション・ユーザ・インターフェース３０５に関連付けられているＸＭＬファイル３４０のサブセットのみ、および関連するＸＭＬスキーマ・ファイルのサブセットのみが、サード・パーティ開発者に公表され、ホスト・アプリケーション・ユーザ・インターフェース３０５に、限定された数および限定されたタイプの変更を行えるようにすることもできる。
【００３３】
ホスト・アプリケーション・ユーザ・インターフェース３０５のＸＭＬファイル３４０および関連するＸＭＬスキーマ・ファイルは、サード・パーティ３５０に公表され、サード・パーティ３５０が、本明細書において説明されるように、ユーザ・インターフェース３０５の変更用の関連するＸＭＬスキーマ・ファイルによって提供される文法および構文規則に従って、ＸＭＬファイル３４０に変更を行えるようにする。たとえば、サード・パーティ３５０は、ホスト・アプリケーションで現在使用できない追加の機能を提供するソフトウェア・アプリケーション・アドインを提供することができる。たとえば、サード・パーティは、第３のタブ・ボタンをユーザ・インターフェース３０５に追加して、これが選択されたときに、追加された第３のタブ・ボタンの下に、ボタンまたはコントロールの追加論理グルーピングを提供し、これにより、サード・パーティ・アプリケーション・アドインによって提供される機能を選択するためのボタンおよび／またはコントロールを提供することを望むこともできる。たとえば、サード・パーティ・アプリケーション・アドインは、文書処理アプリケーションに特殊な脚注または後注を提供するための機能を追加することができる。アドインによって提供される機能をユーザに公表するため、サード・パーティ開発者は、たとえば「後注／脚注」タブなどの追加のタブをユーザ・インターフェース３０５に設けることが必要になる場合もある。「後注／脚注」タブを追加することに加えて、サード・パーティ開発者は、追加された後注および脚注機能のさまざまな態様を選択するためのボタンおよび／またはコントロールを提供する「後注／脚注」タブの選択に応じてユーザ・インターフェース３０５に表示されるボタンまたはコントロールからなる追加の論理グルーピングを追加したいと望むこともできる。既存のボタンまたはコントロールは、同様に、関連するＸＭＬファイル３４０を変更することによってユーザ・インターフェース３０５から削除できることを理解されたい。
【００３４】
１つの実施形態によれば、ＸＭＬファイル３４０を介してサード・パーティ開発者に公表されるマークアップは、増分特性（incremental nature）を備え、ホスト・アプリケーション・ユーザ・インターフェース３０５を変更するための制限された機能がサード・パーティ開発者に提供されるようになっている。したがって、１つの実施形態によれば、サード・パーティ開発者は、任意の場所において独自のユーザ・インターフェース・コンポーネントを挿入できるようにするＸＭＬファイル３４０を受信しない。その代わり、この実施形態によれば、サード・パーティに公表されたＸＭＬファイル３４０および関連するスキーマは、サード・パーティ開発者が、新しいユーザ・インターフェース・コンポーネント用の望ましい場所を指定することを可能にし、たとえば既存のコンポーネントＡＢＣの後ろに新しいコンポーネントを挿入できるようにし、次ぎに、ホスト・アプリケーションは、この修正済みＸＭＬファイルを、修正されたユーザ・インターフェース３０７を表示するために、ホスト・アプリケーション・ユーザ・インターフェース３０５を表す全ＸＭＬファイルに統合する。
【００３５】
１つの実施形態によれば、各サード・パーティ開発者によって提供された修正済みＸＭＬファイル３５５は、一意のＸＭＬネームスペースによって識別されて、あるサード・パーティ・アプリケーションのアドインが、別のサード・パーティのアドインによって供給または変更されたユーザ・インターフェース・コンポーネントを変更するのを防止する。代替として、サード・パーティ・アドイン・ファイル３５５は、たとえば、グローバル固有識別子（ＧＵＩＤ；ｇｌｏｂａｌｌｙ  ｕｎｉｑｕｅ  ｉｄｅｎｔｉｆｉｅｒ）またはローカル・ファイル名識別子など、他の手段によって識別することができる。
【００３６】
ホスト・アプリケーション・ユーザ・インターフェース３０５のＸＭＬ表現３４０がサード・パーティ３５０によってアクセスされると、サード・パーティ３５０は、ユーザ・インターフェース３０５に所望のボタンまたはコントロールを追加するための関連付けられたＸＭＬスキーマ・ファイルに従って、ユーザ・インターフェース３０５に適用されるＸＭＬを修正することができる。その結果得られる修正済みＸＭＬファイル３５５は、ユーザ・インターフェース３０５のＸＭＬファイル３５５に行われた変更を示す。たとえば、修正済みＸＭＬファイル３５５を参照すると、サード・パーティ開発者３５０は、＜ＴＡＢ３＞タグ３６０および＜ＬＧ４＞タブ（ボタンおよび／またはコントロールの第４の論理グルーピング）３６５を追加した。ＸＭＬファイル３５５は、本発明の実施形態による既存のユーザ・インターフェースに行うことができる変更の増分特性を示す。つまり、この例示の変更は、新しいユーザ・インターフェース・タブ（ＴＡＢ３）および関連するボタンまたはコントロールの論理グルーピング（ＬＧ４）の追加を目的とするので、ＸＭＬファイル３５５は、ユーザ・インターフェース３０５の公表されたＸＭＬに一括変更を行うのではなく、新しいタブおよび論理グルーピングを既存のユーザ・インターフェースに追加する増分変更（incremental change）を行う必要があるだけである。
【００３７】
ＸＭＬファイル３４０に行われた所望の変更がホスト・ユーザ・インターフェース３０５に適用されると、修正済みユーザ・インターフェース３０７は、図３に示されるように表示される。修正済みユーザ・インターフェース３０７を参照すると、追加された第３のタブ３７０および追加されたボタンおよび／またはコントロールの第４の論理グルーピング３７５が示されている。追加されたタブ、ボタンまたはコントロールの論理グルーピングがサード・パーティ・アプリケーションアドインの関連する機能にリンクされると、それらの追加されたタブ、ボタンまたはコントロールの選択は、関連付けられている追加機能の実行を引き起こす。したがって、ホスト・アプリケーション・ユーザ・インターフェースの公表されたＸＭＬファイルおよび関連するＸＭＬスキーマにアクセスすることにより、サード・パーティ・アプリケーション開発者は、関連するアドイン・アプリケーションの機能を選択するのに必要とされるボタンおよび／またはコントロールを提供するために、ホスト・アプリケーション・ユーザ・インターフェース３０５を変更することができる。
【００３８】
以下に示すのは、「Ｄａｔａ  Ａｎａｌｙｓｉｓ」ボタンまたはコントロールをツールメニューの最後に追加するための、サード・パーティ開発者によって変更または供給されたＸＭＬファイル例の抜粋であり、ここで「Ｄａｔａ  Ａｎａｌｙｓｉｓ」ボタンは、「Ｄａｔａ  Ｔｏｏｌｓ」とラベル付けされたボタンまたはコントロールの論理グルーピングの後に挿入される。このＸＭＬの例に示されるように、＜ｉｎｓｅｒｔＡｆｔｅｒ＞のようなＸＭＬ構文は、関連するＸＭＬスキーマ・ファイルによって指示され、サード・パーティ・アプリケーション開発者が、「ＧｒｏｕｐｉｎｇＤａｔａＴｏｏｌｓ」と呼ばれるボタンまたはコントロールの論理グルーピングの後に「Ｄａｔａ  Ａｎａｌｙｓｉｓ」と呼ばれるボタンを挿入できるようにする。当業者であれば理解されるように、以下のＸＭＬの例は、例示のみを目的とするものであり、請求の範囲に係る発明を限定するものではない。
【００３９】
【表１】
2009506461.tif 000003
【００４０】
ＸＭＬファイル３４０への変更は、さまざまな方法に従って、サード・パーティ開発者により行われることができる。１つの実施形態によれば、ＸＭＬファイル３４０および関連するスキーマは、アプリケーション・レベルにおいてサード・パーティ開発者によりアクセスすることができる。たとえば、サード・パーティ・アプリケーション開発者が、ユーザ・インターフェースのプログラミングと構造化に使用されるＸＭＬファイル３４０および関連するスキーマにアクセスすることを可能にするボタンまたはコントロールが、ユーザ・インターフェース３０５に提供されてもよい。理解されるように、ＸＭＬファイル３４０および関連するスキーマ・ファイルは、他の手段を通じて提供することができる。たとえば、サード・パーティ・アプリケーション開発者によって使用可能な開発者向けツールまたは開発者向けアプリケーションを通じてなどで提供することができる。ここで、この開発者向けツールまたは開発者向けアプリケーションとは、サード・パーティ・アプリケーション・アドインがホスト・アプリケーションにロードされるときにホスト・アプリケーションに適用するための関連付けられたＸＭＬスキーマ・ファイルに従ってＸＭＬファイル３４０への変更を準備するためのものである。
【００４１】
もう１つの実施形態によれば、所定のホスト・アプリケーションに関連付けられているユーザ・インターフェース３０５は、ドキュメント・レベルでカスタマイズすることができる。つまり、ドキュメント・ベースのユーザ・インターフェース３０５は、所定のドキュメントに特有のユーザ・インターフェースに対して行われるカスタマイズを含むことができる。たとえば、ユーザは、カスタマイズ文書、たとえば、大企業の数百または数千名の営業担当者によって使用されるセールス・テンプレート文書など、を作成することができる。このドキュメントは、非常に多くの人々に使用されることになるので、たとえばスプレッドシート・アプリケーションなどのホスト・アプリケーションによって提供されるユーザ・インターフェースをカスタマイズして、カスタマイズされたボタンまたはコントロールが、特定のドキュメントが開始されたときに、ユーザ・インターフェースにレンダリングされるようにすることはサード・パーティ・アプリケーション開発者にとって望ましいと考えられる。
【００４２】
ドキュメント・ベースのソリューションなどのファイル形式、そこでは、そのドキュメントに関連付けられたさまざまな機能およびプロパティが、コンテナ・ファイルにホスティングされる関連コンポーネントとして存在する、そのようなドキュメント・ベースのソリューションのファイル形式を使用することができる。たとえば、コンテナ・ファイルは、ユーザが入力したデータを表すコンポーネント、たとえばテンプレート構造などのドキュメント構造を表す他のコンポーネント、ドキュメントに適用される書式設定プロパティを表す他のコンポーネント、またそのドキュメント用にカスタマイズされたドキュメント・ベースのユーザ・インターフェースを表す他のコンポーネント、収容することなどもできる。サード・パーティ・アプリケーション開発者は、そのようなドキュメントコンテナに入り、ドキュメントのユーザ・インターフェース・コンポーネントに適用可能なＸＭＬ表現ファイルおよび関連するＸＭＬスキーマにアクセスすることができる。開発者がユーザ・インターフェース３０５のＸＭＬファイルおよび関連するＸＭＬスキーマにアクセスすると、開発者は、前述のように、関連するＸＭＬスキーマに従ってＸＭＬを変更することによりユーザ・インターフェースをカスタマイズすることができる。
【００４３】
もう１つの実施形態によれば、変更済みＸＭＬファイル３５５および関連するＸＭＬスキーマ・ファイルは、アドイン・アプリケーションの機能を提供するサード・パーティ・アプリケーション開発者によって供給されるコンポーネント・オブジェクト・モデル（ＣＯＭ）アドインにリソースとして添付することができる。ＣＯＭアドインが、たとえば文書処理アプリケーションなどのホスト・アプリケーションに適用されるとき、変更済みＸＭＬファイル３５５は、ホスト・アプリケーションによって消費され、結果として得られる変更済みユーザ・インターフェース３０７をレンダリング。
【００４４】
図３に戻って参照すると、前述のように、サード・パーティ・ソフトウェア・アプリケーション・アドインは、新しいユーザ・インターフェース・コンポーネントを、たとえば文書処理アプリケーション、スプレッドシート・アプリケーション、スライド・プレゼンテーション・アプリケーションなどのホスト・アプリケーションの既存のユーザ・インターフェースに追加するために使用することができる。本発明の１つの実施形態によれば、新規のモード（start-from-scratch mode）は、サード・パーティ・アプリケーション開発者に公表されたＸＭＬファイル３４０が、必須のユーザ・インターフェース・コンポーネントを除くすべてのユーザ・インターフェース・コンポーネントを、関連するホスト・アプリケーション・ユーザ・インターフェースから削除する場合に提供される。次いで、関連するＸＭＬスキーマは、たとえば第１のタブ３１５、第２のタブ３２０、および論理グルーピング・コントロール３２５および３３０などの元のユーザ・インターフェース・コンポーネントを追加する機能を、サード・パーティ開発者に提供する。加えて、サード・パーティ・アプリケーション開発者は、関連するスキーマ・ファイルに従って新しいユーザ・インターフェース・コンポーネントを追加することができる。
【００４５】
この実施形態によれば、アドイン開発者は、実質的に白紙状態のユーザ・インターフェースから開始して、カスタマイズ・ユーザ・インターフェースを構築できるので、ホスト・アプリケーション・ユーザ・インターフェースから、必須のユーザ・インターフェース・コンポーネント以外をすべて削除できるようにするための、またアドイン開発者にユーザ・インターフェースのカスタマイズを大きく管理できるようにするための、ショートカットが設けられる。１つの実施形態によれば、このショートカットは、ＸＭＬ属性であり、これは「真」に設定された場合、元のユーザ・インターフェース・コンポーネントの多くまたはすべての削除を引き起こす。
【００４６】
所定のホスト・アプリケーション・ユーザ・インターフェース３０５の一部の領域、およびユーザ・インターフェースの一部のコンポーネントは、アドイン開発者によるアクセスを制限することができる。つまり、ホスト・アプリケーション・ユーザ・インターフェースの一部の領域および一部のコンポーネントは、サード・パーティ・アドイン開発者がそれらの領域またはコンポーネントを削除あるいは変更することができないように指定することができる。たとえば、図３のホストアプリケーション・ユーザ・インターフェース３０５を参照すると、たとえば文書処理アプリケーション、スプレッドシート・アプリケーション、スライド・プレゼンテーション・アプリケーションなどのさまざまなアプリケーションにわたって特定の機能を提供するためのファイル・ボタン３１０は、いかなる方法によってもサード・パーティ・アドイン開発者によって変更、削除、または転用されてはならないことが望ましいと考えられる。したがって、ファイル・ボタン３１０は、サード・パーティ・アドイン開発者によるアクセスを制限することができる。同様に、ユーザ・インターフェース・コンポーネントが所定のユーザ・インターフェースに追加されると、それらのコンポーネントは、追加のサード・パーティ・アドイン・アプリケーションが、以前のアドインによって提供されたユーザ・インターフェース・コンポーネントに変更を行うことのないように制限されるよう指定することができる。
【００４７】
本発明の１つの実施形態によれば、サード・パーティ・アドイン・アプリケーションがホスト・アプリケーションからアンインストールされると、アンインストールされるアドイン・アプリケーションに関連してユーザ・インターフェース・コンポーネントを追加または変更するためにホスト・アプリケーション・ユーザ・インターフェースに適用されるカスタマイズＸＭＬファイルが解析され、アドイン・アプリケーションに関連するホスト・アプリケーション・ユーザ・インターフェースへの変更が無効にされて、その結果、関連するアドイン・アプリケーションがアンインストールされる、ホスト・アプリケーション・ユーザ・インターフェースへの変更がユーザ・インターフェースにレンダリングされないようになっている。同様に、元のグラフィカル・ユーザ・インターフェースを変更したドキュメント・ベースのソリューションを終了するとき、グラフィカル・ユーザ・インターフェースは、ＸＭＬ表現への変更に関連付けられているグラフィカル・ユーザ・インターフェースに対する変更がグラフィカル・ユーザ・インターフェースにレンダリングされないように、レンダリングされる。
【００４８】
ホスト・アプリケーション・ユーザ・インターフェース３０５を表すＸＭＬファイル３４０にアクセスすることにより、既存のユーザ・インターフェース・コンポーネントを転用することができ、その結果、転用されたコンポーネントがその後さまざまな動作を提示することができる。たとえば、既存のユーザ・インターフェース・コンポーネントは、有効化または無効化することも、あるいは異なるアプリケーションのアクションに関連付けられるように指定することもできる。たとえば、サード・パーティ・アプリケーション開発者は、ホスト・アプリケーション・ユーザ・インターフェースの「印刷」ボタンのような所定のボタンが、サード・パーティ・アプリケーション・アドインに関連付けられている規定の印刷設定に従ってドキュメントを印刷するためにのみ使用されるよう望むことができる。もう１つの例をあげると、所定の機能ボタンまたはコントロールは、機能が、アドイン・アプリケーションによってホスト・アプリケーションに追加された機能の操作と競合する場合、使用されないよう無効にすることができる。
【００４９】
図４は、本発明の実施形態により変更することができるコンテクスト・ユーザ・インターフェース例を示すコンピュータ画面表示である。図４に示されるコンテクスト・ユーザ・インターフェースが、例示を目的としているに過ぎず、選択されたドキュメント・オブジェクトに関連して提供することができるコンテクスト・ユーザ・インターフェースに適用され、含まれるコンテンツの多種多様なレイアウトおよびタイプを限定するものではないことは、当業者には理解されよう。したがって、図４に示されるコンテクスト・ユーザ・インターフェースは、請求の範囲に係る発明をいかなる方法によっても限定または制限するものではない。たとえば、以下で説明する、図４に示されるコンテクスト・ユーザ・インターフェースは、選択されたオブジェクトに関連して展開するユーザ・インターフェース・メニューの形態をとる。しかし、本発明のこの実施形態は、電子ドキュメントのオブジェクトを選択する際にユーザ・インターフェースで展開される元のユーザ・インターフェース３０５に、タブなどのボタンまたはコントロールの追加などの他の形態で実装することができる。
【００５０】
図４を参照すると、埋め込み画像オブジェクト４１０を含むドキュメントは、文書処理アプリケーション・ワークスペース内に示される。本発明の１つの実施形態によれば、コンテクスト・メニュー４２０は、画像オブジェクト例４１０などの所定のドキュメント・オブジェクトの選択を含むさまざまな方法（ただしこれに限定されることはない）を通して、選択されているオブジェクトに隣接して、またはその付近に開くことができる。コンテクスト・メニュー４２０は、選択されたドキュメントで選択されているオブジェクトを編集することに関連する選択可能な機能コントロールを含む。つまり、コンテクスト・メニュー４２０には、選択されたドキュメントで特定の選択されているオブジェクトを編集するために使用することができる１つまたは複数の選択可能な機能コントロールが取り込まれる。たとえば、図４に示されるコンテクスト・メニュー４２０を参照すると、コンテクスト・メニューは、選択されているピクチャ・オブジェクト４１０のコンテクスト内において開始される。それに応じて、貼り付けコントロール、コピー・コントロール、位置コントロール、ピクチャ再設定コントロールなどの選択可能機能コントロールは、選択されているピクチャ・オブジェクト４１０の属性を編集するための機能をユーザに提供する。当業者には理解されるように、コンテクスト・メニュー４２０が別のオブジェクトのタイプのコンテクスト内で開始される場合、コンテクスト・メニュー４２０に取り込まれる選択可能機能コントロールは、他のオブジェクトのタイプに関連することになる。
【００５１】
本発明の実施形態によれば、コンテクスト・ユーザ・インターフェース４２０のＸＭＬファイル３４０および関連するＸＭＬスキーマを公表することにより、サード・パーティ開発者は、選択された文書オブジェクトに適用することができるアドイン機能に関連付けられているカスタマイズされたコンテクスト・ユーザ・インターフェース・コンテンツおよびコンポーネントを作成するために、コンテクスト・ユーザ・インターフェース４２０に含まれるユーザ・インターフェース・コンテンツを追加または変更することができる。たとえば、図４を参照すると、サード・パーティ・アドイン・アプリケーションは、ホストアプリケーション・コンテクスト・ユーザ・インターフェース４２０内で提供される機能を介してピクチャ・オブジェクト４１０を変更または書式設定するための追加の機能を提供することができる。図３を参照して上記で説明されているように、サード・パーティ・アドイン開発者は、サード・パーティアプリケーション・アドインに関連してコンテクスト・ユーザ・インターフェース４２０のユーザ・インターフェース・コンポーネントを追加、無効化、転用、または変更することができる。たとえば、アドイン・アプリケーションが、ピクチャ・オブジェクト４１０に使用することができる追加の書式設定機能を提供する場合、追加の書式設定ボタンまたは書式設定ボタンおよび／またはコントロールのグループは、ピクチャ・オブジェクト４１０が編集のために選択される際にコンテクスト・ユーザ・インターフェース４２０に表示されるコンテクスト・ユーザ・インターフェース４２０に追加することができる。前述のように、コンテクスト・ユーザ・インターフェース４２０を変更するのではなく、たとえば新しいタブなどの新しい機能コントロールが、ユーザ・インターフェース３０５（図３に示す）に追加することができ、これは、関連するオブジェクトの選択時にユーザ・インターフェース３０５内に展開される。
【００５２】
代替として、既存のコンテクスト・ユーザ・インターフェースを変更することに加えて、新しいコンテクスト・ユーザ・インターフェースをホスト・アプリケーションに追加することができる。たとえば、所定のアドイン・アプリケーションが、選択されているオブジェクトで使用する１つまたは複数の機能を追加する場合、ＸＭＬファイル３４０および関連するＸＭＬスキーマが、選択されているオブジェクトに関連して開始されることになる関連するアドイン機能用の新しいコンテクスト・ユーザ・インターフェースを作成するために公表することができる。この実施形態によれば、新規のＸＭＬファイル（start-from-scratch XML file）３４０は、前述のように、新しいコンテクスト・ユーザ・インターフェース４２０の作成および展開を可能にするために提供することができる。
【００５３】
図５は、本発明の実施形態により変更することができる選択可能なコントロール４３０のギャラリーまたはコレクションの例を示すコンピュータ画面表示を示す。図５に示されるコントロール・ユーザ・インターフェース４３０のギャラリーが、例示を目的としているに過ぎず、本明細書に説明されるように、コントロール・ユーザ・インターフェースのギャラリーに適用したり、または含んだりすることができるさまざまなユーザ・インターフェースのレイアウトおよびさまざまなユーザ・インターフェース・コンテンツを限定するものではないことを理解されたい。ここで図５を参照すると、画像のポップアップ・ギャラリーが、コンテクスト・メニュー４２０に隣接して示されている。そのようなコントロールのギャラリーは、他の構成で展開できることを理解されたい。たとえば、本発明の実施形態によるコントロールのギャラリーは、ユーザ・インターフェース２００にインラインで展開することも、またギャラリーはユーザ・インターフェース２００の選択されたボタンまたはコントロールの下にドロップダウン・ユーザ・インターフェースとして展開することもできる。本発明の実施形態によれば、コントロールのギャラリーに含まれる各コントロール４３５、４４０、４４５は、たとえば、ギャラリー内の所定のコントロールが選択された場合に選択されているオブジェクトに適用される機能を書式設定するなど、１つまたは複数の機能を表す。
【００５４】
所定のアドイン・アプリケーションは、選択されたオブジェクトに追加の機能（たとえば、書式設定プロパティ）を提供するためにホスト・アプリケーションに機能を追加することができ、それに対する１つまたは複数の追加のコントロールをコントロールのホスト・アプリケーション・ギャラリーに求めることもできる。たとえば、図５に示されるコントロールのギャラリー例を参照すると、サード・パーティ・アドイン・アプリケーションは、例示のピクチャ・オブジェクトを例示のドキュメントの左上隅に自動的に配置し、同時に、ピクチャ・オブジェクトが含まれるドキュメントに含まれているテキストに別の書式設定を適用する書式設定を提供することができる。必要に応じて、アドイン・アプリケーション開発者は、コントロール・ユーザ・インターフェース４３０のホスト・アプリケーション・ギャラリーを変更して、アドイン書式設定プロパティのアプリケーションを選択されているドキュメントおよびピクチャ・オブジェクトに表示する追加のコントロールを提供することができる。図３および図４を参照して上記で説明されているように、アドイン・アプリケーションの作成者は、新しいコントロールを配置すべきコントロールのギャラリー内の場所を指定することができる。たとえば、アドイン開発者は、新しいコントロールを「Ｔｏｐ  Ｌｅｆｔ」コントロール４４０の後に挿入するようにと指定することができる。
【００５５】
コントロール・ユーザ・インターフェースの既存のギャラリーを変更することに加えて、コントロール・ユーザ・インターフェースの新しいギャラリー４３０をホスト・アプリケーションに追加することができる。たとえば、所定のアドイン・アプリケーションが、選択されているオブジェクトで使用する１つまたは複数の機能を追加する場合、ＸＭＬファイル３４０および関連するＸＭＬスキーマを、選択されているオブジェクトに関連して開始されることになる関連するアドイン機能のコントロール・ユーザ・インターフェースの新しいギャラリーを作成するために公表することができる。この実施形態によれば、新規のＸＭＬファイル３４０を、前述のように、新しいコンテクスト・ユーザ・インターフェース４２０の作成および展開を可能にするように提供することができる。
【００５６】
図３、図４、および図５を参照して前述されているように、ユーザ・インターフェース・コンポーネントが、ホスト・アプリケーション・ユーザ・インターフェースに追加された後、本発明の１つの実施形態によれば、ホスト・アプリケーションは、変更済みのユーザ・インターフェースの表示スペースが縮小または拡大されるのに応じて追加されるインターフェース・コンポーネントのサイズを自動的にスケール調整することができる。たとえば、ボタンまたはコントロールの論理グルーピングがホスト・アプリケーション・ユーザ・インターフェースに追加され、ボタンまたはコントロールの論理グルーピングがアドイン機能に関連する３つの大型ボタンを含む場合、ホスト・アプリケーションは、ユーザ・インターフェースを含むウィンドウ・サイズが縮小されると自動的に表示ボタンをスケール調整することができる。たとえば、３つの大型の例示のボタンが他のユーザ・インターフェース・コンポーネントを押しのけなければ表示できなくなるほどに、ユーザ・インターフェースを含むウィンドウ・サイズが縮小される場合、３つの大型ボタンは、３つの大型ボタンの３つのより小型なバージョンに置き換えられる。ウィンドウ・サイズがさらに縮小される場合、３つの大型ボタンの小型バージョンは同時に削除され、３つのボタンに関連付けられている３つの機能の小型テキスト識別表示が、３つの大型ボタンの代わりに使用される。
【００５７】
カスタマイズ・ユーザ・インターフェース・コンポーネントは、カスタマイズ・ユーザ・インターフェース・コンポーネントに影響を与える状態が変化するとき、ホスト・アプリケーションによって自動的に最新表示にすることができる。たとえば、カスタマイズ・ユーザ・インターフェース・コンポーネントが、所定のタイプの情報（第１のデータ）に関連付けられているロゴまたはピクチャを提供するホスト・アプリケーション・ユーザ・インターフェース３０５に追加される場合、関連する情報またはデータが変化するときに、ロゴまたはピクチャは無効にされ、自動的に最新表示にすることができる。たとえば、アドイン気象アプリケーションは、ホスト・アプリケーション・ユーザ・インターフェースに、選択されると指定された領域に天気予報を提供するボタンまたはコントロールを提供することができる。ユーザ・インターフェースのボタンまたはコントロールは、たとえば、晴天には太陽のピクチャ、曇天には雲のピクチャなど、現在の天気に関連するピクチャで装飾することができる。本発明のこの実施形態によれば、追加されたボタンまたはコントロールに提供されているピクチャまたはロゴが適切ではなくなるほどに、現在の気象状態が変化する場合、現在のピクチャまたはロゴは自動的に無効にされ、ボタンまたはコントロールは、たとえば現在の気象状態などの現在の情報にふさわしい別のピクチャまたはロゴで最新表示することができる。
【００５８】
複数の実施形態によれば、ホスト・アプリケーションは、追加または変更されたユーザ・インターフェース・コンポーネントに責任を負うソフトウェア・アプリケーション・アドインに関連する各々の追加または変更されたユーザ・インターフェース・コンポーネントの識別（identity）を追跡する。１つの実施形態によれば、たとえば、マウス・ポインタを追加されたユーザ・インターフェース・コンポーネントの上に静止させる（hover）など、追加されたユーザ・インターフェース・コンポーネント上に、静止させたり、またはフォーカスを合わせたりすると、追加または変更されたユーザ・インターフェース・コンポーネントに責任を負うソフトウェア・アプリケーション・アドインを識別するように、および、追加または変更されたユーザ・インターフェース・コンポーネントに関連付けられたソフトウェア・アプリケーション・アドインに関するその他の情報の記述または提供するのに使用できるヘルプ・コンテンツへユーザを導くために、ツールチップまたはその他のダイアログを提示することができる。
【００５９】
本明細書において説明されるように、ソフトウェア・アプリケーション・ユーザ・インターフェースのプログラミングは公表されて、アドイン・アプリケーションに関連付けられている新規または既存のユーザ・インターフェース・コンポーネントの追加、削除、無効化、有効化、および転用を含めるように既存のアプリケーション・ユーザ・インターフェースを変更することができるようにする。本発明の範囲または精神を逸脱することなく、本発明にさまざまな変更または変形を行うことができることが、当業者には明らかとなろう。本発明の他の実施形態は、ここに開示される本発明の明細書を考察し実施することにより、当業者には明らかとなろう。
【図面の簡単な説明】
【００６０】
【図１】本発明の実施形態のための例示的なコンピューティング環境を示す図である。
【図２】本発明の実施形態による、変更することができるユーザ・インターフェースの例を示すコンピュータ画面表示を示す図である。
【図３】本発明の実施形態による、ユーザ・インターフェース例と、例示のユーザ・インターフェースを変更するために修正することができるユーザ・インターフェース例のＸＭＬ表現との関係を示す簡略化ブロック図である。
【図４】本発明の実施形態による、変更することができる例示のコンテクスト・ユーザ・インターフェースを示すコンピュータ画面表示である。
【図５】本発明の実施形態による、変更することができる選択可能なコントロール・ユーザ・インターフェースのギャラリーの例を示すコンピュータ画面表示である。
【図１】
2009506461.tif 000004
【図２】
2009506461.tif 000005
【図３】
2009506461.tif 000006
【図４】
2009506461.tif 000007
【図５】
2009506461.tif 000008
【国際調査報告】
2009506461.tif 000009
2009506461.tif 000010