(57)【要約】【課題】  モジュール型Ｗｅｂページを作成するためのフレームワークを提供する。【解決手段】  拡張可能パーツ基本クラスおよび拡張可能ゾーン基本クラスを含むフレームワークを使用することで、Ｗｅｂポータル等を含む、モジュール型のカスタマイズされ、パーソナライズされたＷｅｂアプリケーションを開発できる。Ｗｅｂパーツコントロール等のパーツコントロールはパーツ基本クラスから派生し、ゾーンコントロール等はゾーン基本クラスから派生する。各ゾーンコントロールには、１つまたは複数のパーツコントロールが含まれ、各ゾーン内では、パーツコントロールをレンダリングする。Ｗｅｂパーツコントロールは、他のＷｅｂパーツコントロールと通信でき、編集、削除、ゾーンコントロールへの追加が可能である。パーツコントロールの機能は、特定のゾーン内のおよび異なるゾーンにまたがるパーツコントロール毎に広く変えることができる。【選択図】  図７
2005011355.tif 000002
【特許請求の範囲】
【請求項１】
モジュール型Ｗｅｂアプリケーションを作成するフレームワークであって、
１つまたは複数のパーツコントロールであって、各前記パーツコントロールが他のパーツコントロールのように各パーツをレンダリングすることを許可する１つまたは複数のプロパティを備える１つまたは複数のパーツコントロールと、
１つまたは複数のゾーンコントロールであって、各前記ゾーンコントロールが各ゾーン内の前記１つまたは複数のパーツコントロールのうちの少なくとも１つを配列する１つまたは複数のゾーンコントロールと、
前記１つまたは複数のパーツコントロールのうちのどれが各前記ゾーンコントロール内にあるか追跡するＷｅｂパーツマネージャと
を備えることを特徴とするフレームワーク。
【請求項２】
各前記パーツコントロールの１つまたは複数のプロパティにより、特定のゾーンコントロールが前記特定のゾーンコントロール内の各前記パーツコントロールの一貫性のあるユーザインターフェースをレンダリングする動作を有効にし、各前記パーツコントロールの機能は異なることを特徴とする請求項１に記載のフレームワーク。
【請求項３】
前記パーツコントロールは、１つまたは複数のパーツ基本クラスから作成されることを特徴とする請求項１に記載のフレームワーク。
【請求項４】
前記１つまたは複数のパーツ基本クラスは、パーツ基本クラス、前記パーツ基本クラスから派生するＷｅｂパーツ基本クラス、前記パーツ基本クラスから派生するカタログパーツ基本クラス、および前記パーツ基本クラスから派生するエディタパーツ基本クラスを含むことを特徴とする請求項３に記載のフレームワーク。
【請求項５】
前記エディタパーツ基本クラスは、個人設定のうち１つまたは複数を含むｃｏｎｔｒｏｌプロパティ、前記１つまたは複数のパーツコントロールのｌａｙｏｕｔプロパティ、および前記１つまたは複数のパーツコントロールのｂｅｈａｖｉｏｒプロパティを設定するモジュール型コントロールに使用されることを特徴とする請求項４に記載のフレームワーク。
【請求項６】
前記カタログパーツ基本クラスは、少なくとも１つの前記ゾーンコントロールに追加することができるＷｅｂパーツのカタログを供給するモジュール型コントロールに使用されることを特徴とする請求項４に記載のフレームワーク。
【請求項７】
前記１つまたは複数のゾーンコントロールは、１つまたは複数のゾーン基本クラスから作成されることを特徴とする請求項５に記載のフレームワーク。
【請求項８】
前記１つまたは複数のゾーン基本クラスは、前記パーツ基本クラスから継承するコントロールをレイアウトするために使用されるゾーン基本クラス、前記ゾーン基本クラスから派生し、Ｗｅｂパーツコントロールに使用されるＷｅｂパーツゾーン基本クラス、前記ゾーン基本クラスから派生し、エディタコントロールをレイアウトするために使用されるエディタパーツコントロールをレイアウトするために使用されるエディタゾーン基本クラス、およびカタログコントロールに使用されるカタログパーツ基本クラスを含むことを特徴とする請求項７に記載のフレームワーク。
【請求項９】
前記Ｗｅｂパーツマネージャはパーツコントロールであり、各前記ゾーンコントロールはＷｅｂパーツマネージャに登録されることを特徴とする請求項１に記載のフレームワーク。
【請求項１０】
前記Ｗｅｂパーツマネージャは前記１つまたは複数のパーツコントロール間の接続を追跡し、前記Ｗｅｂパーツマネージャは、Ｗｅｂページへの前記パーツコントロールの追加、Ｗｅｂページからの削除、Ｗｅｂページからの移動を行うことを特徴とする請求項９に記載のフレームワーク。
【請求項１１】
前記１つまたは複数のパーツコントロールの少なくとも一部は他の前記パーツコントロールと通信するためのインターフェースを備えることを特徴とする請求項１に記載のフレームワーク。
【請求項１２】
前記１つまたは複数のパーツコントロールの少なくとも一部は前記インターフェースを前記Ｗｅｂパーツマネージャに登録することを特徴とする請求項１１に記載のフレームワーク。
【請求項１３】
前記１つまたは複数のパーツコントロールの少なくとも一部は、他のパーツコントロールと通信するための複数のインターフェースを備え、前記１つまたは複数のパーツコントロールの少なくとも一部は、前記複数のインターフェースを前記Ｗｅｂパーツマネージャに登録することを特徴とする請求項１に記載のフレームワーク。
【請求項１４】
前記複数のインターフェースの少なくとも一部は、意味は異なるが前記インターフェースと同じインターフェースであることを特徴とする請求項１３に記載のフレームワーク。
【請求項１５】
開発者とユーザの両方によりカスタマイズ可能なＷｅｂページを作成するフレームワークであって、
Ｗｅｂパーツ、カタログパーツ、およびエディタパーツのうち１つまたは複数を含むパーツコントロールの派生元であるパーツ基本クラスと、
ゾーン基本クラスであって、
前記Ｗｅｂパーツゾーンに含まれるＷｅｂパーツを配列するために使用されるＷｅｂパーツゾーンと、
カタログゾーンであって、前記カタログゾーン内に含まれるカタログパーツを配列するために使用されるカタログゾーンと、
エディタゾーンであって、前記エディタゾーン内に含まれるエディタパーツを配列するために使用されるエディタゾーンと
のうちの１つまたは複数を備えるゾーンコントロールの派生元であるゾーン基本クラスを備えることを特徴とするフレームワーク。
【請求項１６】
前記パーツコントロールの各インスタンスは、前記ゾーンコントロールのインスタンス内で定義されることを特徴とする請求項１５に記載のフレームワーク。
【請求項１７】
特定のゾーンコントロール内のパーツコントロールの各インスタンスは類似のユーザインターフェースを備えることを特徴とする請求項１５に記載のフレームワーク。
【請求項１８】
前記パーツコントロールの少なくとも一部は、同じ前記ゾーンコントロール内、または他の前記ゾーンコントロール内の他の前記パーツコントロールと接続するための接続エンドポイントを備えることを特徴とする請求項１５に記載のフレームワーク。
【請求項１９】
前記エディタゾーンは、前記パーツ基本クラス内で定義されているプロパティのユーザ入力が可能なように適合されていることを特徴とする請求項１５に記載のフレームワーク。
【請求項２０】
前記プロパティはエクスポート可能であることを特徴とする請求項１９に記載のフレームワーク。
【請求項２１】
前記プロパティのユーザ入力は、ＸＭＬドキュメントを使用してエクスポートされることを特徴とする請求項２０に記載のフレームワーク。
【請求項２２】
Ｗｅｂパーツマネージャクラスをさらに含み、前記Ｗｅｂパーツマネージャクラスは前記ゾーンコントロール内に含まれるパーツコントロールのインスタンスを追跡することを特徴とする請求項１５に記載のフレームワーク。
【請求項２３】
特定のパーツコントロールを同じ前記ゾーンコントロール内で、または別の前記ゾーンコントロールへドラッグ＆ドロップすることができることを特徴とする請求項２２に記載のフレームワーク。
【請求項２４】
特定のカタログパーツは、特定のゾーンコントロールに追加されるユーザによって選択できるＷｅｂパーツのリストを供給するように適合され、前記特定のカタログパーツは、Ｗｅｂページの前記特定のゾーンコントロールに追加される前記Ｗｅｂパーツのリストからユーザが選択するための手段を備えることを特徴とする請求項１５に記載のフレームワーク。
【請求項２５】
各前記パーツコントロールは、永続化フォーマットファイル内で宣言されることを特徴とする請求項１５に記載のフレームワーク。
【請求項２６】
前記パーツ基本クラスは、
各前記パーツコントロールが類似のユーザインターフェースによりレンダリングされるようにするプロパティと、
特定のゾーンコントロールにより前記特定のゾーン内の各パーツコントロールの回りにユーザインターフェースをレンダリングする方法を定義するｆｒａｍｅｔｙｐｅプロパティと、
特定のパーツコントロールの使用が許可されるユーザを定義するｒｏｌｅｓプロパティと、
各前記パーツコントロールに対する１つまたは複数のアイコンと
のうちの１つまたは複数を備えることを特徴とする請求項１５に記載のフレームワーク。
【請求項２７】
各前記Ｗｅｂパーツは、
他のＷｅｂパーツと通信するための接続インターフェースと、
前記Ｗｅｂパーツのパーソナライゼーションを可能にするｅｎａｂｌｅ  ｐｅｒｓｏｎａｌｉｚａｔｉｏｎプロパティと、
ｈｅｌｐプロパティと、
エンドユーザに公開するユーザインターフェースを決定する１つまたは複数のａｌｌｏｗプロパティと、
Ｗｅｂパーツが最小化、最大化、または通常であることを定義するフレーム状態と、
ｔｒｕｅの場合に前記Ｗｅｂパーツが非表示になるｈｉｄｄｅｎプロパティと、
前記Ｗｅｂパーツを含むゾーンコントロールを識別するｚｏｎｅプロパティと、
前記ゾーンコントロールのＩＤを含むゾーンＩＤと、
前記ゾーンコントロール内の他のＷｅｂパーツに関して前記ゾーンコントロールのインデックスを含むゾーンインデックスと
のうちの１つまたは複数を含むことを特徴とする請求項１５に記載のフレームワーク。
【請求項２８】
前記エディタパーツは、
タイトル、高さ、幅、フレーム状態、およびフレームタイプの１つまたは複数を含む、Ｗｅｂパーツのｕｓｅｒ  ｉｎｔｅｒｆａｃｅプロパティを設定する外観エディタパーツと、
ｈｉｄｄｅｎプロパティ、ｚｏｎｅプロパティ、およびｚｏｎｅ  ｉｎｄｅｘプロパティの１つまたは複数を含む、Ｗｅｂパーツのｌａｙｏｕｔプロパティを設定するレイアウトエディタと、
ｂｅｈａｖｉｏｒプロパティを設定するビヘイビアエディタパーツと、
Ｗｅｂブラウザで参照可能とマークされているプロパティを表示するプロパティグリッドブラウザエディタパーツと、
カスタムエディタパーツと
のうちの１つまたは複数であることを特徴とする請求項２７に記載のフレームワーク。
【請求項２９】
前記カタログパーツは、エンドユーザが新規ＷｅｂパーツをＷｅｂページに追加できるようにするユーザインターフェースを公開することを特徴とする請求項１５に記載のフレームワーク。
【請求項３０】
特定のＷｅｂページ上のすべてのパーツコントロールを管理するＷｅｂパーツマネージャさらにを含み、前記Ｗｅｂパーツマネージャは、
前記特定のＷｅｂページ上のＷｅｂパーツコントロールを追跡すること、
前記特定のＷｅｂページ上のＷｅｂパーツゾーンコントロールを追跡すること、
前記特定のＷｅｂページ上のパーツコントロール間の接続を追跡すること、
パーツコントロール間の通信を開始すること、および
前記特定のＷｅｂページの編集状態を追跡すること
のうちの１つまたは複数を受け持つことを特徴とする請求項１５に記載のフレームワーク。
【請求項３１】
前記Ｗｅｂパーツマネージャはパーツコントロールの追加、削除、および移動を行うための１つまたは複数のメソッドを公開することを特徴とする請求項３０に記載のフレームワーク。
【請求項３２】
前記１つまたは複数のメソッドは、カタログパーツ、エディタパーツ、およびゾーンコントロールにより呼び出されることを特徴とする請求項３１に記載のフレームワーク。
【請求項３３】
前記ユーザインターフェースは、すべてのユーザについて新規ＷｅｂパーツをＷｅｂページに追加するため管理者が使用することができることを特徴とする請求項２９に記載のフレームワーク。
【請求項３４】
前記プロパティのユーザ入力により、すべてのユーザのプロパティが設定され、前記プロパティのユーザ入力は、管理者によって実行されることを特徴とする請求項１９に記載のフレームワーク。
【請求項３５】
複数のプロパティは前記パーツ基本クラス内で定義され、前記複数のプロパティはＷｅｂページ開発者により永続化フォーマットで定義可能であることを特徴とする請求項１５に記載のフレームワーク。
【請求項３６】
モジュール型で、開発者またはエンドユーザによるカスタマイズが可能なＷｅｂページを作成する方法であって、
少なくとも１つのゾーンコントロールを永続化フォーマットファイルの中で宣言することであって、各前記ゾーンコントロールはゾーン基本クラスから派生すること、
少なくとも１つのＷｅｂパーツコントロールを各前記ゾーンコントロールの中で宣言することであって、前記Ｗｅｂパーツコントロールはパーツクラスから派生すること、および
各前記ゾーンコントロールにより、各ゾーンコントロールのユーザインターフェース要素および前記少なくとも１つのＷｅｂパーツコントロールのいくつかのユーザインターフェース要素をレンダリングし、それぞれの少なくとも１つのＷｅｂパーツコントロールは各ゾーン内で類似の外観を備えること
を含むことを特徴とする方法。
【請求項３７】
前記ゾーンコントロール内で少なくとも１つのＷｅｂパーツコントロールを宣言することは、前記少なくとも１つのＷｅｂパーツコントロールをコントロールフォーマットファイル内で宣言することをさらに含むことを特徴とする請求項３６に記載の方法。
【請求項３８】
Ｗｅｂマネージャパーツを宣言することをさらに含み、前記Ｗｅｂマネージャパーツはそれぞれの少なくとも１つのゾーンコントロール内で前記少なくとも１つのＷｅｂパーツコントロールを追跡することを特徴とする請求項３７に記載の方法。
【請求項３９】
第１のＷｅｂパーツコントロールと第２のＷｅｂパーツコントロールとの間の通信を開始する前記Ｗｅｂマネージャパーツをさらに含み、前記第１のＷｅｂパーツコントロールは前記第２のＷｅｂパーツコントロールと通信することを特徴とする請求項３８に記載の方法。
【請求項４０】
特定のＷｅｂパーツまたは前記特定のＷｅｂパーツのプロパティをエクスポートすることをさらに含むことを特徴とする請求項３６に記載の方法。
【請求項４１】
特定のＷｅｂパーツまたは前記特定のＷｅｂパーツのプロパティをインポートすることをさらに含むことを特徴とする請求項３６に記載の方法。
【請求項４２】
さらにインポートされたプロパティを使用して現在のＷｅｂパーツコントロールのプロパティの少なくとも一部を設定することを含むことを特徴とする請求項４１に記載の方法。
【請求項４３】
各前記Ｗｅｂパーツコントロールにアクセスできるユーザを指定するため各前記Ｗｅｂパーツコントロールのｒｏｌｅｓプロパティを定義することを含むことを特徴とする請求項３６に記載の方法。
【請求項４４】
前記パーツクラスから派生するエディタパーツを使用して特定のＷｅｂパーツコントロールを編集することであって、前記エディタパーツはエディタゾーン内に含まれること、
前記パーツクラスから派生するカタログパーツを使用して他のＷｅｂパーツコントロールを特定のゾーンに追加し、前記カタログパーツはカタログゾーン内に含まれること、
選択されたＷｅｂパーツコントロールをゾーンから削除すること、
各前記Ｗｅｂパーツコントロールの１つまたは複数のプロパティをエンドユーザがカスタマイズできるようにすること、および
エンドユーザがＷｅｂパーツコントロールに対しパーソナライゼーションを共有することを許可すること
のうち１つまたは複数を含むことを特徴とする請求項３６に記載の方法。
【請求項４５】
前記パーツコントロールのプロパティを使用してエンドユーザが前記パーツコントロールをパーソナライズできるようにすることを含むことを特徴とする請求項３６に記載の方法。
【請求項４６】
前記パーツコントロールのプロパティを使用してエンドユーザによる前記パーツコントロールのパーソナライズを禁止することを含むことを特徴とする請求項３６に記載の方法。
【請求項４７】
複数のプロパティを前記永続化フォーマットで宣言し、すべてのエンドユーザへの前記ユーザインターフェース要素のレンダリングを制御することを含むことを特徴とする請求項３６に記載の方法。
【請求項４８】
各前記ゾーンコントロールのユーザインターフェース要素および前記少なくとも１つのＷｅｂパーツコントロールのいくつかのユーザインターフェース要素と情報をやり取りして、すべてのユーザについて前記類似の外観を制御することを含むことを特徴とする請求項３６に記載の方法。
【請求項４９】
請求項３６に記載の方法を実行するためのコンピュータ実行可能命令を備えることを特徴とするコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、Ｗｅｂアプリケーションを作成するためのシステムと方法に関する。より詳細には、本発明は、カスタマイズ可能なモジュール式フレームワークを使用してＷｅｂページを含むＷｅｂアプリケーションを作成するシステムおよび方法に関する。
【背景技術】
【０００２】
ローカルエリアネットワークおよびワイドエリアネットワークの普及が進み、データの取り出しおよび配信の作業が行いやすくなった。通常、コンピュータユーザは、一般にＷｅｂページおよびＷｅｂサイトに存在するような単純なポイント＆クリック方式のインターフェースを使用して情報を取り寄せることができる。Ｗｅｂポータルは、さまざまなサービスをユーザに提供する一般的なタイプのＷｅｂサイトまたはＷｅｂページである。Ｗｅｂポータルは、ウエルカム情報、検索機能、気象情報、ニュース情報、株式データ、他のサイトまたはページへのリンクなどを備えることができる。
【０００３】
経験上、整理され見栄えのするＷｅｂポータルはＷｅｂポータルのユーザのニーズに応えるのに効果的であることがわかっている。さらに、Ｗｅｂポータルはインターネットまたはイントラネットセッションで使用される最初のページであることが多いため、Ｗｅｂポータルは、ユーザが関心を持つ内容を提示し、またユーザにとって論理的に意味をなす方法、またはユーザから見て感じのよい方法で内容を整理できるようにカスタマイズ可能でなければならない。
【０００４】
多くのＷｅｂ開発者たちは、ユーザを引きつけて引き留めるサイトまたはＷｅｂポータルを作成しようと努力を続けてきた。一般的なアプローチとして、関係する内容がページのいくつかの領域内に配置されるようなモジュール型レイアウトをとるサイトを構築する。Ｗｅｂポータルは、モジュール方式で、カスタマイズ可能なレイアウトを活かすことができる唯一のページというわけではない。一般にインターネットまたはイントラネット上のＷｅｂサイトまたはページ、プロジェクトページ、会議ページ、在庫追跡ページなども、そのようなレイアウトを活用することができる。
【０００５】
このようなページまたはサイトのデザインおよび開発は、そのようなページをすばやく効率よく作成するためのツールがごくわずかしか存在していないため、難しい作業である。それぞれのＷｅｂページ開発者が、そのようなページのコードまたはデザインを自分で作成しなければならない。そのため、開発者はなかなかそのようなページを作成する気にならず、その結果あまり使いやすくない、あまり読みやすくないページが普及することになった。さらに、そのようなページがページ開発者により作成されると、それらのページをエクスポートして他の開発者に利用してもらうことができない。また、現在の技術を使用したのでは首尾一貫性のあるルック＆フィールを備えるカスタマイズ可能なサイトを作成することも困難である。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
Ｗｅｂ開発者がＷｅｂページおよびＷｅｂサイトを作成するのを支援する技術の１つは、Ｗｅｂページサーバ上で実行されるスクリプトの使用である。これらのスクリプトを他のＨＴＭＬコマンドに埋め込み、動的でカスタマイズ可能なＷｅｂページを作成することができる。しかし、こうしたタイプのＷｅｂページは多大な開発投資を必要とするため、Ｗｅｂページのカスタマイズ性を高めようとするとコストが上昇する。つまり、豊富な内容を備え、デザインがモジュール化され整合性が高く、カスタマイズ可能な成功したＷｅｂサイトを構築するのは、かなりの開発時間を要し、またポータルソリューションに現在のところ一貫したモデルがないため、難しいということである。
【課題を解決するための手段】
【０００７】
これらの制限およびその他の制限は、モジュール型のカスタマイズ可能なＷｅｂアプリケーションを作成するためのシステムと方法に関する本発明により克服される。具体的には、本発明は、Ｗｅｂポータル、ＷｅｂページなどのＷｅｂアプリケーションを作成するための拡張可能フレームワークに関する。フレームワークは、Ｗｅｂパーツ（ｗｅｂ  ｐａｒｔｓ）、エディタパーツ（ｅｄｉｔｏｒ  ｐａｒｔｓ）、およびカタログパーツ（ｃａｔａｌｏｇ  ｐａｒｔｓ）などのパーツコントロール（ｐａｒｔ  ｃｏｎｔｒｏｌｓ）を備える。フレームワークは、さらに、ゾーン（ｚｏｎｅｓ）、エディタゾーン（ｅｄｉｔｏｒ  ｚｏｎｅｓ）、およびカタログゾーン（ｃａｔａｌｏｇ  ｚｏｎｅｓ）などのゾーンコントロール（ｚｏｎｅ  ｃｏｎｔｒｏｌｓ）も備える。各ゾーンコントロールは、通常、１つまたは複数のパーツコントロールを含む。
【０００８】
各パートコントロールは、パーツ基本クラス（ｐａｒｔ  ｂａｓｅ  ｃｌａｓｓ）から派生し、各ゾーンコントロールは、ゾーン基本クラス（ｚｏｎｅ  ｂａｓｅ  ｃｌａｓｓ）から派生する。Ｗｅｂパーツ、エディタパーツ、およびカタログパーツは、パーツ基本クラスが備える機能のほかに追加機能を備える。ゾーン、エディタゾーン、およびカタログゾーンは、ゾーン基本クラスが備える機能のほかに追加機能を備える。
【０００９】
ＷｅｂページなどのＷｅｂアプリケーションは、複数のゾーンに分けられ、各種パーツコントロールは、それぞれのゾーンに配置されている。各ゾーンは、特定のゾーン内の各パーツの回りにクロムをレンダリングする役割を持つ。これは、タイトルバー、枠線、および動詞（ｖｅｒｂ）のルック＆フィールを制御する。これにより、パーツコントロールの追加、削除、または変更によりＷｅｂページのカスタマイズまたはパーソナライズを行うときに一貫性のあるルック＆フィールを推し進めることができる。エディタパーツはＷｅｂパーツを編集する場合に使用し、カタログパーツはゾーンからＷｅｂパーツを追加／削除する場合に使用する。エディタパーツは、エディタゾーンに含まれ、カタログパーツは、カタログゾーンに含まれる。
【００１０】
パーツコントロールおよびゾーンコントロールは、関連付けられたプロパティおよびメソッドを備える。ユーザ毎にパーツコントロールをパーソナライズすることができるプロパティおよびメソッドもあれば、すべてのユーザ向けに開発者がパーツコントロールをカスタマイズできるプロパティおよびメソッドもある。Ｗｅｂパーツのプロパティは、エクスポート／インポートすることができる。また、Ｗｅｂパーツの非表示および表示を設定することもできる。
【００１１】
Ｗｅｂページ作成時に、永続化フォーマットファイル（ｐｅｒｓｉｓｔｅｎｃｅ  ｆｏｒｍａｔ  ｆｉｌｅ）の中でゾーンコントロールが宣言される。パーツコントロールは、各ゾーンコントロール内で宣言される。Ｗｅｂパーツマネージャは、宣言されている各種ゾーン内のＷｅｂパーツを追跡するが、これもまた宣言される。各ゾーンは、通常、Ｗｅｂパーツマネージャに登録する。Ｗｅｂパーツマネージャの利点の１つは、一方のＷｅｂパーツが他方のＷｅｂパーツと通信できることである。これにより、例えば、一方のＷｅｂパーツのコンテンツを他方のＷｅｂパーツで使用することができる。
【００１２】
本発明の他の特徴および利点は、以下の説明の中で述べられており、一部は、説明から明らかであるか、または本発明を実施することから学ぶことができる。本発明の特徴および利点については、添付の特許請求の範囲で特に指摘されている機器および組み合わせを使用することで、理解され、得られる。本発明のこれらの特徴および他の特徴は、以下の説明および添付の特許請求の範囲を読むとよりいっそう明らかになるか、または以下で述べているように本発明を実施することで学ぶことができる。
【発明を実施するための最良の形態】
【００１３】
本発明の上記の利点および特徴およびその他の利点および特徴を得る方法を説明するために、上で簡単に説明した本発明のより具体的な説明を添付の図面に示されている特定の実施形態を参照しながら行う。これらの図面が本発明の代表的な実施形態を示しているだけであり、したがってその範囲を制限しているものとみなされないことを理解していることを前提として、添付の図面を使用して本発明を具体的内容および詳細とともに説明する。
【００１４】
本発明は、モジュール型Ｗｅｂアプリケーションを作成するための方法とシステムの両方を対象とする。具体的には、本発明は、エンドユーザ側でパーソナライズおよびカスタマイズ化を行えるモジュール型Ｗｅｂページを作成するシステムおよび方法に関する。本発明の一実施形態は、モジュール型を採用した内容豊富でカスタマイズ可能なＷｅｂアプリケーションを作成するために使用できるインフラストラクチャまたはフレームワークを提示する。
【００１５】
一実施形態では、このフレームワークではサーバサイドビヘイビアおよびクライアントサイドビヘイビアを使用し、またコントロール同士の間で情報を共有することができる。例えば、フレームワークは、拡張可能基本クラスおよびコントロールを含む。一実施形態では、フレームワークにはパーツコントロール、ゾーンコントロール、およびパーツマネージャが含まれる。
【００１６】
パーツコントロールは、通常、特定のパーツコントロールの機能が他のパーツコントロールの機能と著しく異なることがあっても一貫した方法でパーツコントロールをユーザに見せられるようにするプロパティを備える。パーツコントロールのプロパティは、例えば、コントロールの回りに整合性のとれたウィンドウまたはユーザインターフェースをレンダリングする場合に使用する。一実施形態では、ユーザインターフェースは、タイトルバー、最小化する、最大化する、および閉じるの動詞、および囲む枠線を含むことができる。パーツコントロールを作成するには、複数の異なる基本クラスを使用する。例示的なパーツコントロールには、例えば、Ｗｅｂパーツコントロール、エディタパーツコントロール、およびカタログパーツコントロールがある。
【００１７】
ゾーンコントロールは、通常、パーツコントロールをモジュール方式または整合性のある方法でパーツコントロールを配列する場合に使用される。ゾーンは、各パートのユーザインターフェースをレンダリングする役割を持つ。例えば、パーツコントロールのプロパティにクロムユーザインターフェースが含まれる場合、特定のパーツコントロールを含むゾーンコントロールは、そのパーツコントロールのクロムユーザインターフェースをレンダリングする役割を持つ。ゾーンコントロールを作成する場合に使用するクラスとしては、制限ではないが、パーツから継承するすべてのコントロールをレイアウトするために使用されるゾーン基本クラス、エディタゾーンクラス、およびカタログゾーンクラスがある。本発明のいくつかの実施形態では、さらに、一方のユーザによって設定されたパーソナライズまたはカスタマイズ特性を、他のユーザから使用できるようにエクスポートする機能を備える。サードパーティ生成クラスも、フレームワークに組み込むことができる。
【００１８】
図１は、カスタマイズ可能なモジュール型Ｗｅｂページの一例を示す。Ｗｅｂポータルは、モジュール方式で編成された情報またはデータを含むＷｅｂページ１００として示されている。例えば、Ｗｅｂページ１００は、ウエルカム情報をＷｅｂパーツ１０２に、気象情報をＷｅｂパーツ１０４に、株式情報をＷｅｂパーツ１０６に、検索ウィンドウをＷｅｂパーツ１０８に、リンクの選択をＷｅｂパーツ１１０に配置する。Ｗｅｂページ１００は、さらに、ユーザが自分の趣味および好みに応じてＷｅｂページ１００をパーソナライズすることができるパーソナライゼーションリンク１１２を備える。これらのＷｅｂパーツは、Ｗｅｂパーツフレームワーク内の、Ｗｅｂパーツコントロールとも呼ばれる、Ｗｅｂパーツ基本クラスの参照により作成される。
【００１９】
本発明の一実施形態では、Ｗｅｂパーツのルック＆フィールは、ゾーンを使用していくつかの側面を制御することができる。そこで図２を参照すると、図１に示されているＷｅｂパーツの特性を定義するために３つのＷｅｂゾーンが使用されていることがわかる。Ｗｅｂページ１００は、３つのゾーン、つまり、上ゾーン２００、左ゾーン２０２、および右ゾーン２０４を含む。上ゾーンは、ウエルカムＷｅｂパーツ１０２および検索Ｗｅｂパーツ１０８を含むことを注意されたい。左ゾーン２０２は、気象Ｗｅｂパーツ１０４およびリンクＷｅｂパーツ１１０を含む。右ゾーン２０４は、単一のＷｅｂパーツ、つまり株式Ｗｅｂパーツ１０６を含む。複数のＷｅｂパーツを１つのゾーンにグループとしてまとめる、ゾーン関連付け（ｚｏｎｅ  ａｓｓｏｃｉａｔｉｏｎ）は、特定のゾーン内に配置される個々のＷｅｂパーツのルック＆フィールを調整するのに役立つ。ゾーンではこの調整を、ユーザインターフェースのレンダリング方法を制御することで行う。ユーザインターフェースは（図１に例示されているように）、タイトル１１２およびフレーム１１４などを含む。ユーザインターフェースは、さらに、動詞１１６なども含むことができる。
【００２０】
以下に、図１および２に示されているポータルを生成するために使用される永続化フォーマットファイル（この場合は、．ａｓｐｘ）の一例を示す。ゾーンおよびＷｅｂパーツが定義される領域は下線部分となっている。
【００２１】
<%@  Page  language="C#"  %>
<%@  Register  TagPrefix="SampleParts"  Assembly="Sample.web.user
interface"  Namespace="Sample.web.user  interface"%>
<html>
<head>
<link  rel="stylesheet"  href="Default.css"  type="text/css"  />
<title>Portal  Sample</title>
<asp:WebPart  manager  runat=server  />
</head>
<body>
<form  runat="server">
<table>
<tr>
<td><img src="Logo.gif"  >Home</td>
</tr>
<tr>
<td>
<table>
<tr>
<td>
<asp:WebPartZone  runat="server"  ID="TopZone"
Caption="Top"
orientation="Horizontal">
<ZoneTemplate>
<SampleParts:ContentWebPart
runat="server"/>
<SampleParts:SearchWebPart  runat="server"/>
</ZoneTemplate>
</asp:WebPartZone  >
</td>
</tr>
<tr  style="height:  100%">
<td  valign="top">
<asp:WebPartZone  runat="server"  ID="LeftZone"
Caption="Sidebar"  >
<ZoneTemplate>
<SampleParts:WeatherWebPart
runat="server"Caption="Weather"  />
<SampleParts:QuickLaunchWebPart runat="server"
Caption="Links"
Description="Favorite Links"/>
</ZoneTemplate>
</asp:WebPartZone>
</td>
<td  valign="top">
<asp:WebPartZone  runat="server"  ID="RightZone"
Caption="Main  Content"  Width="100%">
<ZoneTemplate>
<SampleParts:StocksWebPart runat="server"
Caption="Stock Tracker" Font-Name="Verdana"/>
</ZoneTemplate>
</asp:WebPartZone>
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</body>
</html>
【００２２】
図１および図２に示されているモジュール型Ｗｅｂページは、例えばＡＳＰ．ｎｅｔフレームワークの．ａｓｐｘファイルによる呼び出しなど、本発明のフレームワークのさまざまなクラスの呼び出しにより作成できるが、コントロールフォーマットファイル、この場合は．ａｓｃｘファイル内でコントロールを宣言し、ゾーン内にそのコントロールフォーマットファイルを参照することにより他のカスタマイズされたページおよびＷｅｂパーツを作成することができる。図３は、ちょうどこのようなプロセスにより生成されたＷｅｂページ３００を示している。．ａｓｃｘおよび．ａｓｐｘコードは以下のとおりである。
【００２３】
Ｅｖｅｎｔｓ．ａｓｃｘ：
<%@  Control  Language="C#"  EnablePersonalization="true"  %>
<script  runat="server">
void  Page_Load(Object  sender,  EventArgs  e)  ｛
//  obtain  the  list  of  events  from  the  Events  table
//  and  bind  to  the  DataList  Control
ASPNETPortal.EventsDB  events  =  new  ASPNETPortal.EventsDB();
myDataList.DataSource  =  events.GetEvents(4);
myDataList.DataBind();
｝
</script>
<asp:DataList  id="myDataList"  runat="server"  EnableViewState="false"
Width="98%">
<ItemTemplate>
<span  class="ItemTitle">
<asp:HyperLink  id="editLink"  ImageUrl="-/images/edit.gif"
runat="server"  />
<asp:Label  Text='<%"
DataBinder.Eval(Container.DataItem,"Title") %>'
runat="server"  />
</span>
<br  />
<span  class="Normal">
<%#  DataBinder.Eval(Container.DataItem,"WhereWhen")  %>
</span>
<br  />
<span  class="Normal">
<%#  DataBinder.Eval(Container.DataItem,"Description")  %>
</span>
<br  />
</ItemTemplate>
</asp:DataList>
Ｐａｇｅ．ａｓｐｘ
<%@  Page  Master="..＼Themes＼Portal＼Page.master"  Theme="Portal"
EnablePersonalization="true"  %>
<%@  Register  TagPrefix="my"  TagName="Events"  Src="Events.ascx"  %>
<%@  Register  TagPrefix="Smaple"  NameSpace="Sample.web.user  interface"
%>
<asp:Content runat="server"  ContentName="LeftZone">
<asp:WebPartZone  runat="server" id="sidebarZone"  Caption="Sidebar"
Width="100%">
<ZoneTemplate>
<my:Events  runat="server"  ID="Events1"  />
</ZoneTemplate>
</asp:WebPartZone>
</asp:Content>
<asp:Content  runat="server"  ContentName="MainZone">
<asp:WebPartZone  runat="server"  id="mainZone"  Caption="Main  Body"
Width="100%">
<ZoneTemplate>
<sample:announcements runat=server />
<sample:QuickLinks runat=server />
</ZoneTemplate>
</asp:WebPartZone>
</asp:Content>
<asp:Content  runat="server"  ContentName="RightZone">
<asp:WebPartEditorToolPane  runat="server"  Height="100%"/>
</asp:Content>
【００２４】
Ｗｅｂパーツを構成することには、コントロールのプロパティを設定することが含まれる。構成設定は、アプリケーション開発者、管理者、および／またはエンドユーザが行うことができる。開発者または管理者によって行われる構成設定はカスタム設定と呼ばれ、エンドユーザによって行われる設定は個人設定と呼ばれる。したがって、エンドユーザは個人設定を使用してサイトまたはページをパーソナライズまたはカスタマイズするが、関係者および管理者はカスタム設定を使用してサイトまたはページをカスタマイズすることができる。一実施形態では、カスタム設定はサイトのすべてのユーザから見える。個人設定は、通常、個人設定を行った個々のユーザからしか見えない。
【００２５】
個人設定を使用するパーソナライゼーションの一例が、図４に示されており、これは一般的に、Ｗｅｂページ４００を示している。ユーザは、Ｗｅｂパーツ４０３内の編集リンク４０２をクリックすることにより、エディタゾーン４０６内のエディタパーツ４０４にアクセスすることができる。本発明の例では、ユーザは「Ｔｉｔｌｅ」テキストボックス４０８内のテキストを修正することによりＷｅｂパーツ４０３のタイトル４０５を変更することができる。ユーザは、「Ｆｒａｍｅ  Ｓｔａｔｅ」ドロップダウンメニュー４１０を使用してフレーム状態を修正し、Ｗｅｂパーツが最大化された状態、最小化された状態、または通常状態で表示されるようにできる。ユーザは、さらに、「Ｆｒａｍｅ  Ｔｙｐｅ」ドロップダウンメニュー４１２を使用してＷｅｂパーツ４０３のフレームタイプを修正することもできる。
【００２６】
図４に示されている本発明の例では、ユーザは、さらに、「Ｓｙｍｂｏｌ」テキストボックス４１４に株式シンボルを追加したりそこから削除したりすることによりＷｅｂパーツ４０３に表示されている株価の追加または削除を行うこともできる。ユーザは、そのパーソナライゼーションの選択に満足したら、「Ａｐｐｌｙ」動詞ボタン４１６を選択し、変更をＷｅｂパーツ４０３に適用し、エディタパーツ４０４を閉じることができる。エディタパーツ４０４はさらに、閉じる動詞ボタン４１８、「ＯＫ」動詞ボタン４２０、および「Ｃａｎｃｅｌ」動詞ボタン４２２などほかにも多数の動詞ボタンを備える。閉じる動詞ボタン４１８および「Ｃａｎｃｅｌ」動詞ボタン４２２は、エディタゾーン４０６内でユーザによって行われるＷｅｂパーツ４０３への変更を行うことなくエディタパーツ４０４またはエディタゾーン４０６を含まない通常表示モードにＷｅｂページ４００を戻す同じアクションを呼び出し時に実行する。「ＯＫ」動詞ボタン４２０が呼び出されると、エディタゾーン４０４でユーザによって指定されたＷｅｂパーツ４０３に変更が加えられ、Ｗｅｂページは、エディタパーツ４０４またはエディタゾーン４０６を含まない通常表示モードに戻される。管理者カスタマイズシナリオで、またはＷｅｂページ開発者構築シナリオであっても、類似のインターフェースを使用できる。
【００２７】
フレームワークを使用することで、ユーザは使用可能なパーツのカタログからさらにＷｅｂパーツをＷｅｂページに追加することができる。図５Ａに示されているような、一般に符号５０２で表されている、カタログパーツと呼ばれるＷｅｂパーツは、ＷｅｂパーツをＷｅｂページ５００に追加する場合に使用される。カタログパーツ５０２は、カタログゾーン５０４内に配置することができる。カタログパーツ５０２には、複数のカタログ５１０が用意され、ユーザは選択によりそれらを使用することができる。本発明の一実施形態では、カタログは、カタログリンク５１２をクリックすることにより選択できる。カタログリンク５１２をクリックすると、多数のテキストボックス５０６が表示され、Ｗｅｂページ５００に追加するＷｅｂパーツを選択することができる。テキストボックス５０６をオンにして使用可能なＷｅｂパーツを選択し、「Ａｄｄ」ボタン５０８をクリックすると、ＷｅｂパーツがＷｅｂページ５００に追加される。カタログゾーン５０４は、個々のＷｅｂページユーザがＷｅｂページの表示のため選択をパーソナライズする場合に、またはＷｅｂページ開発者または管理者がカスタマイズシナリオで、特定のＷｅｂページのすべてのユーザから利用できる表示を作成するために使用することができる。
【００２８】
次に図５Ｂを参照すると、カタログパーツの他の例が示されている。カタログパーツ５２０は、Ｗｅｂページに追加するのに利用できるＷｅｂパーツ５２２の選択の表現を含む。Ｗｅｂパーツの各表現は、Ｗｅｂパーツタイトル５２４を含む。Ｗｅｂパーツタイトル５２４は、図１に示されているタイトル１１２などＷｅｂページにＷｅｂパーツが表示される場合のタイトルであるのが好ましい。Ｗｅｂパーツの表現は、さらに、パーツアイコン５２６を含む。パーツアイコン５２６は、この例ではＷｅｂパーツを表すグラフィックファイルである。
【００２９】
カタログパーツ５２０は、さらに、特定のカタログパーツ５２０内で使用可能なライブラリ５２８のリストを含むことができる。ライブラリ５２８のリスト内の各ライブラリは、一実施形態の場合などでライブラリリンク５３０をクリックすることにより選択可能である。これにより、選択されたライブラリリンク５３０と関連付けられているＷｅｂパーツ５２２の選択が表示される。
【００３０】
カタログパーツ５２０は、さらに、Ｗｅｂパーツ５２２の選択の表示を複数の異なるページに分割することもできる。ページリンク５３２が用意されており、Ｗｅｂパーツ５２２の選択を表示するさまざまなページ間にリンクが張られる。ページ別アイテムインジケータ（ｉｔｅｍｓ−ｐｅｒ−ｐａｇｅ  ｉｎｄｉｃａｔｏｒ）５３４は、カタログパーツ５２０に現在表示されているＷｅｂパーツ５２２の選択のページの数値的表現、およびページ別のアイテム数とともにＷｅｂページに追加するために使用できるＷｅｂパーツの数の表現を示している。
【００３１】
カタログパーツ５２０はさらに、Ｗｅｂページ上のどのゾーンに追加Ｗｅｂパーツを追加するかを選択するためのドロップダウン選択ボックス５３８を備える。ユーザは、Ｗｅｂページに追加するＷｅｂパーツの選択を行い、新しいＷｅｂパーツの配置場所を選択した後、「Ａｄｄ」動詞５３６を選択する。これにより、カタログゾーンは追加機能を呼び出し、新規追加Ｗｅｂパーツが適切なゾーンに追加される。新規追加Ｗｅｂパーツは、さらに、Ｗｅｂパーツの相互作用およびレイアウトを調整する機能を果たすＷｅｂパーツマネージャに登録される。
【００３２】
示されている例では、Ｗｅｂパーツは、カタログパーツ５２０などのカタログパーツを使用してＷｅｂページに追加することができる。カタログパーツ５２０が付属しているカタログゾーンは、「Ａｄｄ」動詞５３６が呼び出されたときに選択されたカタログパーツ５２０に関連付けられている「Ａｄｄ」メソッドを呼び出す。その後、カタログパーツ５２０は、Ｗｅｂパーツマネージャの「Ａｄｄ」メソッドを呼び出してＷｅｂパーツ（５２２の１つ）をページに追加しなければならない。追加されたＷｅｂパーツ（５２２の１つ）は、Ｗｅｂパーツマネージャによって追跡される。
【００３３】
Ｗｅｂパーツフレームワークでは、Ｗｅｂパーツは定義済みのインターフェースまたは接続を介して情報を他のＷｅｂパーツに伝達することができる。これらの接続は、ページ上で定義するか、またはパーソナライゼーションを通じて作成することができる。同じ接続インターフェースで通信する２つのＷｅｂパーツは、接続が可能である。さらに、後述のように、トランスフォーマを使用して、Ｗｅｂパーツと異なる接続インターフェースとの通信を実装することができる。これにより、独立に設計、実装されている場合でも、任意のＷｅｂパーツがデータを共有することができる。
【００３４】
次に図６を参照すると、２つの接続されているＷｅｂパーツの他の例が示されている。図６は、選択可能な株式シンボルのリストを表示する株式リストＷｅｂパーツ６００を示している。株式リストＷｅｂパーツ６００は、インターフェース（この例では、ＩＦｉｅｌｄＤａｔａインターフェースとして例示されている）を実装し、現在選択されている株式６０２を公開する。株式グラフＷｅｂパーツ６０４は、株式シンボルに基づいて履歴データのグラフを作成することができる。株式グラフＷｅｂパーツ６０４は、インターフェースを介して通信することができる。それぞれのＷｅｂパーツは、接続エンドポイントを、Ｗｅｂページの異なるゾーン内に表示される異なるＷｅｂパーツを調整する作業を支援するＷｅｂパーツマネージャに登録し、接続を確立することができる。一旦接続されると、２つのパーツ６００および６０４により、エンドユーザはお気に入りの株式を次々に素早く見てゆき、関連するグラフを表示することができる。
【００３５】
またＷｅｂパーツフレームワークは、エンドユーザ向けのパーソナライゼーション設定またはシステム管理者向けのカスタマイズ設定のエクスポートおよびインポートを行うための機能も備える。例えば、ユーザが上記のエディタパーツを使用してパーソナライズされた表示を設定する場合、他のユーザがその設定を使用してＷｅｂポータルの特定の表示のプロパティを設定できるようにその設定をエクスポート可能とすることができる。この機能は、ｘｍｌファイルのエクスポートおよびインポートにより、一実施形態において以下で詳しく説明するように、実行することができる。
【００３６】
上記の説明では本発明のさまざまな実施形態のさまざまな特徴および有利な特性を取り上げて概要を述べたが、以下の説明では、Ｗｅｂページに表示されるＷｅｂパーツおよびゾーンを作成するためＷｅｂパーツフレームワークに含めることができるさまざまな基本クラスおよびクラスに注目する。Ｗｅｂページ開発者は、さまざまな基本クラスおよびクラスを使用して、モジュール型のカスタマイズ可能で、パーソナライゼーション可能なＷｅｂページを作成することができる。
【００３７】
本明細書で説明するＷｅｂパーツフレームワークの一実施形態には、他のクラスおよびコントロールの派生元である基本クラスの３つの一般的グループが含まれる。これらの基本クラスの一般的グループには、パーツコントロール、ゾーンコントロール、およびＷｅｂページマネージャが含まれる。一般に、パーツコントロールは、個々のＷｅｂパーツのそれぞれの機能を含む。このようなパーツの例としては、前述のＷｅｂパーツ、エディタパーツ、およびカタログパーツがある。ゾーンコントロールは、Ｗｅｂパーツを編成し、ユーザインターフェースを各パーツの回りにレンダリングするために必要な機能を備える。
【００３８】
Ｗｅｂページマネージャは、とりわけ、どのパーツをどのゾーンに含めるかを調整し、さまざまなＷｅｂパーツ間の接続を円滑にするのを助ける、表示されないクラスである。Ｗｅｂページマネージャは、さらに、異なるモードでＷｅｂページをレンダリングすることができる。例えば、エディタＷｅｂパーツの使用を有効にするために、ＷｅｂページマネージャはＷｅｂページを編集表示モードでレンダリングする。カタログＷｅｂパーツを使用するには、Ｗｅｂページマネージャは、Ｗｅｂページをカタログ表示モードでレンダリングすることができる。Ｗｅｂページをカスタマイズするには、Ｗｅｂページマネージャは編集表示モードに似たカスタマイズ表示モードでＷｅｂページをレンダリングする。
【００３９】
パーツコントロール 
図７を参照すると、パーツコントロールの機能についてさらに詳しく説明されている。パーツコントロールは、通常、「パーツ」基本クラス７０２に依存する（ｄｅｐｅｎｄ  ｆｒｏｍ）。また、依存も、本明細書で使用する用語であるが、当業者であれば派生または継承と記述することもある。パーツ基本クラス７０２には、他の３つの基本クラス、つまり、カタログパーツ基本クラス７０４、Ｗｅｂパーツ基本クラス７０６、およびエディタパーツ基本クラス７０８が依存する。基本クラスの構造は階層型であり、他の基本クラスに依存する基本クラスまたはクラスは依存元の基本クラスの機能すべてに加えて、いくつかの設計された追加機能を含む。例えば、パーツ基本クラス７０２を使用すると、階層内の最高位にあるため、すべてのモジュール型クラスのパーツコントロールを作成することができる。Ｗｅｂパーツ基本クラス７０６を使用した場合、パーツ基本クラス７０２のすべての機能に加えて、高度な機能を備えるクラスのコントロールを使用してモジュール型クラスを作成することができる。エディタパーツ基本クラス７０８を使用すると、パーツ基本クラス７０２の機能に加えて関連するコントロールのプロパティを設定するモジュール型コントロールを使用して、モジュール型コントロールを作成することができる。つまり、エディタパーツ基本クラス７０８を使用して、他のＷｅｂパーツ基本クラス７０６をパーソナライズすることができるということである。カタログパーツ基本クラス７０４は、カタログとして機能するコントロールに使用される基本クラスである。つまり、カタログパーツ基本クラス７０４は、Ｗｅｂページのレンダリング時に、他のＷｅｂパーツの追加または削除を行えるカタログパーツ基本クラスを含む。これらのクラスは、パーツ基本クラスの機能だけでなくカタログパーツ基本クラス用に設計された他の専用機能も使用して作成することができる。各基本クラス、つまり、カタログパーツ基本クラス７０４、Ｗｅｂパーツ基本クラス７０６、およびエディタパーツ基本クラス７０８は、図７に示されているように、それらのクラスから派生または継承する他のクラスを持つ。
【００４０】
基本クラスをおよびクラスのそれぞれには、基本クラスまたはクラスの機能の一部を有効にするプロパティがある。パーツ基本クラス７０２には、Ｄｅｓｃｒｉｐｔｉｏｎ、ＦｒａｍｅＳｔａｔｅ、ＦｒａｍｅＴｙｐｅ、ＬａｒｇｅＩｃｏｎＩｍａｇｅＵｒｌ、Ｒｏｌｅｓ、ＳｍａｌｌＩｃｏｎＩｍａｇｅＵｒｌ、Ｔｉｔｌｅ、およびＴｉｔｌｅＳｔｙｌｅというプロパティが含まれる。
【００４１】
パーツ基本クラス７０２で使用可能なプロパティの１つ、およびしたがって、パーツ基本クラス７０２から継承する他のすべてのクラスは、Ｄｅｓｃｒｉｐｔｉｏｎプロパティである。Ｄｅｓｃｒｉｐｔｉｏｎプロパティは、他のＷｅｂパーツで使用可能なＷｅｂパーツの説明である。例えば、後述のように、Ｄｅｓｃｒｉｐｔｉｏｎプロパティは、カタログパーツにより、またはタイトルバーの中のツールチップとして使用することができる。Ｄｅｓｃｒｉｐｔｉｏｎプロパティは、Ｗｅｂページの作成で開発者が設定してしまった後、エンドユーザによるパーソナライズもシステム管理者によるカスタマイズも可能でない。Ｄｅｓｃｒｉｐｔｉｏｎプロパティの一例は、上述の図１の説明に関して用意されているサンプルコードに含まれている。
【００４２】
パーツ基本クラス７０２の他のプロパティとして、ＦｒａｍｅＳｔａｔｅプロパティがある。ＦｒａｍｅＳｔａｔｅプロパティは、パーツのフレーム状態を定義する。例えば、ＦｒａｍｅＳｔａｔｅプロパティは、特定のＷｅｂパーツが最小化されているか、最大化されているか、または通常であるかを定義することができる。Ｗｅｂパーツが最小化されている場合、タイトルバーのみが表示される。Ｗｅｂパーツが通常の場合、タイトルバーとパーツコンテンツが表示される。ＦｒａｍｅＳｔａｔｅプロパティは、エンドユーザによるパーソナライズもシステム管理者によるカスタマイズも可能である。
【００４３】
パーツ基本クラス７０２のさらに他のプロパティとして、ＦｒａｍｅＴｙｐｅプロパティがある。ＦｒａｍｅＴｙｐｅプロパティは、パーツのフレームを組み立てるクロムのタイプを決定する。例えば、ＦｒａｍｅＴｙｐｅプロパティの設定として、タイトルのみを表示する、タイトルと枠線を表示する、または枠線のみを表示する、がある。
【００４４】
パーツ基本クラス７０２のさらに他のプロパティとして、ＬａｒｇｅＩｃｏｎＩｍａｇｅＵＲＬプロパティがある。このプロパティは、特定のＷｅｂパーツを表すイメージのＵＲＬを含み、このイメージはパーツアイコンとも呼ばれる。これらのアイコンは、パーツのグラフィック表現として使用することができる。図５Ｂの説明とともに上で説明したように、ＬａｒｇｅＩｃｏｎＩｍａｇｅＵＲＬプロパティは、Ｗｅｂページに追加するのに使用可能なＷｅｂパーツのグラフィック表現を示すためページカタログパーツにより使用することができる。これはさらに、特定のＷｅｂパーツのタイトル領域に含めることもできる。このプロパティは、エンドユーザによるパーソナライズもシステム管理者によるカスタマイズも可能でない。ＬａｒｇｅＩｃｏｎＩｍａｇｅＵＲＬプロパティと似たものとしてＳｍａｌｌＩｃｏｎＩｍａｇｅＵＲＬプロパティがある。このプロパティにより、ＬａｒｇｅＩｃｏｎＩｍａｇｅＵＲＬに似た方法で特定のＷｅｂパーツを表すイメージのＵＲＬを記述するが、ただし、ＵＲＬは、サイズが小さいイメージにリンクしている。
【００４５】
パーツ基本クラスのさらに他のプロパティとして、Ｒｏｌｅｓプロパティがある。Ｒｏｌｅｓプロパティでは、Ｗｅｂページ開発者は特定のＷｅｂパーツが利用可能なロールを設定することができる。例えば、Ｗｅｂパーツは、カスタマイズシナリオなどでのサイト管理機能をオープンの「Ａｄｍｉｎ」ロールを持つすべてのユーザに提供することも可能である。
【００４６】
パーツ基本クラスでさらに使用可能な他のプロパティとして、Ｔｉｔｌｅプロパティがある。Ｔｉｔｌｅプロパティの値は、コンテンツの上のＷｅｂパーツの最上位に表示されるタイトルとしてレンダリングされる。これは、通常、Ｔｉｔｌｅプロパティ文字列内のテキストと見出しの組み合わせである。本発明の好ましい実施形態では、Ｔｉｔｌｅプロパティは、ＬａｒｇｅＩｃｏｎＩmａｇｅＵＲＬおよびＳｍａｌｌＩｃｏｎＩｍａｇｅＵＲＬに関して上で説明したパーツアイコンプロパティがクライアントにレンダリングされるときに代替えテキストとして使用しなければならない。
【００４７】
Ｗｅｂパーツ基本クラス 
図７に例示されているＷｅｂパーツ基本クラス７０６は、パーツ基本クラスに依存しており、本明細書で定義される他のプロパティに加えてパーツ基本クラスのすべてのプロパティおよび機能を含む。例えば、Ｗｅｂパーツ基本クラス７０６は、Ｃｏｎｎｅｃｔｉｏｎｓプロパティを含む。Ｃｏｎｎｅｃｔｉｏｎｓプロパティは、このＷｅｂパーツと関連付けられた接続を記述する。Ｃｏｎｎｅｃｔｉｏｎｓプロパティの使用例は、図６の説明とともに上述で説明されており、またＷｅｂパーツマネージャ基本クラスの説明でも本明細書において詳述することにする。
【００４８】
Ｗｅｂパーツ基本クラス７０６で使用可能なさらに他のプロパティとしては、ＨｅｌｐＵＲＬおよびＷｅｂＰａｒｔＨｅｌｐＭｏｄｅプロパティがある。ＨｅｌｐＵＲＬプロパティは、特定のＷｅｂパーツに関するヘルプを表示するページのＵＲＬに設定することができる。ＷｅｂＰａｒｔＨｅｌｐＭｏｄｅプロパティでは、リンクの表示方法が定義される。例えば、リンクは、モーダルダイアログ（または、モーダルダイアログがサポートされていない場合は新規ブラウザウィンドウ）として表示することができる。また、リンクは、モードレスダイアログ（または、モードレスダイアログがサポートされていない場合は新規ブラウザウィンドウ）として表示することができる。さらにリンクを表示しておいて、現在のウィンドウを使用してヘルプのＵＲＬへナビゲートすることができる。
【００４９】
Ｗｅｂパーツ基本クラス７０６内に存在するプロパティのさらに他のグループは、「Ａｌｌｏｗ」プロパティと呼ばれるパーツプロパティのグループである。これらのプロパティを使用することにより、Ｗｅｂページ開発者は特定のＷｅｂパーツで使用可能な機能を決定することができる。例えば、ＡｌｌｏｗＣｌｏｓｅプロパティを使用すると、Ｗｅｂページ開発者は特定のＷｅｂパーツを閉じられる（つまり、ゾーンから除去される）かどうかを判別することができる。このプロパティは、一般に、すべてのユーザによるパーソナライズが可能である。ＡｌｌｏｗＨｉｄｅプロパティを使用すると、Ｗｅｂページ開発者は特定のＷｅｂパーツを非表示にできる（つまり、表示されない要素、ただしゾーン内にはそのまま含まれている）かどうかを定義することができる。このプロパティは、一般に、すべてのユーザによるパーソナライズまたはカスタマイズが可能である。ＡｌｌｏｗＭｉｎｉｍｉｚｅプロパティでは、特定のＷｅｂパーツを最小化できるかどうかを決定する（Ｗｅｂページに表示されているタイトルバーのみ）。このプロパティは、すべてのユーザによるパーソナライズまたはカスタマイズが可能である。ＡｌｌｏｗＭｏｖｅプロパティでは、Ｗｅｂパーツをゾーン内で、またはゾーン間で移動できるかどうかを決定する。このプロパティは、パーソナライズもカスタマイズも可能でない。ＡｌｌｏｗＥｘｐｏｒｔプロパティでは、特定のＷｅｂパーツプロパティ設定をエクスポートできるかどうかを決定する。
【００５０】
Ｗｅｂパーツ基本クラス７０６は、ＡｌｌｏｗＰｅｒｓｏｎａｌｉｚａｔｉｏｎプロパティも含む。こうして、ページ開発者が指定されたＷｅｂパーツについてパーソナライゼーションを禁止したい場合には、プロパティをｆａｌｓｅに設定すればよい。例えば、いくつかのプロパティは一般的な意味でパーソナライズが可能であるが、Ｗｅｂページ開発者がそれらのパーソナライズ可能な属性を削除することを選択した場合、ＥｎａｂｌｅＰｅｒｓｏｎａｌｉｚａｔｉｏｎプロパティを単にｆａｌｓｅに設定するだけで削除することができる。したがってエンドユーザおよびシステム管理者は、このプロパティが設定されている特定のＷｅｂパーツを編集することを許可されない。
【００５１】
Ｗｅｂパーツ基本クラス７０６は、Ｃａｐｔｉｏｎプロパティも含む。このプロパティにより、Ｗｅｂパーツのクロム内のタイトルの終わりに追加される文字列を定義する。このプロパティは、ドキュメントの名前または他のコンテキスト固有の情報を対象とする。このプロパティは、静的であることが想定されるＴｉｔｌｅプロパティとは異なり、動的であることが想定される。Ｗｅｂパーツ基本クラス７０６に含まれる他のプロパティとして、Ｄｉｒｅｃｔｉｏｎプロパティがある。
【００５２】
Ｗｅｂパーツ基本クラス７０６で使用可能なもう１つのプロパティは、Ｈｉｄｄｅｎプロパティである。Ｈｉｄｄｅｎプロパティでは、特定のＷｅｂパーツをＷｅｂページに表示するかどうかを決定する。Ｈｉｄｄｅｎプロパティがｆａｌｓｅに設定されているパーツは非表示とみなされる。一実施形態では、これらのパーツはインスタンス化され、事前レンダリングおよびレンダリング段階を通る。しかし、ゾーンは、Ｗｅｂページ上のコンテンツを表示しない。それにもかかわらず、非表示のパーツは接続に参加することができる。非表示のパーツは、後述のＷｅｂパーツマネージャを説明している本明細書の節で説明するように、通常またはデザインモードに入っている場合に非表示になっている。Ｗｅｂパーツマネージャがカスタマイズまたはパーソナライズのシナリオなどで編集モードに入っている場合、非表示パーツは通常、表示され、パーソナライズを行える。
【００５３】
Ｗｅｂパーツ基本クラス７０６のＶｉｓｉｂｌｅプロパティがｆａｌｓｅに設定された場合、Ｗｅｂパーツは閉じているとみなされる。Ｖｉｓｉｂｌｅプロパティがｆａｌｓｅに設定されているＷｅｂパーツはページ上にインスタンス化されるが、ライフサイクルのレンダリング段階を通らない（事前レンダリングとレンダリング）。Ｗｅｂパーツを閉じると、Ｗｅｂパーツは接続または他の通信に参加できなくなる。
【００５４】
Ｗｅｂパーツ基本クラス７０６のＤｉｓｐｌａｙプロパティは、ＷｅｂパーツをＷｅｂページブラウザに表示するかどうかを決定する。ＷｅｂパーツをＷｅｂページブラウザに表示しないようにＤｉｓｐｌａｙプロパティが設定されているとしても、特定のＷｅｂパーツはレンダリング段階を通る。このプロパティは、ユーザ毎のパーソナライズが可能である。Ｗｅｂパーツ基本クラス７０６のＥｄｉｔＵＲＬプロパティは、特定のＷｅｂパーツを編集するために使用することができるＨＴＭＬファイルのＵＲＬを含む。このプロパティは、すべてのユーザによるパーソナライズおよびカスタマイズが可能である。
【００５５】
Ｗｅｂパーツ基本クラス７０６のエディタパーツプロパティは、Ｗｅｂパーツに関連付けられたカスタムエディタパーツの集まりを規定する。カスタムエディタパーツが依存する、エディタパーツ基本クラス７０８は、パーツ基本クラス７０２に依存しており、これについては以下で詳述する。このプロパティは、この例ではカスタマイズもパーソナライズも可能でない。
【００５６】
Ｗｅｂパーツ基本クラス７０６のＩｓＳｈａｒｅｄプロパティは、特定のパーツが複数のユーザ間で共有されているか、または現在のユーザからしか使用できないかを示す。このプロパティは、カスタマイズもパーソナライズも可能でない。Ｗｅｂパーツ基本クラス７０６のＭｉｓｓｉｎｇＡｓｓｅｍｂｌｙプロパティには、ユーザがＷｅｂページサーバ上にインストールされていないアセンブリ内に存在するＷｅｂパーツを追加しようとしたときに表示されるテキストが格納される。このプロパティは、カスタマイズもパーソナライズも可能でない。Ｗｅｂパーツ基本クラス７０６のＴｉｔｌｅＵＲＬプロパティは、特定のＷｅｂパーツに関する捕捉情報を格納するＨＴＭＬドキュメントへのＵＲＬを含む。このリンクは、指定されている場合にフレームのタイトルバーに表示される。このプロパティは、すべてのユーザによるパーソナライズおよびカスタマイズが可能である。Ｗｅｂパーツ基本クラス７０６のＶｅｒｂｓプロパティは、特定のＷｅｂパーツに関連付けられた動詞の集まり（ＯＫ、Ａｐｐｌｙ、閉じる、最大化、最小化など）の集まりを規定する。このプロパティは、カスタマイズもパーソナライズも可能でない。
【００５７】
これらのＷｅｂパーツは、一般に、常にではないが、ゾーン内にレンダリングされる。Ｗｅｂパーツ基本クラス７０６のｚｏｎｅプロパティは、Ｗｅｂパーツを含むＷｅｂパーツゾーンを規定する。このプロパティは、カスタマイズもパーソナライズも可能でない。Ｗｅｂパーツ基本クラス７０６のＺｏｎｅＩＤプロパティは、特定のＷｅｂパーツを含むゾーンのＩＤを規定する。このプロパティは、カスタマイズおよびパーソナライズが可能である。Ｗｅｂパーツ基本クラス７０６のＺｏｎｅＩｎｄｅｘプロパティは、ゾーン内の他のＷｅｂパーツに関するゾーン内のＷｅｂパーツのインデックスを規定する。
【００５８】
いくつかのクラスでは、プロパティに加えて、メソッドも用意されている。メソッドは、クラスの機能を呼び出す手段である。これらのメソッドはさらに、特定のクラスの機能を他の外部コンポーネントまたはクラスに提供する方法に関する情報も含む。例えば、Ｗｅｂパーツ基本クラス７０６は、ＧｅｔＣｏｎｎｅｃｔｉｏｎＩｎｔｅｒｆａｃｅメソッドを備えている。このメソッドは、ヘルパメソッドであり、これにより、他のＷｅｂパーツから情報を受け取るＷｅｂパーツであるコンシューマは、追加接続インターフェースについて、コンシューマなどの他のＷｅｂパーツに情報を提供するＷｅｂパーツであるプロバイダに問い合わせを行うことができる。このメソッドは、後で詳しく説明する、トランスフォーマのような接続オブジェクトをトラバースするロジックを含む。
【００５９】
Ｗｅｂパーツ基本クラス７０６は、さらに、ＯｎＥｄｉｔＭｏｄｅＣｈａｎｇｅｄメソッドを備える。このメソッドは、特定のパーツが編集モードに入ったり終了したりするときに呼び出される。このパーツは、Ｗｅｂパーツマネージャにフックしたいパーツ開発者への便宜のため追加されている。
【００６０】
さらに、特定のクラスの機能を定義するのは、列挙型である。列挙型は、プロパティ値を設定する特別なデータ型である。あるプロパティに対し列挙型が存在している場合、プロパティ値の選択を行うためのドロップダウンメニューを含むユーザインターフェースを構築することができる。例えば、Ｗｅｂパーツ基本クラス７０６には、ＷｅｂＰａｒｔＨｅｌｐＭｏｄｅという列挙型がある。この列挙型は、パーツのヘルプＵＲＬの取り扱い方を記述するものである。３つの値があり、ＷｅｂＰａｒｔＨｅｌｐＭｏｄｅ列挙型に対して選択することができる。これには、モーダル、モードレス、およびナビゲートが含まれる。この特定の列挙型がモーダルに設定されている場合、ヘルプＵＲＬはモーダルウィンドウ内に表示されなければならない。この列挙型がモードレスに設定されている場合、ヘルプＵＲＬは、ウィンドウを消すことを指示するまでユーザの画面上でアクティブのままになっているかまたは表示されているモードレスウィンドウ内に表示されなければならない。この列挙型がナビゲートに設定されている場合、ページ全体がヘルプＵＲＬにナビゲートされる。
【００６１】
Ｗｅｂパーツ基本クラス７０６の中の他の列挙型として、パーツＦｒａｍｅＴｙｐｅがある。パーツＦｒａｍｅＴｙｐｅ列挙型は、Ｗｅｂパーツおよびゾーンコントロールの両方により、ユーザインターフェースの一部として各Ｗｅｂパーツの回りに適用されるフレームを記述するために使用される。この例では、この列挙型は、ｎｏｎｅ、ｔｉｔｌｅ  ｏｎｌｙ、ｔｉｔｌｅ  ａｎｄ  ｂｏｒｄｅｒ、ｂｏｒｄｅｒ  ｏｎｌｙ、および既定値という５つの値のうちの１つを持つことができる。値がｎｏｎｅに設定されている場合、Ｗｅｂパーツの回りにフレームは表示されない。値がｔｉｔｌｅ  ｏｎｌｙに設定されている場合、Ｗｅｂパーツ上にタイトルバーのみが表示される。値がｔｉｔｌｅ  ａｎｄ  ｂｏｒｄｅｒに設定されている場合、タイトルバーと枠線の両方がレンダリングされる。値がｂｏｒｄｅｒ  ｏｎｌｙに設定されている場合、枠線のみがレンダリングされ、Ｗｅｂパーツ上にタイトルバーはレンダリングされない。値が既定値のままであれば、フレームタイプを囲まれているゾーンから取らなければならない。ＰａｒｔＦｒａｍｅＴｙｐｅ列挙型の実装例は、「Ｆｒａｍｅ  Ｔｙｐｅ」ドロップダウンメニュー４１２として図４に示されている。
【００６２】
Ｗｅｂパーツ基本クラス７０６で使用可能な他の列挙型として、パーツＦｒａｍｅＳｔａｔｅ列挙型がある。この列挙型は、パーツとゾーンコントロールの両方により、Ｗｅｂパーツの状態を記述するために使用される。この例では、この列挙型に対し、ｎｏｒｍａｌ、ｍｉｎｉｍｉｚｅｄ、または既定値の３つの値が用意されている。値がｎｏｒｍａｌに設定されている場合、通常のウィンドウが表示される。値がｍｉｎｉｍｉｚｅｄに設定されている場合、タイトルバーだけが表示される。値が既定値に設定されている場合、Ｗｅｂパーツ上で、フレームスタイルを囲まれているゾーンから取らなければならない。Ｗｅｂパーツ上で、既定値が使用される場合、標準のフレームスタイルを使用しなければならない。パーツＦｒａｍｅＳｔａｔｅ列挙型の実装例は、「Ｆｒａｍｅ  Ｓｔａｔｅ」ドロップダウンメニュー４１０として図４に示されている。
【００６３】
エディタパーツ基本クラス 
パーツ基本クラス７０２に依存する他のクラスは、図７に例示されているようにエディタパーツ基本クラス７０８である。エディタパーツ基本クラス７０８は、エディタパーツ基本クラス７０８に固有のいくつかのプロパティおよびメソッドを含むパーツ基本クラス７０２の機能を超える機能を備える。エディタパーツは、編集に使用できる単一のＷｅｂパーツに関連付けることができる。エディタパーツのコントロールは、ユーザインターフェースを介してＷｅｂパーツを「編集」する場合に使用される。
【００６４】
エディタパーツ基本クラス７０８で使用可能な１つのプロパティとして、ＡｌｌｏｗＭｉｎｉｍｉｚｅプロパティがある。このプロパティで、エディタパーツを最小化できるかどうかを指定する。エディタパーツ基本クラスで使用可能なもう１つのプロパティは、ＷｅｂＰａｒｔＴｏＥｄｉｔプロパティである。このプロパティは、エディタパーツが担当するコントロールへの参照である。エディタパーツ基本クラス内に存在するさらにもう１つのプロパティは、Ｄｉｓｐｌａｙプロパティである。このプロパティで、エディタゾーンにこのパーツを表示するかどうかを指定する。例えば、エディタパーツに現在ＷｅｂＰａｒｔＴｏＥｄｉｔ用のユーザインターフェースがない場合、このプロパティをｆａｌｓｅに設定して、その特定のエディタパーツが表示されないようにする。
【００６５】
エディタパーツ基本クラス７０８は、少なくとも２つのメソッドを備える。１つはＡｐｐｌｙＣｈａｎｇｅｓメソッドである。ＡｐｐｌｙＣｈａｎｇｅｓメソッドは、エディタパーツがその関連付けられたＷｅｂパーツに値を適用しなければならない場合にゾーンによって呼び出される。値がｔｒｕｅであれば、保存が成功したということであり、値としてｆａｌｓｅが返されると、エラーが発生したということである。エディタパーツ基本クラスで使用可能なもう１つのメソッドは、ＳｙｎｃＣｈａｎｇｅｓメソッドである。このメソッドは、他のエディタパーツがエディタパーツに関連付けられているＷｅｂパーツコントロールプロパティを変更している可能性があるため、エディタパーツが値の同期をとらなければならない場合にゾーンによって呼び出される。これは、通常、他のエディタパーツにより適用された変更がすべて正常に返された後に呼び出される。
【００６６】
エディタパーツ基本クラスから派生する多数のクラスには、ＰｒｏｐｅｒｔｙＧｒｉｄＥｄｉｔｏｒパーツ７１０、ＢｅｈａｖｉｏｒＥｄｉｔｏｒパーツ７１２、ＡｐｐｅａｒａｎｃｅＥｄｉｔｏｒパーツ７１４、ＬａｙｏｕｔＥｄｉｔｏｒパーツ７１６、およびさまざまなサードパーティエディタパーツ７１８がある。
【００６７】
エディタパーツ基本クラスからはＰｒｏｐｅｒｔｙＧｒｉｄＥｄｉｔｏｒパーツクラス７１０が派生する。ＰｒｏｐｅｒｔｙＧｒｉｄＥｄｉｔｏｒパーツ７１０は、Ｗｅｂブラウザで参照可能とのマークが付けられているプロパティを表示するエディタパーツである。ＰｒｏｐｅｒｔｙＢｒｏｗｓｅｒＥｄｉｔｏｒパーツクラス７１０は、プロパティのタイプに基づいて各プロパティの異なるユーザインターフェースをレンダリングすることができる。既定のユーザインターフェースは、コントロールのプロパティ値を設定するためにタイプコンバータと共に使用されるテキストボックスである。異なるプロパティタイプのユーザインターフェースは次のようなものとすることができる。プロパティタイプが文字列型であれば、レンダリングされるユーザインターフェースはテキストボックスになる。整数型、浮動小数点型、または単位型（ｕｎｉｔ）であれば、これもまたレンダリングされるユーザインターフェースはテキストボックスになる。ブールプロパティ型であれば、レンダリングされるユーザインターフェースはチェックボックス、ラジオボタン、またはドロップダウンになる。列挙型の場合、レンダリングされるユーザインターフェースは列挙型の値のドロップダウンである。ＤａｔｅＴｉｍｅプロパティ型であれば、レンダリングされるユーザインターフェースはテキストボックスまたはカレンダになる。色型（ｃｏｌｏｒ）であれば、レンダリングされるユーザインターフェースはテキストボックス、ドロップダウン、またはカラーピッカーである。
【００６８】
エディタパーツ基本クラス７０８から派生するコントロールで、ＰｒｏｐｅｒｔｙＧｒｉｄＥｄｉｔｏｒパーツコントロール７１０によって提供されるユーザインターフェースのタイプを指定する必要はない。その代わりに、エディタパーツにより自動的に決定される。さらに、ＰｒｏｐｅｒｔｙＧｒｉｄＥｄｉｔｏｒパーツコントロール７１０は、ページ開発者が共通のタイプに対する好ましいユーザインターフェースのレンダリングであることを示すためのいくつかのプロパティを含む。例えば、プロパティタイプがチェックボックスまたはラジオボタンの使用に役立つものである場合、ＰｒｏｐｅｒｔｙＧｒｉｄＥｄｉｔｏｒパーツコントロール７１０内のプロパティを使用すると、ページ開発者は使用するユーザインターフェースのタイプに関して選択することができる。
【００６９】
ＰｒｏｐｅｒｔｙＧｒｉｄＥｄｉｔｏｒパーツコントロール７１０は、さらに、エディタパーツのルック＆フィールを調整するためのいくつかのスタイルプロパティも備える。一組のスタイルプロパティがテキスト書式設定の中心に置かれ、プロパティ：ＰｒｏｐｅｒｔｙＮａｍｅＳｔｙｌｅ、ＰｒｏｐｅｒｔｙＳｅｔｔｅｒＳｔｙｌｅ、およびＥｒｒｏｒＳｔｙｌｅを含む。さらに、プロパティ名および関連付けられたセッタユーザインターフェースを編成するために使用されるテーブルの外観を制御するのにスタイルを使用することができる。このテーブルのスタイルは、ＧｒｉｄＳｔｙｌｅＰｒｏｐｅｒｔｙを使用して制御することができる。例えば、ユーザは、グリッドの回りに線をレンダリングするようにエディタパーツを構成することも可能である。このスタイルは、プロパティ名およびセッタユーザインターフェースをラッピングする外部テーブルに適用される。
【００７０】
ＰｒｏｐｅｒｔｙＧｒｉｄＥｄｉｔｏｒクラスで指定できるプロパティのいくつかは、さまざまな選択を行うために表示されるユーザインターフェースに関するものである。これらのプロパティは、既定値を含むが、他の許容可能な書式も含むことができる。ＰｒｏｐｅｒｔｙＧｒｉｄＥｄｉｔｏｒパーツクラスのＢｏｏｌＥｄｉｔｏｒＴｙｐｅプロパティは、ブール型プロパティに使用されるセッタユーザインターフェースのタイプを決定する。既定のタイプは、チェックボックスであるが、ラジオボタンまたはドロップダウンも使用可能である。ＣｏｌｏｒＥｄｉｔｏｒＴｙｐｅパーツは、色型プロパティに使用されるセッタユーザインターフェースのタイプを決定する。既定のタイプはドロップダウンであるが、上記のように、カラーピッカーまたはテキストボックスも使用することができる。ＰｒｏｐｅｒｔｙＧｒｉｄＥｄｉｔｏｒパーツのＤａｔｅＥｄｉｔｏｒＴｙｐｅプロパティは、日付プロパティに使用されるセッタユーザインターフェースのタイプを決定する。このタイプの既定値は、テキストボックスであるが、またはその他の適当なインターフェースも指定できる。ＰｒｏｐｅｒｔｙＧｒｉｄＥｄｉｔｏｒパーツクラス７１０のＵｎｉｔＥｄｉｔｏｒＴｙｐｅは、単位プロパティに使用されるセッタユーザインターフェースのタイプを決定する。このプロパティの既定値はテキストボックスである。
【００７１】
ＰｒｏｐｅｒｔｙＧｒｉｄＥｄｉｔｏｒパーツクラス７１０のＷｅｂＰａｒｔＴｏＥｄｉｔプロパティは、そのエディタパーツが受け持つＷｅｂパーツへの参照である。このプロパティは、エディタパーツが関連するコントロールに関するプロパティを調整する場合に使用することができる。
【００７２】
ＰｒｏｐｅｒｔｙＧｒｉｄＥｄｉｔｏｒパーツクラス７１０のＤｉｓｐｌａｙプロパティは、エディタゾーンにこのパーツを表示するかどうかを示す。例えば、エディタパーツに現在のＷｅｂＰａｒｔＴｏＥｄｉｔに対応するユーザインターフェースがない場合、Ｄｉｓｐｌａｙプロパティはｆａｌｓｅに設定され、エディタパーツは表示されない。ＰｒｏｐｅｒｔｙＧｒｉｄＥｄｉｔｏｒパーツのＧｒｉｄＳｔｙｌｅＰｒｏｐｅｒｔｙは、使用可能なプロパティのグリッドに適用されるテーブルスタイルを決定する。
【００７３】
ＰｒｏｐｅｒｔｙＧｒｉｄＥｄｉｔｏｒパーツ基本クラス７１０はさらに、このクラスで使用可能なさまざまなメソッドを備える。ＰｒｏｐｅｒｔｙＧｒｉｄＥｄｉｔｏｒパーツ基本クラス７１０のＡｐｐｌｙＣｈａｎｇｅｓメソッドは、エディタパーツが値を関連するコントロールに適用しなければならない場合にエディタゾーンによって呼び出される。「ＯＫ」または「Ａｐｐｌｙ」動詞がエディタゾーン内で呼び出され、変更を保存すべきであることを指示した場合に、このメッセージメソッドはエディタパーツのホストとなっているエディタゾーンにより呼び出される。エラーが発生した場合にエディタパーツはｆａｌｓｅを返すことで、エディタゾーンは適切な動作をする。例えば、「ＯＫ」動詞がクリックされた場合、エディタゾーンは通常、ＡｐｐｌｙＣｈａｎｇｅｓを呼び出した後にページを通常モードに設定する。しかし、エラーが発生すると、エディタパーツは表示されたままとなり、エラーを訂正することができる。Ｔｒｕｅ値が返されると、保存が成功したということである。
【００７４】
ＰｒｏｐｅｒｔｙＧｒｉｄＥｄｉｔｏｒパーツでは、２種類の例外が発生することがある。第１の種類の例外は、文字列をプロパティのデータ型に変換している間にエディタパーツ自体が投げる例外である。便宜上、これらの例外は、変換例外と呼ぶ。第２の種類の例外は、データベースのように、Ｗｅｂパーツまたはそれよりも下の何らかの層のプロパティのｓｅｔメソッドにより投げられる例外である。
【００７５】
ＰｒｏｐｅｒｔｙＧｒｉｄＥｄｉｔｏｒパーツは、設定可能プロパティのグリッドの最上位に一般エラーメッセージを表示する。このエラーテキストは、ＥｒｒｏｒＴｅｘｔプロパティを通じて設定することができる。文字列の置き換えは、エラーの原因となった第１のプロパティの名前を置換して行うことができる。ＰｒｏｐｅｒｔｙＧｒｉｄＥｄｉｔｏｒパーツは、Ｃｏｎｖｅｒｔルーチンが呼び出されたときに例外をキャッチし、修正することにより分かりやすい変換エラーメッセージを表示する。このような文字列置換には、「Ｔｈｉｓ  ｐｒｏｐｅｒｔｙ  ｒｅｑｕｉｒｅｓ  ａ  ｎｕｍｅｒｉｃ  ｖａｌｕｅ」または「Ｔｈｉｓ  ｖａｌｕｅ  ｉｓ  ｏｕｔ  ｏｆ  ｒａｎｇｅ」または「Ｔｈｉｓ  ｐｒｏｐｅｒｔｙ  ｒｅｑｕｉｒｅｓ  ａ  ｖａｌｕｅ  ｇｒｅａｔｅｒ  ｔｈａｎ  ｏｒ  ｅｑｕａｌ  ｔｏ  ０」または「Ｔｈｉｓ  ｐｒｏｐｅｒｔｙ  ｒｅｑｕｉｒｅｓ  ａｎ  ｉｎｔｅｇｅｒ  ｖａｌｕｅ」または「Ｔｈｉｓ  ｐｒｏｐｅｒｔｙ  ｒｅｑｕｉｒｅｓ  ａ  ｗｅｂ  ａｄｄｒｅｓｓ」または設定されるプロパティに適した他のメッセージがある。
【００７６】
Ｗｅｂパーツが投げるエラーについては、フレームワーク側でそれと同時に例外メッセージを表示する。したがって、Ｗｅｂパーツ開発者は、エラーメッセージを標準例外メッセージではなくわかりやすい形式に修正することができる。本発明の一実施形態では、ＴｙｐｅＣｏｎｖｅｒｔｅｒを使用したときにエラーを起こしやすいプロパティには、ＷｅｂＢｒｏｗｓａｂｌｅのマークが付けられない。その代わりに、プロパティを設定するためのカスタムエディタパーツが用意される。
【００７７】
ＰｒｏｐｅｒｔｙＧｒｉｄＥｄｉｔｏｒパーツのＳｙｎｃＣｈａｎｇｅｓメソッドは、他のエディタパーツ（つまり、Ｗｅｂパーツの関連コントロール）がコントロールプロパティを変更している可能性があるためエディタパーツが値の同期をとらなければならない場合にエディタゾーンによって呼び出される。ＳｙｎｃＣｈａｎｇｅｓは、ＡｐｐｌｙＣｈａｎｇｅｓメソッドがすべてのエディタパーツから正常に戻ってからでないと呼び出されない。したがって、ＳｙｎｃＣｈａｎｇｅｓメソッドは、ＡｐｐｌｙＣｈａｎｇｅｓメソッドのどれかがｆａｌｓｅを返した場合には呼び出されず、エラーが発生したことがわかる。
【００７８】
ＡｐｐｅａｒａｎｃｅＥｄｉｔｏｒパーツ基本クラス７１４はエディタパーツ基本クラス７０８に依存する。ＡｐｐｅａｒａｎｃｅＥｄｉｔｏｒパーツ基本クラス７１４は、ｔｉｔｌｅ、ｓｉｚｅ、ｆｒａｍｅ  ｔｙｐｅなどの共通ユーザインターフェースのＷｅｂパーツプロパティを設定する。ＡｐｐｅａｒａｎｃｅＥｄｉｔｏｒパーツ基本クラス７１４によってレンダリングされるＡｐｐｅａｒａｎｃｅＥｄｉｔｏｒパーツの例は、図８Ａに示されており、一般的に８００で示される。ＬａｙｏｕｔＥｄｉｔｏｒパーツ基本クラス７１６は、エディタパーツ基本クラス７０８に依存する。ＬａｙｏｕｔＥｄｉｔｏｒパーツ基本クラス７１６は、ｚｏｎｅ、ＺｏｎｅＩｎｄｅｘ、Ｈｉｄｄｅｎなどに対するＷｅｂパーツレイアウトプロパティを設定する。ＬａｙｏｕｔＥｄｉｔｏｒパーツ基本クラス７１６によってレンダリングされるＬａｙｏｕｔＥｄｉｔｏｒパーツの例は、図８Ｂに示されており、一般的に８０２で示される。
【００７９】
ＢｅｈａｖｉｏｒＥｄｉｔｏｒパーツ基本クラス７１２は、エディタパーツ基本クラス７０８に依存する。ＢｅｈａｖｉｏｒＥｄｉｔｏｒパーツ基本クラス７１２は、ＡｌｌｏｗＣｌｏｓｅ、ＡｌｌｏｗＭｉｎｉｍｉｚｅ、ＡｌｌｏｗＥｘｐｏｒｔ、ＥｎａｂｌｅＰｅｒｓｏｎａｌｉｚａｔｉｏｎ、ＴｉｔｌｅＵＲＬ、ＥｄｉｔＵＲＬ、ＨｅｌｐＵＲＬ、およびＤｅｓｃｒｉｐｔｉｏｎなどのビヘイビアプロパティを設定する。ＢｅｈａｖｉｏｒＥｄｉｔｏｒパーツは、すべてのユーザに対してＷｅｂページを修正する場合、または複数のユーザ間で共有されていないパーツを編集する場合に使用することができる。これは、ＡｌｌｏｗＣｌｏｓｅなどの特定のプロパティがすべてのユーザに適用され、ユーザ別に設定すべきではないためである。ＢｅｈａｖｉｏｒＥｄｉｔｏｒパーツ基本クラスによってレンダリングされるＢｅｈａｖｉｏｒＥｄｉｔｏｒパーツの例は、図８Ｃに示されており、一般的に８０４で示される。
【００８０】
カスタマイズ可能なサードパーティエディタパーツなどの他のエディタパーツは、さまざまなＷｅｂパーツに関連付けることができる。これらのカスタムエディタパーツが備えるＷｅｂパーツは、エディタパーツプロパティを通じてカスタムエディタパーツを公開する。カスタムエディタパーツを提供することを望んでいるパーツ開発者は、特定のＷｅｂパーツのエディタパーツプロパティを指定変更することができる。このプロパティは、指定されたパーツが編集モードに入ったときにＥｄｉｔｏｒＺｏｎｅによってチェックされる。
【００８１】
カタログパーツ基本クラス 
カタログパーツ基本クラス７０４は、パーツ基本クラス７０２に依存する。カタログパーツは、ユーザが新しいＷｅｂパーツインスタンスをＷｅｂページに追加するためのユーザインターフェースを公開するパーツである。カタログパーツは、直接Ｗｅｂパーツマネージャとリンクされ、ユーザ毎にコントロールをページに追加しなければならないことを示している。カタログパーツのレンダリングはカタログゾーンによって行われる。カタログパーツ基本クラスに依存する２つのカタログパーツが図７にＰａｇｅＣａｔａｌｏｇパーツ７２０およびＴｅｍｐｌａｔｅＣａｔａｌｏｇパーツ７２２として示されている。第３のパーツカタログパーツも使用できる。
【００８２】
ＰａｇｅＣａｔａｌｏｇパーツ７２０は、すでに閉じられているＷｅｂパーツを表示する。Ｃｌｏｓｅｄは、可視性がｆａｌｓｅに設定されている任意のパーツとして定義される。カタログからパーツが追加されると、パーツはカタログの中では使用できなくなる。一般に、カタログは、空になり始め、永続性フォーマットですでに宣言され、すでに閉じられているパーツで徐々に埋められてゆく。カタログは、通常、Ｗｅｂパーツをカタログ内で静的に宣言することを許可していない。
【００８３】
ＴｅｍｐｌａｔｅＣａｔａｌｏｇパーツ７２２を使用して、カタログを宣言的に作成する。＜ＣａｔａｌｏｇＴｅｍｐｌａｔｅ＞に含まれるＷｅｂパーツはページに追加することができる。ＴｅｍｐｌａｔｅＣａｔａｌｏｇパーツによって宣言された同じカタログアイテムの複数のコピーをページに追加することができる。
【００８４】
カタログパーツのコントロールに依存するクラスは、機能をカタログパーツ基本クラス７０４に付加する。この機能の例は、図５Ａと５Ｂを調べるとよくわかり、一般的にはＣａｔａｌｏｇＷｅｂＰａｒｔｓ  ５００および５２０を示している。カタログパーツ基本クラス７０４は、Ｗｅｂパーツ５２２の選択を取り込むためのコントロールを含む。カタログパーツコントロールは、さらに、カタログパーツ５００および５２０にパーツを表示するのに適しているパーツアイコン５２６を選択するためにも使用できる。カタログパーツコントロールはさらに、パーツ説明を表示するためのコントロールを備える。さらに、ページ付け５４０、１ページ当たりの項目数を示すページ別アイテムインジケータ５３４、チェックボックススタイル、パーツイメージスタイル、パーツタイトルなどを表示するコントロールも含まれる。
【００８５】
カタログパーツ基本クラスには、２つのパブリックプロパティＡｖａｉｌａｂｌｅＰａｒｔおよびＷｅｂパーツマネージャが存在する。パーツ基本クラスのプロパティである、ＡｖａｉｌａｂｌｅＰａｒｔプロパティは、カタログパーツ８００で表示するためのカタログ内で使用可能なパーツを示す。ＡｖａｉｌａｂｌｅＰａｒｔｓプロパティは、使用可能なＷｅｂパーツの変更セットを備えるＷｅｂサービスなどでは動的でもよい。カタログパーツは選択されたアイテムをページに追加するためＷｅｂパーツマネージャに含まれるメソッドに依存するため、各カタログパーツはＷｅｂパーツマネージャへの参照を含む。これは、クラス上のプロテクトメンバであり、拡張性を補助するために含まれている。
【００８６】
ＳｅｌｅｃｔｅｄＰａｒｔ、ＳｈｏｗＰａｒｔＩｍａｇｅ、ＳｈｏｗＰａｒｔＤｅｓｃｒｉｐｔｉｏｎ、ＳｈｏｗＰａｒｔＴｉｔｌｅ、ＰａｒｔＴｉｔｌｅＳｔｙｌｅ、ＰａｒｔＤｅｓｃｒｉｐｔｉｏｎＳｔｙｌｅ、ＰａｒｔＩｍａｇｅＳｔｙｌｅ、ＣｈｅｃｋＢｏｘＳｔｙｌｅ、Ｐａｇｉｎａｔｅ、ＩｔｅｍｓＰｅｒＰａｇｅ、ＰａｇｅｒＳｔｙｌｅなどいくつかのプライベートプロパティも存在する。これらのプロパティは、カタログパーツのルック＆フィールを定義する作業を手助けすることによりカタログパーツのレンダリングを補助する。
【００８７】
特定の追加されるＷｅｂパーツがＷｅｂページに追加される場所を指定する「Ａｄｄ」メソッドが存在する。ＣａｔａｌｏｇＺｏｎｅは、「Ａｄｄ」動詞が呼び出されると、選択されたカタログパーツ上で「Ａｄｄ」メソッドを呼び出す。その後、カタログパーツは、Ｗｅｂパーツマネージャの「Ａｄｄ」メソッドを呼び出してＷｅｂパーツをページに追加する。そのとき以降、ＷｅｂパーツがＷｅｂパーツマネージャにより追跡される。
【００８８】
Ｏｂｊｅｃｔ基本クラスから派生する他のクラスに、ＷｅｂＰａｒｔＶｅｒｂクラスがある。ＷｅｂＰａｒｔＶｅｒｂは、特定のアクションを呼び出すゾーンによってレンダリングされるユーザインターフェース要素を定義する場合に使用される。クリックイベントは、クライアントまたはサーバ上で処理することができる。動詞は、メニュー内にレンダリングされるように設計されているが、イメージ、ボタン、またはリンクとしてレンダリングすることも可能である。ＷｅｂＰａｒｔＶｅｒｂクラス内に存在するプロパティは、Ｃｈｅｃｋｅｄ、Ｄｅｓｃｒｉｐｔｉｏｎ、Ｅｎａｂｌｅｄ、ＩｍａｇｅＵｒｌ、ＯｎＣｌｉｃｋを含む。
【００８９】
Ｃｈｅｃｋｅｄプロパティは、その呼び出に関わる動詞はチェッカユーザインターフェースを表示すべきかどうかを定義する。メニューユーザインターフェース環境では、動詞テキストの隣にチェックが表示される。Ｄｅｓｃｒｉｐｔｉｏｎプロパティには、動詞の説明である文字列が格納される。この文字列は、ツールチップで表示することも可能である。Ｅｎａｂｌｅｄプロパティは、特定の動詞を有効にするかどうかを決定する。動詞は、有効になっていなければ、メニューに灰色で表示され使用不可になっているか、または全く表示されない。ＩｍａｇｅＵｒｌプロパティは、動詞に関連付けられているイメージの位置を定義する。ＯｎＣｌｉｃｋプロパティは、サーバサイドのｃｌｉｃｋイベントを受け取るイベントハンドラである。ＯｎＣｌｉｅｎｔＣｌｉｃｋプロパティは、特定の動詞がクリックされたときに呼び出されるクライアントサイドの関数である。Ｔｅｘｔプロパティは、動詞のテキスト名である。このテキストは、メニューテキストとして表示される。Ｖｉｓｉｂｌｅプロパティは、特定の動詞が表示されるかどうかを定義する。
【００９０】
上述で定義されているプロパティのほかに、ＷｅｂＰａｒｔＶｅｒｂクラスはさらに、この例のＩｎｖｏｋｅメソッドも含む。Ｉｎｖｏｋｅメソッドは、クリックイベントの定義に関わる特定の動詞についてそのクリックイベントを発動する（ｆｉｒｅ）メソッドである。
【００９１】
また、Ｏｂｊｅｃｔ基本クラスからは、ＷｅｂＰａｒｔＥｖｅｎｔＡｒｇクラスが派生する。ＷｅｂＰａｒｔＥｖｅｎｔＡｒｇｓクラスは、ＷｅｂＰａｒｔＶｅｒｂとともに使用され、呼び出されたＷｅｂＰａｒｔＶｅｒｂに関連付けられているＷｅｂパーツを示す。このクラスは、呼び出されたＷｅｂＰａｒｔＶｅｒｂに関連付けられているＷｅｂパーツを定義する。
【００９２】
ゾーンコントロール 
ゾーン基本クラスを使用して、パーツコントロールを首尾一貫した形で配列するパーツを作成する。例えば、ゾーンは、その特定のゾーンに関連付けられている各パーツを囲むクロムおよびユーザインターフェースをレンダリングする役割を持つ。そこで、図９を参照すると、ゾーンコントロールの階層が示されている。ゾーン基本クラス９００には、それから派生する３つの基本クラスがある。これら３つの基本クラスは、ＷｅｂＰａｒｔＺｏｎｅＢａｓｅ基本クラス９０２、ＥｄｉｔｏｒＺｏｎｅ基本クラス９０４、およびＣａｔａｌｏｇＺｏｎｅ基本クラス９０６である。ゾーン基本クラス９００は、パーツ基本クラス７０２から継承または派生するすべてのコントロールのレイアウトの制御に使用される。ＷｅｂＰａｒｔＺｏｎｅ基本クラス９０２は、Ｗｅｂパーツコントロールで使用される。ＥｄｉｔｏｒＺｏｎｅ基本クラス９０６は、エディタパーツコントロールのレイアウトに使用される。ＣａｔａｌｏｇＺｏｎｅ基本クラス９０４は、カタログパーツコントロールのレイアウトに使用される。
【００９３】
図１０は、ゾーンによってレンダリングすることができるさまざまなユーザインターフェースを例示している。図９および１０を使用して、ゾーン基本クラスおよびゾーン基本クラスから派生するクラスのさまざまなプロパティについて説明することにする。ゾーン基本クラス９００に属しているプロパティのいくつかは、Ｗｅｂページ上に特定のゾーンをどのようにレンダリングするかを定義するために使用できる。これらのゾーン基本クラスのプロパティには、ＢａｃｋＩｍａｇｅＵＲＬ、ＦｒａｍｅＴｙｐｅ、Ｔｉｔｌｅ、ＴｉｔｌｅＳｔｙｌｅ、およびＴｉｔｌｅＨｏｒｉｚｏｎｔａｌＡｌｉｇｎがある。これらのプロパティのうちいくつかは、すでに説明した本明細書の方法で列挙型により設定することができる。
【００９４】
ゾーン基本クラス９００は、特定のゾーンの背景として使用すべきイメージのＵＲＬを定義するＢａｃｋＩｍａｇｅＵＲＬプロパティを備える。
【００９５】
ゾーン基本クラス９００のＦｒａｍｅＴｙｐｅプロパティは、編集、カタログ、およびデザインモードで特定のゾーンの回りにタイトルバーおよび枠線をゾーンでレンダリングする方法を指定する場合に使用される。例えば、図１０を参照すると、ＦｒａｍｅＴｙｐｅの値としてｎｏｎｅを指定した場合、ゾーンはゾーンフレーム１００２もタイトルバー１００４もレンダリングしない。ＦｒａｍｅＴｙｐｅ値としてＴｉｔｌｅＯｎｌｙを指定すると、タイトルバー１００４はレンダリングされるが、ゾーンフレーム１００２はレンダリングされない。ＦｒａｍｅＴｙｐｅ値としてＴｉｔｌｅＡｎｄＢｏｒｄｅｒを指定すると、タイトルバー１００４およびゾーンフレーム１００２がレンダリングされる。ＦｒａｍｅＴｙｐｅ値としてＢｏｒｄｅｒＯｎｌｙを指定すると、ゾーンフレーム１００２のみがレンダリングされる。ＦｒａｍｅＴｙｐｅプロパティは、さらに、上述で詳述したように、列挙型として表すこともできる。
【００９６】
ゾーンタイトルバー１００４は、ゾーン基本クラス９００の他のさまざまなプロパティを通じて制御することができる。例えば、ＴｉｔｌｅＳｔｙｌｅプロパティは、タイトルバー１００４のスタイルを指定する場合に使用することができる。そこで、ＴｉｔｌｅＳｔｙｌｅは前景色および背景色などを定義する。ゾーン基本クラス９００のＴｉｔｌｅプロパティは、ゾーンのタイトルを表す文字列値を格納する。ゾーン基本クラス９００のＴｉｔｌｅＨｏｒｉｚｏｎｔａｌＡｌｉｇｎプロパティは、ゾーンのタイトルに使用される位置揃えを定義する。
【００９７】
さらに、ゾーン基本クラス９００は、特定のゾーン内に含まれるＷｅｂパーツの特性を定義する複数のプロパティを含む。例えば、プロパティＰａｒｔＳｔｙｌｅ、ＰａｒｔＦｒａｍｅＴｙｐｅ、ＰａｒｔＴｉｔｌｅＨｏｒｉｚｏｎｔａｌＡｌｉｇｎ、ＰａｒｔＴｉｔｌｅＳｔｙｌｅ、ＰａｒｔＶｅｒｂＳｔｙｌｅ、およびＰａｒｔＣｏｎｔｅｎｔＳｔｙｌｅは、ゾーン内に常駐するＷｅｂパーツのコンポーネントをレンダリングするためにゾーンコンポーネントのレンダリングを制御するのに使用されるプロパティに似た方法で使用される。図１０を参照すると、パーツタイトル領域１００６、パーツ動詞領域１００８、パーツレンダリングコンテンツ１０１０、パーツフレーム１０１２、およびさまざまな他のコンポーネントは、上述のプロパティの値を設定することにより制御可能である。
【００９８】
ＷｅｂＰａｒｔＺｏｎｅＢａｓｅクラス 
ゾーン基本クラス９００からは、ＷｅｂＰａｒｔＺｏｎｅＢａｓｅクラス９０２が派生する。ＷｅｂＰａｒｔＺｏｎｅＢａｓｅクラス９０２は、Ｗｅｂパーツコントロールのホストとなるように設計されている。ＷｅｂＰａｒｔＺｏｎｅＢａｓｅ基本クラス９０２は、複数のプロパティを含む。
【００９９】
ＷｅｂＰａｒｔＺｏｎｅＢａｓｅ基本クラスの一組のプロパティにより、ゾーン内の特定のアイテムがパーソナライズ可能かどうかが定義される。ＷｅｂＰａｒｔＺｏｎｅＢａｓｅ基本クラスのＡｌｌｏｗＷｅｂＰａｒｔＰｅｒｓｏｎａｌｉｚａｔｉｏｎプロパティは、特定のゾーンに、このゾーン内のＷｅｂパーツの編集リンクを表示するかどうかを指定する。ｆａｌｓｅに設定した場合、後述のように、ドラッグ＆ドロップの使用はこのゾーン内のパーツには許可されない。ＷｅｂＰａｒｔＺｏｎｅＢａｓｅ基本クラスのＬｏｃｋＬａｙｏｕｔプロパティがＴｒｕｅに設定された場合、そのゾーンでは、Ｗｅｂパーツの移動または追加を許可しない。
【０１００】
ＷｅｂＰａｒｔＺｏｎｅＢａｓｅ基本クラスのプロパティのうちいくつかは、ゾーン内または異なるゾーン同士の間のレンダリングされたＷｅｂパーツのドラッグ機能を制御する。ＷｅｂＰａｒｔＺｏｎｅＢａｓｅ基本クラスのＤｒａｇＭｏｄｅプロパティは、Ｗｅｂページ上でパーツをあちこち移動する場合に使用するＤｒａｇＭｏｄｅを指定する。ＤｒａｇＭｏｄｅプロパティは、Ｉｍａｇｅ、ＷｅｂＰａｒｔＴｉｔｌｅ、およびＮｏｒｍａｌの３つの値を持つ。ＤｒａｇＭｏｄｅプロパティがＩｍａｇｅに設定されている場合、後述のＤｒａｇＩｍａｇｅＵＲＬプロパティにより指定されたＩｍａｇｅが使用される。ＤｒａｇＭｏｄｅプロパティの値がＷｅｂＰａｒｔＴｉｔｌｅに設定されている場合、Ｗｅｂパーツのタイトルバーはカーソルでドラッグされる。ＤｒａｇＭｏｄｅプロパティがＮｏｒｍａｌに設定されている場合、Ｗｅｂパーツ全体がカーソルでドラッグされる。ＷｅｂＰａｒｔＺｏｎｅＢａｓｅ基本クラスのＤｒａｇＩｍａｇｅＵｒｌプロパティでは、上述のように、ＤｒａｇＭｏｄｅがＩｍａｇｅに設定されている場合に使用するイメージを指定する。ＷｅｂＰａｒｔＺｏｎｅＢａｓｅ基本クラスのＤｒａｇＨｉｇｈｌｉｇｈｔＣｏｌｏｒプロパティでは、ゾーンがターゲットの場合に使用するＨｉｇｈｌｉｇｈｔ色を指定する。つまり、このプロパティにより、クライアント上でレンダリングされる配置ユーザインターフェースの色を指定する。配置ユーザインターフェースは、ターゲットゾーンを囲む枠線だけでなく、他のＷｅｂパーツ間の挿入点を示すのに使用されるバーをも含む。
【０１０１】
ＷｅｂＰａｒｔＺｏｎｅＢａｓｅ基本クラス９０２は、さらに、さまざまなＷｅｂパーツを特定のゾーン内に表示する方法を定義するための各種のプロパティを備える。ＷｅｂＰａｒｔＺｏｎｅＢａｓｅ基本クラスのＥｄｉｔＷｅｂＰａｒｔＳｔｙｌｅプロパティは、現在編集中のＷｅｂパーツに使用するスタイルを指定する。このスタイルは、編集モードでしかＷｅｂパーツに適用されない。ＷｅｂＰａｒｔＺｏｎｅＢａｓｅ基本クラス９０２は、ゾーン基本クラスのＰａｒｔＳｔｙｌｅプロパティで設定されているスタイルを指定変更する。
【０１０２】
ＷｅｂＰａｒｔＺｏｎｅＢａｓｅ基本クラスのＯｒｉｅｎｔａｔｉｏｎプロパティは、ゾーンにＷｅｂパーツを水平にレイアウトするかまたは垂直にレイアウトするかを指定する。図１１Ａおよび図１１Ｂは、水平にレイアウトされたゾーン１１０２および垂直にレイアウトされたゾーン１１０４を例示している。ＷｅｂＰａｒｔＺｏｎｅＢａｓｅ基本クラスのＰａｒｔＴｉｔｌｅＦｏｒｍａｔＳｔｒｉｎｇプロパティでは、クロムに表示されるタイトルを形成するためのＷｅｂパーツのＴｉｔｌｅおよびＣａｐｔｉｏｎプロパティの組み合わせ方を指定する。ＷｅｂＰａｒｔＺｏｎｅＢａｓｅ基本クラスのＳｈｏｗＩｃｏｎＩｎＰａｒｔＴｉｔｌｅプロパティでは、特定のＷｅｂパーツのグラフィック表現であるパーツアイコンをタイトルバーに表示するかどうかを指定する。
【０１０３】
ＷｅｂＰａｒｔＺｏｎｅＢａｓｅｅ基本クラスのプロパティの中には、Ｗｅｂパーツ内の動詞の外観に関するいくつかの特性を指定するものがある。ＷｅｂＰａｒｔＺｏｎｅＢａｓｅ基本クラスのＶｅｒｂプロパティでは、ゾーン内のすべてのパーツに適用される一組の動詞を定義する。これらは、ＷｅｂパーツＶｅｒｂとＷｅｂＰａｒｔＣｌｏｓｅＶｅｒｂのような組み込みのゾーンの動詞との間に適用される。定義できるＶｅｒｂｓの例としては、Ｗｅｂパーツを閉じるＷｅｂＰａｒｔＣｌｏｓｅＶｅｒｂ、Ｗｅｂパーツを最小化するＷｅｂＰａｒｔＭｉｎｉｍｉｚｅＶｅｒｂ（Ｗｅｂパーツのタイトルのみが表示される）、最小化されているＷｅｂパーツを元のサイズに戻すＷｅｂＰａｒｔＲｅｓｔｏｒｅＶｅｒｂ、およびユーザにヘルプＵＲＬを送るＷｅｂＰａｒｔＨｅｌｐＶｅｒｂがある。閉じる動詞１２０２、最小化動詞１２０４、元のサイズに戻す動詞１２０６、およびヘルプ動詞１２０８を示す動詞レンダリングのさまざまな例が図１２に示されている。ＷｅｂＰａｒｔＺｏｎｅＢａｓｅ基本クラスのＶｅｒｂＢｕｔｔｏｎＴｙｐｅプロパティは、動詞の表示方法を指定する。ＷｅｂＰａｒｔＶｅｒｂプロパティで、ボタンのタイプがイメージであることを指定しているが、イメージＵＲＬを定義していない場合、ＷｅｂＰａｒｔＶｅｒｂは、リンクボタンとしてレンダリングされる。ＷｅｂＰａｒｔＺｏｎｅＢａｓｅ基本クラスのＶｅｒｂＳｔｙｌｅプロパティでは、動詞に適用されるスタイルを定義する。
【０１０４】
ＷｅｂＰａｒｔＺｏｎｅＢａｓｅ基本クラスのＷｅｂＰａｒｔＰａｄｄｉｎｇプロパティは、ゾーン内のＷｅｂパーツ間で適用されるパディングを定義する。ＷｅｂＰａｒｔＺｏｎｅＢａｓｅ基本クラスのＷｅｂＰａｒｔｓプロパティには、ゾーン内のＷｅｂパーツのコレクションの一覧が表示される。
【０１０５】
ＷｅｂＰａｒｔＺｏｎｅＢａｓｅ基本クラスから派生するクラスは、図９に示され、一般的に符号９０８で表されるＷｅｂＰａｒｔＺｏｎｅクラスである。ＷｅｂＰａｒｔＺｏｎｅクラスではゾーンのＴｅｍｐｌａｔｅプロパティを追加するので、Ｗｅｂパーツを永続化フォーマットで追加することができる。
【０１０６】
エディタゾーン基本クラス 
ＥｄｉｔｏｒＺｏｎｅ基本クラスは、エディタパーツおよびそのエディタパーツに関連付けられているユーザインターフェースをレンダリングするように設計されている。エディタパーツ４０４の例が図４に示されている。本発明の一実施形態では、ＥｄｉｔｏｒＺｏｎｅはそれぞれのエディタパーツの回りに最低限のユーザインターフェースをレンダリングする。ＥｄｉｔｏｒＺｏｎｅ基本クラス９０６は、ＡｐｐｌｙＶｅｒｂ、ＣａｎｃｅｌＶｅｒｂ、ＣｌｏｓｅｌｍａｇｅＵｒｌ、エディタパーツ、ＺｏｎｅＴｅｍｐｌａｔｅ、ＦｏｏｔｅｒＳｔｙｌｅ、ＯｋＶｅｒｂ、ＳｈｏｗＣｌｏｓｅｌｍａｇｅ、ＶｅｒｂＢｕｔｔｏｎＴｙｐｅ、ＶｅｒｂＳｔｙｌｅ、およびＷｅｂＰａｒｔＴｏＥｄｉｔなどいくつかのプロパティを含む。ＥｄｉｔｏｒＺｏｎｅ基本クラスはさらに、ＡｐｐｌｙＨａｎｄｌｅｒ、ＣａｎｃｅｌＨａｎｄｌｅｒ、ＯｋＨａｎｄｌｅｒなどのメソッドの選択も行う。
【０１０７】
ＥｄｉｔｏｒＺｏｎｅ基本クラスのＡｐｐｌｙＶｅｒｂプロパティは、例えば図４に示されている「Ａｐｐｌｙ」動詞ボタン４１６など、「Ａｐｐｌｙ」オペレーションを実行する動詞を定義する。ＡｐｐｌｙＶｅｒｂプロパティによって定義されている動詞を呼び出すと、各エディタパーツのＡｐｐｌｙＣｈａｎｇｅプロパティが呼び出され、その後、エディタパーツ毎にＳｙｎｃＣｈａｎｇｅが呼び出される。
【０１０８】
ＥｄｉｔｏｒＺｏｎｅ基本クラスのＣａｎｃｅｌＶｅｒｂプロパティは、「Ｃａｎｃｅｌ」オペレーションを実行する、例えば図４に示されている「ｃａｎｃｅｌ」動詞ボタン４２２などの動詞を定義する。ＣａｎｃｅｌＶｅｒｂを呼び出すと、後述のように、Ｗｅｂパーツマネージャを通じてＷｅｂページが通常表示に戻る。ＣａｎｃｅｌＶｅｒｂＤｏｅｓは、エディタパーツの「ＡｐｐｌｙＣｈａｎｇｅ」メソッドを呼び出さない。
【０１０９】
ＥｄｉｔｏｒＺｏｎｅ基本クラスのＯｋＶｅｒｂプロパティは、「ＯＫ」オペレーションを実行する、図４に示されている「ＯＫ」動詞ボタン４２０などの動詞を指定する。この動詞を呼び出すと、エディタパーツ毎にＡｐｐｌｙＣｈａｎｇｅプロパティが呼び出され、その後、そのページは通常モードに戻る。ＥｄｉｔｏｒＺｏｎｅ基本クラスのＳｈｏｗＣｌｏｓｅＩｍａｇｅプロパティは、「Ｃｌｏｓｅ  Ｉｍａｇｅ」をゾーンの右上に表示するかどうかを決定する。ＥｄｉｔｏｒＺｏｎｅ基本クラスのＣｌｏｓｅＩｍａｇｅＵｒｌプロパティは、ゾーンの右上に表示されるアイコンのＩｍａｇｅＵｒｌを指定する。
【０１１０】
ＥｄｉｔｏｒＺｏｎｅ基本クラスのＶｅｒｂＢｕｔｔｏｎＴｙｐｅプロパティは、各動詞を表示するために使用されるＢｕｔｔｏｎＴｙｐｅを決定する。ＷｅｂＰａｒｔＶｅｒｂがイメージｕｒｌを指定しないが、ボタンタイプはイメージに設定されている場合、動詞テキストは図４に示されている「ＯＫ」、「Ａｐｐｌｙ」、および「Ｃｌｏｓｅ」動詞ボタンについて示されているものに類似しているリンクボタンとしてレンダリングされる。ＥｄｉｔｏｒＺｏｎｅ基本クラスのＶｅｒｂＳｔｙｌｅプロパティでは、ゾーンの動詞のそれぞれに適用されるスタイルを定義する。
【０１１１】
ＥｄｉｔｏｒＺｏｎｅ基本クラスのＷｅｂＰａｒｔＴｏＥｄｉｔプロパティでは、編集されているＷｅｂパーツを指定する。このプロパティは、基本クラス内のＷｅｂパーツマネージャに委譲される。ＥｄｉｔｏｒＺｏｎｅ基本クラスのエディタパーツプロパティは、このゾーン内のエディタパーツの読み取り専用コレクションを指定する。ＥｄｉｔｏｒＺｏｎｅ基本クラスのＺｏｎｅＴｅｍｐｌａｔｅプロパティは、特定のＥｄｉｔｏｒＺｏｎｅ内のエディタパーツの一覧を表示する。ＥｄｉｔｏｒＺｏｎｅ基本クラスのＦｏｏｔｅｒＳｔｙｌｅプロパティは、特定のゾーンのフッタ４２４に適用されるスタイルを指定する。
【０１１２】
一実施例では、ＥｄｉｔｏｒＺｏｎｅクラスは、Ｗｅｂパーツが編集モードに入ったという通知を受け取る。これにより、ＥｄｉｔｏｒＺｏｎｅはエディタパーツの新しい集まりを構築する。ＥｄｉｔｏｒＺｏｎｅは、カスタムエディタパーツを取得するため現在編集されているＷｅｂパーツのＢｕｉｌｄＥｄｉｔｏｒパーツメソッドを呼び出す。次に、ＥｄｉｔｏｒＺｏｎｅは、ＺｏｎｅＴｅｍｐｌａｔｅ内のエディタパーツをインスタンス化する。編集中のＷｅｂパーツへの変更は、ユーザが行うことができる。行われた変更にユーザが納得した場合、ユーザは、上述のようにＡｐｐｌｙＶｅｒｂプロパティまたはＯＫＶｅｒｂプロパティをインスタンス化する「ＯＫ」または「Ａｐｐｌｙ」動詞ボタンを選択することができる。
【０１１３】
カタログゾーン基本クラス 
ＣａｔａｌｏｇＺｏｎｅは、カタログパーツを表示する場合に使用される。一度に表示できるカタログは通常１つだけである。ＣａｔａｌｏｇＺｏｎｅ基本クラス９０４は、ＡｄｄＶｅｒｂ、ＡｖａｉｌａｂｌｅＣａｔａｌｏｇＴｅｘｔ、ＣａｎｃｅｌＶｅｒｂ、カタログパーツＺｏｎｅＴｅｍｐｌａｔｅ、ＣｌｏｓｅＩｍａｇｅＵｒｌ、ＦｏｏｔｅｒＳｔｙｌｅ  ＴａｒｇｅｔＺｏｎｅ、ＴａｒｇｅｔＺｏｎｅＩｎｄｅｘ、ＳｅｌｅｃｔｅｄＣａｔａｌｏｇパーツ、ＳｈｏｗＣｌｏｓｅＩｍａｇｅ、ＳｈｏｗＴａｒｇｅｔＺｏｎｅＵｓｅｒインターフェース、ＶｅｒｂＢｕｔｔｏｎＴｙｐｅ、およびＶｅｒｂＳｔｙｌｅなどいくつかのプロパティを含む。Ｃａｔａｌｏｇゾーンはさらに、メソッド「ＡｄｄＨａｎｄｌｅｒ」および「ＣｌｏｓｅｌＨａｎｄｌｅｒ」を含む。
【０１１４】
ＣａｔａｌｏｇＺｏｎｅ基本クラス９０４のプロパティのうちいくつかは、ＣａｔａｌｏｇＺｏｎｅのレイアウトおよびコンテンツの表示を定義する。ＣａｔａｌｏｇＺｏｎｅ基本クラスのＡｖａｉｌａｂｌｅＣａｔａｌｏｇＴｅｘｔプロパティには、使用可能なカタログのリストの前に配置されるテキストが格納される。ＣａｔａｌｏｇＺｏｎｅ基本クラスのＺｏｎｅＴｅｍｐｌａｔｅプロパティは、特定のＣａｔａｌｏｇＺｏｎｅに収められているカタログパーツを含むテンプレートである。ＣａｔａｌｏｇＺｏｎｅ基本クラスのＳｅｌｅｃｔｅｄ  ｃａｔａｌｏｇ  ｐａｒｔプロパティは、現在選択されているカタログを指定する。このプロパティは、カタログパーツがこのゾーン内にない場合などにはＮＵＬＬ値とすることができる。ＣａｔａｌｏｇＺｏｎｅ基本クラスのＳｈｏｗＴａｒｇｅｔＺｏｎｅｕｓｅｒインターフェースプロパティは、ＴａｒｇｅｔＺｏｎｅユーザインターフェースをゾーンの一番下に表示するかどうかを指定する。ＣａｔａｌｏｇＺｏｎｅ基本クラスのＦｏｏｔｅｒＳｔｙｌｅプロパティは、特定のゾーンのフッタに適用されるスタイルを定義する。
【０１１５】
ＣａｔａｌｏｇＺｏｎｅ基本クラス９０４のプロパティのうちいくつかは、ＶｅｒｂおよびＶｅｒｂボタンをＣａｔａｌｏｇＺｏｎｅ内にレンダリングする方法を定義する。ＣａｔａｌｏｇＺｏｎｅ基本クラスはＡｄｄＶｅｒｂプロパティは、一般に、ＣａｔａｌｏｇＺｏｎｅのフッタ内に配置される。呼び出されると、現在選択されているカタログパーツの「Ａｄｄ」メソッドが呼び出される。ＣａｔａｌｏｇＺｏｎｅ基本クラスのＣａｎｃｅｌＶｅｒｂプロパティは、「Ｃａｎｃｅｌ」オペレーションを実行する動詞を定義する。これにより、ページが通常表示に戻る。ＣａｎｃｅｌＶｅｒｂは、どのカタログパーツについても「Ａｄｄ」メソッドを呼び出さない。ＣａｔａｌｏｇＺｏｎｅ基本クラスのＣｌｏｓｅＩｍａｇｅＵｒｌプロパティでは、ゾーンの右上に表示されるアイコンのＩｍａｇｅＵｒｌを規定する。ＣａｔａｌｏｇＺｏｎｅ基本クラスのＴａｒｇｅｔＺｏｎｅプロパティは、このＣａｔａｌｏｇＺｏｎｅに対する現在選択されているＴａｒｇｅｔＺｏｎｅを指定する。選択されたＷｅｂパーツでＡｄｄが呼ばれると、これはパラメータとして渡される。ＣａｔａｌｏｇＺｏｎｅ基本クラスのＳｈｏｗＣｌｏｓｅＩｍａｇｅプロパティは、「Ｃｌｏｓｅ  Ｉｍａｇｅ」がＣａｔａｌｏｇＺｏｎｅの右上に表示するかどうかを指定する。ＣａｔａｌｏｇＺｏｎｅ基本クラスのＶｅｒｂＢｕｔｔｏｎＴｙｐｅプロパティは、各動詞を表示するために使用されるＢｕｔｔｏｎＴｙｐｅを指定する。ＷｅｂパーツＶｅｒｂにイメージｕｒｌがないが、ボタンタイプはイメージに設定されている場合、テキストはリンクボタンとしてレンダリングされる。ＣａｔａｌｏｇＺｏｎｅ基本クラスのＶｅｒｂＳｔｙｌｅプロパティでは、ゾーンの動詞のそれぞれに適用されるスタイルを定義する。
【０１１６】
さらにＣａｔａｌｏｇＺｏｎｅ基本クラスの他のプロパティも、特定のＣａｔａｌｏｇＺｏｎｅのカタログパーツを管理するのに役立つ。ＣａｔａｌｏｇＺｏｎｅ基本クラスのカタログパーツプロパティには、特定のＣａｔａｌｏｇＺｏｎｅ内のカタログパーツのコレクションの一覧が表示される。ＣａｔａｌｏｇＺｏｎｅ基本クラスのＴａｒｇｅｔＺｏｎｅＩｎｄｅｘプロパティでは、パーツがＴａｒｇｅｔＺｏｎｅ内で追加されるインデックスを定義する。
【０１１７】
Ｗｅｂパーツマネージャ 
基本クラスの第３の一般的なグループは、Ｗｅｂパーツマネージャの基本クラスである。Ｗｅｂパーツマネージャ基本クラスは、Ｗｅｂページ上のＷｅｂパーツの追跡、Ｗｅｂページ上のゾーンの追跡、および各ゾーン内にあるＷｅｂパーツの追跡を行う。Ｗｅｂパーツマネージャは、さらに、Ｗｅｂページの編集状態を追跡することによりＷｅｂページのパーソナライゼーションを処理する。図６に示され説明されているような接続を円滑に行えるようにするため、ＷｅｂパーツマネージャはＷｅｂパーツ間の接続を追跡し、Ｗｅｂパーツ間の接続通信を開始する。Ｗｅｂパーツマネージャは、Ｗｅｂパーツの定義およびパーソナライゼーションに関してデータベースに接続し、依存することができる。Ｗｅｂパーツマネージャは、編集モードの間にＷｅｂパーツをドラッグするなどのクライアントオペレーションを処理するためにスクリプトをレンダリングする役割も持つ。Ｗｅｂパーツマネージャは、一例の永続化フォーマットを通じて他のコントロールのようにＷｅｂページに追加することができる。Ｗｅｂページ上に通常表示されるＷｅｂパーツマネージャのインスタンスは１つだけである。
【０１１８】
Ｗｅｂページは、その存続期間全体を通してさまざまな段階を通る。このような段階としては、初期化、ロード、事前レンダリング、状態保存、レンダリング、配置、およびアンロードがある。Ｗｅｂページマネージャは、これらの段階の一部でＷｅｂページ上の他のパーツと対話することができる。初期化段階では、Ｗｅｂページマネージャはインスタンス化され、ゾーンはインスタンス化され、ゾーンがＷｅｂパーツマネージャに登録され、制御ツリーはテンプレートからＷｅｂパーツにより構築される。ロード段階では、接続に関する信号がＷｅｂパーツに接続され、Ｗｅｂパーツマネージャは各ＷｅｂパーツのＣｏｎｎｅｃｔｉｏｎプロパティを設定する。事前レンダリング段階は、Ｗｅｂパーツマネージャのクライアントスクリプトブロックが登録される。レンダリング段階では、Ｗｅｂパーツマネージャは、ゾーンおよびＷｅｂパーツがコンテンツをレンダリングする方法を追跡し制御する。
【０１１９】
Ｗｅｂパーツマネージャは、ＤｉｓｐｌａｙＭｏｄｅ、ＷｅｂＰａｒｔＴｏＥｄｉｔ、ＣｌｏｓｅｄＷｅｂＰａｒｔ、およびＷｅｂパーツゾーンをはじめとする、上述の機能を実行するいくつかのプロパティを含む。Ｗｅｂパーツマネージャはさらに、「ＡｄｄＷｅｂＰａｒｔ」、「ＢｅｇｉｎＷｅｂＰａｒｔＥｄｉｔｉｎｇ」、「ＣｒｅａｔｅＣｏｎｎｅｃｔｉｏｎ」、「ＤｅｌｅｔｅＷｅｂＰａｒｔ」、「ＥｎｄＷｅｂＰａｒｔＥｄｉｔｉｎｇ」、「ＸｍｌＤｏｃｕｍｅｎｔ  Ｅｘｐｏｒｔ」、「Ｉｍｐｏｒｔ」、「ＭｏｖｅＷｅｂＰａｒｔ」、「ＲｅｇｉｓｔｅｒＣｏｎｎｅｃｔｉｏｎＥｎｄＰｏｉｎｔ」、「ＲｅｇｉｓｔｅｒＺｏｎｅ」、および「ＳｅｔＤｉｓｐｌａｙＭｏｄｅ」などのいくつかのメソッドも備える。
【０１２０】
Ｗｅｂパーツマネージャの基本クラスのＤｉｓｐｌａｙＭｏｄｅプロパティは、そのページの現在のＤｉｓｐｌａｙＭｏｄｅを定義する。オプションとしては、Ｎｏｒｍａｌ、Ｅｄｉｔ、Ｄｅｓｉｇｎ、Ｃａｔａｌｏｇなどがある。Ｎｏｒｍａｌ表示モードの例については図１から３に示されており、説明されている。Ｗｅｂページが表示モードの場合、Ｗｅｂパーツは通常モードで表示され、ＥｄｉｔｏｒＺｏｎｅ、ＣａｔａｌｏｇＺｏｎｅ、およびゾーン枠線は表示されない。Ｅｄｉｔ表示モードの例については図４に示されており、説明されている。Ｗｅｂページが編集表示モードの場合、Ｗｅｂパーツは編集モードでレンダリングされ、ＥｄｉｔｏｒＺｏｎｅおよびゾーン枠線は表示されるが、ＣａｔａｌｏｇＺｏｎｅは表示されない。Ｃａｔａｌｏｇ表示モードの例については図５Ａに示されており、説明されている。Ｗｅｂページがカタログ表示モードの場合、Ｗｅｂパーツは通常モードでレンダリングされ、ＣａｔａｌｏｇＺｏｎｅおよびゾーン枠線は表示されるが、ＥｄｉｔｏｒＺｏｎｅは表示されない。Ｗｅｂページがデザイン表示モードの場合、Ｗｅｂパーツは通常モードでレンダリングされ、ゾーン枠線は表示されるが、ＥｄｉｔｏｒＺｏｎｅおよびＣａｔａｌｏｇＺｏｎｅは表示されない。個々のＷｅｂパーツを編集モードにすることができる。そのため、Ｗｅｂパーツはユーザインターフェースをインラインで表示したり、あるいはＥｄｉｔｏｒＺｏｎｅ内の関連するエディタパーツを表示することができる。Ｗｅｂパーツに現在のモードを通知するのに使用されるイベントは、ＣｌｏｓｅｄＷｅｂＰａｒｔｓＣｈａｎｇｅｄ、ＤｉｓｐｌａｙＭｏｄｅＣｈａｎｇｅｄ、ＤｉｓｐｌａｙＭｏｄｅＣｈａｎｇｉｎｇ、ＷｅｂＰａｒｔＡｄｄｅｄ、ＷｅｂＰａｒｔＥｄｉｔＭｏｄｅＣｈａｎｇｅｄ、ＷｅｂＰａｒｔＥｄｉｔＭｏｄｅＣｈａｎｇｉｎｇ、およびＷｅｂＰａｒｔＤｅｌｅｔｅｄである。
【０１２１】
Ｗｅｂパーツマネージャの基本クラスのＷｅｂＰａｒｔＴｏＥｄｉｔプロパティは、Ｗｅｂページが編集モードに入っているときに、現在編集されているＷｅｂパーツを識別するために使用される。このプロパティは、エディタゾーンおよびエディタパーツによって使用される。Ｗｅｂパーツマネージャの基本クラスのＣｌｏｓｅｄＷｅｂＰａｒｔプロパティは、表示プロパティがｆａｌｓｅに設定されているＷｅｂパーツの集まりを識別する。Ｗｅｂパーツマネージャの基本クラスのＷｅｂＰａｒｔｓプロパティは、そのページ上では静的であるパーツと動的に追加されたパーツとの両方を含む、Ｗｅｂパーツマネージャが受け持つＷｅｂパーツをすべて識別する。
【０１２２】
Ｗｅｂパーツマネージャの基本クラスのＺｏｎｅプロパティは、Ｗｅｂパーツマネージャが現在管理しているＷｅｂパーツの集まりを識別する。各Ｗｅｂパーツゾーンは、ＯｎＩｎｉｔでＷｅｂパーツマネージャに登録され、そのゾーンはこの集まりに追加される。Ｗｅｂページのライフサイクルを後のほうで、各ゾーンは、ＷｅｂパーツマネージャＧｅｔＷｅｂＰａｒｔｓＦｏｒＺｏｎｅを呼び出して、そのゾーンが現在含んでいるＷｅｂパーツを発見する。ＷｅｂＰａｒｔＺｏｎｅはＷｅｂパーツマネージャでＲｅｇｉｓｔｅｒＺｏｎｅを呼び出し、任意選択で、Ｗｅｂパーツの初期の集まりを渡す。その後、ＷｅｂＰａｒｔＺｏｎｅは、ＧｅｔＷｅｂＰａｒｔｓＦｏｒＺｏｎｅを呼び出すことにより、特定のゾーンに割り当てられているＷｅｂパーツを発見する。後述の「ＧｅｔＷｅｂＰａｒｔｓＦｏｒＺｏｎｅ」メソッドを使用すると、ゾーンでは、どのようなＷｅｂパーツをレンダリングすることを受け持っているのかを判別することができる。このメソッドは、ＷｅｂパーツマネージャのＷｅｂパーツコレクションを評価し、どのＷｅｂパーツが適切なゾーンに属しているかを調べる。Ｗｅｂパーツマネージャは、ＷｅｂＰａｒｔ．Ｚｏｎｅ、ＷｅｂＰａｒｔ．Ｖｉｓｉｂｌｅ、およびＷｅｂＰａｒｔ．Ｒｏｌｅｓにしたがって、Ｗｅｂパーツをフィルタ処理する。その後、ゾーンは特定のＷｅｂパーツが非表示になっているかどうかを確認する必要がある。
【０１２３】
Ｗｅｂパーツマネージャの基本クラスにはさまざまなメソッドが用意されている。Ｗｅｂパーツマネージャの基本クラスの「ＢｅｇｉｎＷｅｂＰａｒｔＥｄｉｔｉｎｇ」メソッドは、Ｗｅｂパーツの編集を開始する場合に呼び出される。このメソッドが呼び出されると、ＷｅｂＰａｒｔＥｄｉｔＭｏｄｅＣｈａｎｇｉｎｇおよびＷｅｂＰａｒｔＥｄｉｔＭｏｄｅＣｈａｎｇｅｄイベントが発動する。Ｗｅｂパーツがすでに編集モードに入っている場合は、ＥｎｄＷｅｂＰａｒｔＥｄｉｔｉｎｇが呼び出される。成功すると、ＷｅｂＰａｒｔＴｏＥｄｉｔプロパティは、Ｗｅｂパーツのパラメータ値に設定される。
【０１２４】
Ｗｅｂパーツマネージャの基本クラスの「ＥｎｄＷｅｂＰａｒｔＥｄｉｔｉｎｇ」メソッドは、「ＢｅｇｉｎＥｄｉｔｉｎｇＷｅｂＰａｒｔ」メソッドを終了する場合に呼び出される。このメソッドが呼び出されると、ＷｅｂＰａｒｔＥｄｉｔＭｏｄｅＣｈａｎｇｉｎｇおよびＷｅｂＰａｒｔＥｄｉｔＭｏｄｅＣｈａｎｇｅｄイベントが発動する。成功すると，ＷｅｂＰａｒｔＴｏＥｄｉｔプロパティはクリアされる。
【０１２５】
Ｗｅｂパーツマネージャの基本クラスの「ＭｏｖｅＷｅｂＰａｒｔ」メソッドは、ゾーン間でＷｅｂパーツを移動する場合に呼び出される。このメソッドを呼び出すには、移動するＷｅｂパーツを指定するＷｅｂＰａｒｔパラメータ、ターゲットゾーンを指定するＺｏｎｅパラメータ、およびＷｅｂパーツがターゲットゾーン内で追加される位置のインデックスを指定するＺｏｎｅＩｎｄｅｘパラメータの３つのパラメータを使用する。
【０１２６】
Ｗｅｂパーツマネージャの基本クラスの「Ｇｅｔ  ＷｅｂＰａｒｔｓＦｏｒＺｏｎｅ」メソッドは、含まれているＷｅｂパーツをレンダリングする必要がある場合にそれぞれのゾーンにより呼び出される。「ＧｅｔＷｅｂＰａｒｔｓＦｏｒＺｏｎｅ」メソッドを使用すると、ゾーンでは、どのようなＷｅｂパーツをレンダリングすることを受け持っているのかを判別することができる。このメソッドは、ＷｅｂパーツマネージャのＷｅｂパーツコレクションを評価し、どのＷｅｂパーツが適切なゾーンに属しているかを調べる。Ｗｅｂパーツマネージャは、ＷｅｂＰａｒｔ．Ｚｏｎｅ、ＷｅｂＰａｒｔ．Ｖｉｓｉｂｌｅ、およびＷｅｂＰａｒｔ．Ｒｏｌｅｓにしたがって、Ｗｅｂパーツをフィルタ処理する。その後、ゾーンは特定のパーツが非表示になっているかどうかを確認する必要がある。このメソッドは、Ｗｅｂパーツのコレクションを返す。
【０１２７】
返すＷｅｂパーツのコレクションを決定するメソッドを例示する詳細な流れ図が図１３に示され、説明されている。このメソッドは、ゾーンがＧｅｔＷｅｂＰａｒｔｓＦｏｒＺｏｎｅメソッドを呼び出すと開始する（ステップ１３０２）。Ｗｅｂパーツマネージャは、それぞれのパーツを調べる（ステップ１３０４）。Ｗｅｂパーツマネージャは、Ｗｅｂパーツで指定されてゾーンがターゲットゾーンであるかチェックして調べる（ステップ１３０６）。そのゾーンがターゲットゾーンでなければ、プロセスは他のＷｅｂパーツのチェックに戻る。そのゾーンがターゲットゾーンであれば、Ｗｅｂパーツマネージャは、ＷｅｂパーツのＶｉｓｉｂｌｅプロパティがｔｒｕｅに設定されているかどうかチェックして調べる（ステップ１３０８）。Ｖｉｓｉｂｌｅプロパティがｔｒｕｅに設定されていない場合、プロセスは他のＷｅｂパーツのチェックに戻る。ＷｅｂパーツのＶｉｓｉｂｌｅプロパティがｔｒｕｅに設定されている場合、Ｗｅｂパーツマネージャは、Ｗｅｂパーツが現在のロールに関して利用可能かどうかをチェックして調べる（パーソナライゼーション、カスタマイズ、および開発のシナリオなどで）（ステップ１３１０）。ＷｅｂパーツがＷｅｂパーツのＲｏｌｅプロパティで定義されているように現在のＲｏｌｅに対し使用可能でない場合、プロセスは他のＷｅｂパーツのチェックに戻る。Ｗｅｂパーツが現在のＲｏｌｅについて利用可能な場合、Ｗｅｂパーツは特定のゾーンのＷｅｂＰａｒｔＣｏｌｌｅｃｔｉｏｎプロパティに追加される（ステップ１３１２）。その後、ＷｅｂＰａｒｔＣｏｌｌｅｃｔｉｏｎは、Ｗｅｂパーツマネージャに返され（ステップ１３１４）、プロセスはループに入りＷｅｂパーツのそれぞれをチェックし続ける。
【０１２８】
Ｗｅｂパーツマネージャの基本クラスの「ＡｄｄＷｅｂＰａｒｔ」メソッドは、ＷｅｂパーツをＷｅｂページに追加する場合に呼び出される。このメソッドを使って追加されるＷｅｂパーツは、動的であるとみなされ、後で削除することができる。ＡｄｄＷｅｂＰａｒｔメソッドは、Ｗｅｂパーツのインスタンス、またはＸＭＬ  ＤＷＰファイルのいずれかをとる。いずれの場合も、Ｗｅｂパーツマネージャは、通常、動的なコントロールを作成する。メソッドのこの例では、Ｗｅｂページに追加するＷｅｂパーツを識別するＷｅｂＰａｒｔパラメータ、Ｗｅｂパーツの追加先のゾーンを指定するＺｏｎｅパラメータ、およびＷｅｂパーツを追加する場合にゾーン内のインデックスを指定するＺｏｎｅＩｎｄｅｘパラメータなど３つのパラメータを指定する。
【０１２９】
Ｗｅｂパーツマネージャの基本クラスのＲｅｇｉｓｔｅｒＣｏｎｎｅｃｔｉｏｎＥｎｄＰｏｉｎｔメソッドは、ＣｏｎｎｅｃｔｉｏｎＥｎｄＰｏｉｎｔの登録を望んでいるＷｅｂパーツにより呼び出され、上記のような接続によりＷｅｂパーツ同士を相互接続する。このメソッドで渡されるパラメータはＣｏｎｎｅｃｔｉｏｎＥｎｄＰｏｉｎｔであり、登録するＣｏｎｎｅｃｔｉｏｎＥｎｄＰｏｉｎｔを指定する。
【０１３０】
Ｗｅｂパーツマネージャの基本クラスのＲｅｍｏｖｅＷｅｂＰａｒｔメソッドは、Ｗｅｂパーツをページから削除する場合に呼び出される。このメソッドは、パーツのパーソナライゼーション設定を削除する。ページ上で宣言されている（したがって削除できない）パーツについては、このメソッドはＶｉｓｉｂｌｅプロパティをｆａｌｓｅに設定する。ページに動的に追加されたパーツについては、動的なＷｅｂパーツへの参照が削除される。このメソッドで渡されるパラメータは、Ｗｅｂパーツパラメータであり、削除するＷｅｂパーツを指定する。
【０１３１】
Ｗｅｂパーツマネージャの基本クラスのＳｅｔＤｉｓｐｌａｙＭｏｄｅメソッドは、Ｗｅｂページの表示モード設定をする。このメソッドを実行すると、後述のＷｅｂＰａｒｔＤｉｓｐｌａｙＭｏｄｅＣｈａｎｇｉｎｇおよびＷｅｂＰａｒｔＤｉｓｐｌａｙＭｏｄｅＣｈａｎｇｅｄイベントが発動する。さらに、現在編集中のパーツがあるときにＷｅｂページの編集モードを終了した場合、このメソッドは、Ｗｅｂパーツの編集を終了する。このメソッドとともに渡されるパラメータは、ＤｉｓｐｌａｙＭｏｄｅパラメータであり、ターゲットのＷｅｂパーツＤｉｓｐｌａｙＭｏｄｅを設定する。
【０１３２】
Ｗｅｂパーツマネージャに含まれるイベントは、ＣｌｏｓｅｄＷｅｂＰａｒｔｓＣｈａｎｇｅｄ、ＤｉｓｐｌａｙＭｏｄｅＣｈａｎｇｅｄ、ＤｉｓｐｌａｙＭｏｄｅＣｈａｎｇｉｎｇ、ＷｅｂＰａｒｔＡｄｄｅｄ、ＷｅｂＰａｒｔＥｄｉｔＭｏｄｅＣｈａｎｇｅｄ、ＷｅｂＰａｒｔＥｄｉｔＭｏｄｅＣｈａｎｇｉｎｇ、およびＷｅｂＰａｒｔＤｅｌｅｔｅｄである。Ｗｅｂパーツマネージャの基本クラスのＣｌｏｓｅｄＷｅｂＰａｒｔｓＣｈａｎｇｅｄイベントは、パーツを閉じるか、またはＣｌｏｓｅＷｅｂＰａｒｔコレクションから削除したときに発動する。Ｗｅｂパーツマネージャの基本クラスのＤｉｓｐｌａｙＭｏｄｅＣｈａｎｇｅｄイベントは、ＤｉｓｐｌａｙＭｏｄｅが変更された後に発動する。Ｗｅｂパーツマネージャの基本クラスのＤｉｓｐｌａｙＭｏｄｅＣｈａｎｇｉｎｇイベントは、ＤｉｓｐｌａｙＭｏｄｅが変更される前に発動する。このイベントのハンドラは、ＥｖｅｎｔＡｒｇｕｍｅｎｔを調整することで、ＤｉｓｐｌａｙＭｏｄｅの変更を禁止することができる。Ｗｅｂパーツマネージャの基本クラスのＷｅｂＰａｒｔＥｄｉｔＭｏｄｅＣｈａｎｇｅｄイベントは、ＷｅｂパーツがＥｄｉｔＭｏｄｅに入った後、またはＥｄｉｔＭｏｄｅを抜けた後に発動する。Ｗｅｂパーツマネージャの基本クラスのＷｅｂＰａｒｔＥｄｉｔＭｏｄｅＣｈａｎｇｉｎｇイベントは、ＷｅｂパーツがＥｄｉｔＭｏｄｅに入る前、またはＥｄｉｔＭｏｄｅを抜ける前に発動する。
【０１３３】
ＷｅｂパーツがＷｅｂパーツゾーンの永続化フォーマットではなくデータベースで宣言されている場合、開発者はＷｅｂパーツマネージャを拡張することができる。ＣｒｅａｔｅＣｈｉｌｄＣｏｎｔｒｏｌメソッドは、他のソースからＷｅｂパーツをフェッチするように指定変更しなければならない。ＷｅｂパーツマネージャのＷｅｂＰａｒｔＣｏｌｌｅｃｔｉｏｎプロパティは、子コントロールに依存しているため、これらのプロパティは指定変更する必要はない。「Ｄｅｌｅｔｅ」、「Ａｄｄ」、および「Ｍｏｖｅ」メソッドも、代替えデータストアとやり取りするように指定変更することもあり得る。
【０１３４】
上述の基本クラス、パーツの基本クラス、ゾーンの基本クラス、およびＷｅｂパーツマネージャの基本クラスの基本機能を理解すると、それらから派生する基本クラスおよびコントロールを相互運用するという観点で他のいくつかの機能についても説明できる。この拡張された機能には、インポートおよびエクスポート機能、Ｗｅｂパーツ同士の接続、およびＷｅｂパーツの構成がある。
【０１３５】
アプリケーションでは、Ｗｅｂパーツのプロパティのエクスポートおよびインポート機能を使用することができる。このため、ユーザは自分たちのＷｅｂパーツ設定を共有することができる。エクスポートを実行する場合、Ｗｅｂパーツのプロパティの完全なＸＭＬ表現を作成する。このドキュメントのフォーマットは、ＸＭＬファイルであり、ＷｅｂパーツがＸＭＬのシリアル化メタデータ属性を使用して制御する。その後で、ＸＭＬドキュメントをインポートできる。通常、パーソナライズ可能とマークされたプロパティのみがパーツの最終的なＸＭＬ表現に含まれる。本発明の一実施形態では、エクスポートボタンをＷｅｂパート上に作成し、エクスポート機能を利用できるようにすることが可能である。
【０１３６】
ＸＭＬフォーマットを使用して、Ｗｅｂパーツのパーソナライズされたプロパティ設定を記述する。ファイルには、ＴｙｐｅＮａｍｅ、ＡｓｓｅｍｂｌｙＮａｍｅ、およびＷｅｂパーツのさまざまなプロパティに対する値が含まれる。ファイルがアップロードされると、Ｗｅｂパーツマネージャは、指定されたオブジェクトをインスタンス化し、ファイル内のＸＭＬを解析し、プロパティをそのオブジェクトに適用する。このＷｅｂパーツは、ページのＷｅｂパーツコレクションに追加され、他の動的パーツとして処理することができる。
【０１３７】
Ｗｅｂパーツ同士を接続することにより、情報および機能を共有するようにできる。図６の説明とともに述べているように、接続は対になっている消費者と供給者のモデルを通じて動作する。接続機能をサポートするパーツは、Ｗｅｂパーツマネージャに登録しなければならない。その後、Ｗｅｂパーツマネージャはパーツ間の接続をつなぐ必要がある。
【０１３８】
Ｗｅｂパーツが接続するには、以下のステップが行われる。すなわち、消費者および供給者ＷｅｂパーツがＣｏｎｎｅｃｔｉｏｎＥｎｄＰｏｉｎｔをＷｅｂパーツマネージャに登録し、Ｗｅｂパーツマネージャはデリゲート（ｄｅｌｅｇａｔｅ）を介して供給者に接続オブジェクトを問い合わせ、Ｗｅｂパーツマネージャは、デリゲートを介してそれらが接続されていることをＷｅｂパーツに通知し、Ｗｅｂパーツは認識されている接続インターフェースを介して通信する。接続は、Ｃｏｎｎｅｃｔｉｏｎプロパティを通じてＷｅｂパーツマネージャの永続化フォーマットで定義することができる。
【０１３９】
接続モデルは、接続の両端での供給者と消費者に基づく。それぞれの接続は、一次接続インターフェース経由で動作する。このインターフェースは、供給者と消費者の両方により認識される。供給者側のみが、インターフェースを実装する必要があるが、それは、消費者はインターフェースのメソッド、プロパティ、およびイベント通じて単に呼び出すだけだからである。接続は、特定の供給者および消費者の意味で双方向通信を実行することが可能でない限り、通常、双方向ではない。
【０１４０】
フレームワークは、サーバサイドの接続に対する一次的サポートを含む。サーバサイドの接続は、ページ実行時に発生し、Ｗｅｂページの存続期間中のみアクティブである。クライアントサイドの接続は、ポストバック（ｐｏｓｔ−ｂａｃｋ）なしでクライアント上で発生する接続である。供給者と消費者の両方がクライアントサイドの通信に対するサポートを実装していれば、接続フレームワークにより、接続されているパーツはクライアント上で通信することができる。これにより、サードパーティはクライアントサイドの接続を補助して構築することができる。
【０１４１】
ＷｅｂパーツマネージャはすべてのＷｅｂパーツ通信を追跡し、初期化する役割を持つ。接続プロセスは、各ＷｅｂパーツがＣｏｎｎｅｃｔｉｏｎＥｎｄＰｏｉｎｔをＷｅｂパーツマネージャに登録したときに開始する。その後、存続期間中の適切な段階において、Ｗｅｂパーツマネージャは供給者に対するデリゲートを呼び出し、そのときに、供給者は自分自身を返すか、または他の接続オブジェクトのインスタンスを返す。Ｗｅｂパーツマネージャは、接続オブジェクトを受け取った後、ＣｏｎｎｅｃｔＣｏｎｓｕｍｅｒＣａｌｌＢａｃｋに対するデリゲートを呼び出す。このときに、消費者は適切な接続インターフェースを介して自由に通信することができる。
【０１４２】
接続に参加することを望むＷｅｂパーツは、１つまたは複数のＣｏｎｎｅｃｔｉｏｎＥｎｄＰｏｉｎｔを定義し、Ｗｅｂパーツマネージャはこれらを使用して、Ｗｅｂパーツをつなぎ合わせる。各ＣｏｎｎｅｃｔｉｏｎＥｎｄＰｏｉｎｔは、パーツ上でＣｏｎｎｅｃｔｉｏｎＰｏｉｎｔを識別する複数のプロパティを含む。Ｎａｍｅで、ＣｏｎｎｅｃｔｉｏｎＰｏｉｎｔの名前、例えば、「ＳｅｌｅｃｔｅｄＲｏｗ」を定義する。Ｃｏｎｎｅｃｔｉｏｎ  Ｉｎｔｅｒｆａｃｅにより、この接続に対し一次インターフェース、例えば、ＩＦｉｅｌｄＤａｔａを定義する。ＣａｌｌＢａｃｋ  Ｄｅｌｅｇａｔｅは、供給者では、ＣｏｎｎｅｃｔｉｏｎＩｎｔｅｒｆａｃｅを実装するオブジェクトを返すメソッドを参照するために使用され、消費者では、ＣｏｎｎｅｃｔｉｏｎＩｎｔｅｒｆａｃｅを実装するオブジェクトを受け取るメソッドを参照するために使用される。Ｄｅｓｃｒｉｐｔｉｏｎには、ＣｏｎｎｅｃｔｉｏｎＥｎｄＰｏｉｎｔをエンドユーザに対し説明するテキスト、例えば「Ｐｒｏｖｉｄｅ  ｓｅｌｅｃｔｅｄ  Ｒｏｗ  ｔｏ．．．．」が含まれる。
【０１４３】
ＲｅｇｉｓｔｅｒＰｒｏｖｉｄｅｒは、ＯｎＩｎｉｔで供給者Ｗｅｂパーツにより呼び出される。ＧｅｔＣｏｎｎｅｃｔｉｏｎＣａｌｌｂａｃｋ引数は、Ｃｏｎｎｅｃｔｉｏｎオブジェクトを作成する役割を受け持つメソッドへのデリゲートである。ＲｅｇｉｓｔｅｒＰｒｏｖｉｄｅｒメソッドを呼び出す供給者の例を以下に示す。
【０１４４】
class  MyListPart  :  web  part,  IRow
｛
//  Register  the  web  part  as  a  provider
//  IRow  is  the  primary  connection  interface
public  override  OnInit()｛
//  Create  a  new  ConnectionEndPoint
ConnectionEndPoint  endpoint  =  new  ConnectionEndPoint(
Typeof(IRow),  new
ConnectionProviderCallback(MyCreateConnection));
endPoint.Name  =  "RowProvider";
endPoint.Description  =  "Provide  Row  To";
//Register  the  ConnectionEndPoint  with  the  web  part  manager
RegisterConnectionEndPoint(endPoint);
//  Function  called  by  CreateConnection  Delegate,
//  Since  this  part  implements  the  connection,  just  return  this
public  object  MyCreateConnection()｛
return(this);
｝
/*  Implement  IRow
&  web  part  functionality
*/
｝
【０１４５】
ＲｅｇｉｓｔｅｒＣｏｎｓｕｍｅｒは、ＯｎＩｎｉｔで消費者Ｗｅｂパーツにより呼び出される。ＣｏｎｎｅｃｔｉｏｎＣｏｎｓｕｍｅｒＣａｌｌｂａｃｋパラメータは、接続を受け付ける役割を受け持つメソッドへのデリゲートである。ＲｅｇｉｓｔｅｒＣｏｎｓｕｍｅｒメソッドを呼び出す消費者Ｗｅｂパーツの例を以下に示す。
【０１４６】
class  MyFormPart  :  web  part
//  Register  the  web  part  as  a  consumer
//  IRow  is  the  primary  connection  interface
public  override  OnInit()｛
//  Create  the  ConnectionEndPoint
ConnectionEndPoint  endpoint  =  new  ConnectionEndPoint(
Typeof(IRow),  new
ConnectionConsumerCallback(MyConnectToProvider));
endPoint.Name  =  "RowConsumer";
endPoint.Text  =  "Retrieve  Row  From";
//  Register  the  ConnectionEndPoint  with  the  web  partManaager
RegisterConnectionEndPoint(endPoint);
｝
//  Function  called  by  delegate  when  this  connection  is
established
public  void  MyConnectToProvider(Object  obj)｛
//  Logic  to  handle  Connection
｝
｝
【０１４７】
トランスフォーマは、一方のＣｏｎｎｅｃｔｉｏｎＩｎｔｅｒｆａｃｅを他方に変換するロジックを持つオブジェクトである。例えば、トランスフォーマを使用すると、ＩＦｉｅｌｄＤａｔａを認識するパーツはＩＲｏｗＤａｔａを実装するパーツと通信することができる。そのために、トランスフォーマでは、供給者によって送信されたＲｏｗＤａｔａから適切なセルを選択し、消費者に公開する。ＩＣｏｎｎｅｃｔｉｏｎインターフェースは、接続に関与するすべてのトランスフォーマによって実装される。これは、どの接続インターフェースが使用可能か問い合わせる場合に使用する。
【０１４８】
トランスフォーマの一実施形態の機能を図１４に示す。供給者Ｗｅｂパーツ１４０２は、Ｓｔｏｃｋ  Ｌｉｓｔ  Ｗｅｂパーツとして例示されている。供給者Ｗｅｂパーツ１４０２は、ＳｅｌｅｃｔｅｄＳｔｏｃｋＬｉｓｔ  ＣｏｎｎｅｃｔｉｏｎＥｎｄＰｏｉｎｔを含む。供給者Ｗｅｂパーツ１４０２は、この例ではＩＲｏｗＤａｔａインターフェースである第１の通信インターフェース１４０６を通じてトランスフォーマ１４０４に結合されている。これらのインターフェースについて、以下で詳述する。トランスフォーマ１４０４は、第１の通信インターフェース１４０６とともに送信されたデータをこの例で示されている株式のグラフパーツなどの消費者Ｗｅｂパーツ１４０８により読み取り可能なフォーマットに変換する。その後、第２の通信インターフェース１４１０で、適切なデータが消費者Ｗｅｂパーツ１４０８に送信される。
【０１４９】
ＧｅｔＣｏｎｎｅｃｔｉｏｎＩｎｔｅｒｆａｃｅメソッドは、基本クラスＷｅｂＰａｒｔＣｌａｓｓに依存する。これにより、Ｗｅｂパーツは、使用しているＣｏｎｎｅｃｔｉｏｎＯｂｊｅｃｔが追加Ｃｏｎｎｅｃｔｉｏｎ  Ｉｎｔｅｒｆａｃｅを実装するかどうかをチェックすることができる。このメソッドは、一次接続インターフェースに対しトランスフォーマが存在している場合に使用すべきである。
【０１５０】
消費者Ｗｅｂパーツは、供給者インターフェースを通じて供給者と通信する。このインターフェースにより、消費者が供給者とやり取りすることをどれだけ期待できるかが定義される。フレームワークによって、複数の供給者インターフェースが実装される。例えば、ＩＦｉｅｌｄＤａｔａはデータの単一セルへのインターフェースを備える。ＩＲｏｗＤａｔａは、リストの１行へのインターフェースを備える。ＩＲｏｗＤａｔａインターフェースは、選択方式のアクションに適している。ＩＬｉｓｔＤａｔａは、リスト全体のインターフェースを備える。このＩＬｉｓｔＤａｔａインターフェースは、データセット全体の代替え表示を行うＷｅｂパーツに適している。ＩＦｉｌｔｅｒインターフェースを使用して、リストに対してフィルタおよび／または並べ替えの式を設定する。ＩＭｏｄｉｆｙＲｏｗインターフェースは、リスト内の１行の挿入、更新、および削除に使用することができる。
【０１５１】
Ｗｅｂパーツは、自身を登録すると、このパーツが認識する供給者インターフェースを識別する。Ｗｅｂパーツは、複数のインターフェースを認識していることを知らせるためにＲｅｇｉｓｔｅｒＣｏｎｓｕｍｅｒ／ＲｅｇｉｓｔｅｒＰｒｏｖｉｄｅｒメソッドを複数回呼び出すことができる。例えば、リストパーツではＩＲｏｗおよびＩＭｏｄｉｆｙＲｏｗの両方をサポートすることが可能である。消費者パーツも、これらのインターフェースを両方とも認識することが可能である。Ｗｅｂパーツはさらに、異なる意味で同じインターフェースを２回実装することを決定することもできる。例えば、リストＷｅｂパーツは、現在選択されている行とマウスがホバリングしている現在の行との両方についてＩＲｏｗをサポートすることができる。これは、両方ともＩＲｏｗを実装する２つの別個の接続クラスを実装することにより可能である。
【０１５２】
これらの接続クラスのそれぞれに対し、二次的接続インターフェースのさまざまなサポートを関連付けることが可能である。例えば、ＩＲｏｗＭｏｄｉｆｙは、選択された行についてサポートされるが、ホバリングの行についてはサポートされない。２つのＷｅｂパーツが接続されると、消費者は供給者に、どのようなインターフェースをサポートしているかを問い合わせることができる。これは、Ｗｅｂパーツ基本クラス上で定義されているＧｅｔＣｏｎｎｅｃｔｉｏｎＩｎｔｅｒｆａｃｅメソッドを通じて行われる。より高度な機能を接続にまたがって共有したい開発者は、消費者Ｗｅｂパーツが認識するカスタム供給者インターフェースを実装することができる。
【０１５３】
ＧｅｔＣｏｎｎｅｃｔｉｏｎＣａｌｌｂａｃｋは、実際に接続オブジェクトを作成し、返す役割を持つ機能へのデリゲートとして使用される。これは、ＲｅｇｉｓｔｅｒＣｏｎｎｅｃｔｉｏｎメソッドの中で参照される。実際の呼び出しを受け取るメソッドは、ＧｅｔＣｏｎｎｅｃｔｉｏｎＣａｌｌｂａｃｋメソッド署名と照合しなければならない。
【０１５４】
ＣｏｎｎｅｃｔＣｏｎｓｕｍｅｒＣａｌｌｂａｃｋは、特定の接続が確立されたときに呼び出されるメソッドを識別するため消費者パーツにより使用される。このデリゲートは、ＲｅｇｉｓｔｅｒＣｏｎｓｕｍｅｒメソッドの中で使用される。
【０１５５】
本発明の実施形態は、後で詳述するように、さまざまなコンピュータハードウェアをはじめとする専用または汎用コンピュータを備えることができる。
【０１５６】
本発明の範囲内の実施形態はさらに、格納されているコンピュータ実行可能命令またはデータ構造体を搬送するまたは保持するためのコンピュータ可読媒体も含む。このようなコンピュータ可読媒体は、汎用または専用コンピュータからアクセスできる使用可能な媒体とすることができる。例として、ただしこれに限るわけではないが、このようなコンピュータ可読媒体はＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、またはその他の光ディスク記憶装置、磁気ディスク記憶装置またはその他の磁気記憶デバイス、またはコンピュータ実行可能命令またはデータ構造体の形で目的のプログラムコード手段を搬送または格納するために使用できる、専用または汎用コンピュータによりアクセスできる、その他の媒体を備えることができる。ネットワークまたは他の通信接続（ハード配線、無線、またはハード配線と無線の組み合わせ）を介して情報をコンピュータに転送または供給すると、コンピュータはその接続をコンピュータ可読媒体として適切に認識する。したがって、そのような接続は、コンピュータ可読媒体と呼んで間違いない。上記の組み合わせも、コンピュータ可読媒体の範囲に含めなければならない。コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理デバイスに特定の機能または機能群を実行させる命令およびデータを含む。
【０１５７】
以下の説明は、本発明を実施できる適当なコンピューティング環境について簡潔に述べた一般的な説明である。必要というわけではないが、本発明について、ネットワーク環境でコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的文脈において説明する。一般に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。コンピュータ実行可能命令、関連するデータ構造体、およびプログラムモジュールは、本明細書で開示している方法のステップを実行するプログラムコード手段の例を表している。このような実行可能命令または関連するデータ構造体の特定の並びは、そのようなステップで説明される機能を実装するための対応する動作の例を表す。
【０１５８】
当業者には、本発明が、パーソナルコンピュータ、携帯型デバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な家電製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどをはじめとする、さまざまな種類のコンピュータシステム構成とともにネットワークコンピューティング環境で実施できることは明白であろう。また、本発明は、通信ネットワークを通じて（ハード配線リンク、無線リンク、またはハード配線と無線リンクの組み合わせにより）リンクされているローカルおよびリモート処理デバイスによりタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモートのメモリ記憶デバイスに置くことができる。
【０１５９】
本発明は、本発明の精神または本質的特徴から逸脱することなく他の特定の形で実現することが可能である。説明した実施形態は、すべての点で、説明のみを目的としており、制限することを目的としていないとみなすべきである。したがって、本発明の範囲は、上記の説明ではなく、添付の特許請求の範囲で指示される。請求項の均等物の意味および範囲内にあるすべての変更は本発明の範囲に含まれるものとする。
【図面の簡単な説明】
【０１６０】
【図１】モジュール型Ｗｅｂポータルの一例を示す図である。
【図２】図１に示されているＷｅｂポータルのゾーンレイアウトを示す図である。
【図３】モジュール型Ｗｅｂポータルの他の例を示す図である。
【図４】Ｗｅｂページ上のＷｅｂパーツをパーソナライズするためのユーザインターフェースの一例を示す図である。
【図５Ａ】ＷｅｂページにＷｅｂパーツを追加するためのユーザインターフェースの一例を示す図である。
【図５Ｂ】ＷｅｂページにＷｅｂパーツを追加するためのユーザインターフェースの一例を示す図である。
【図６】Ｗｅｂページ上の２つのＷｅｂパーツの間の接続を示す図である。
【図７】Ｗｅｂページ作成フレームワークで使用されるクラスおよび基本クラスの階層を示す図である。
【図８Ａ】外観、レイアウト、および動作を制御するＷｅｂページ上のパーツを示す図である。
【図８Ｂ】外観、レイアウト、および動作を制御するＷｅｂページ上のパーツを示す図である。
【図８Ｃ】外観、レイアウト、および動作を制御するＷｅｂページ上のパーツを示す図である。
【図９】Ｗｅｂページ作成フレームワークで使用されるゾーンコントロールのクラスおよび基本クラスの階層を示す図である。
【図１０】本発明の一実施形態を使用して作成できるゾーンレイアウトおよびＷｅｂパーツレイアウトを示す図である。
【図１１Ａ】本発明の一実施形態を使用して作成できるゾーンの水平レイアウトを示す図である。
【図１１Ｂ】本発明の一実施形態を使用して作成できるゾーンの垂直レイアウトを示す図である。
【図１２】動詞アイコンのグラフィックの例を示す図である。
【図１３】ゾーン内に配置するＷｅｂパーツを決定する流れ図である。
【図１４】一方のＷｅｂパーツを他方のＷｅｂパーツに接続するために使用されるトランスフォーマを示す図である。
【符号の説明】
【０１６１】
１００、３００、４００、５００  Ｗｅｂページ
１０２  ウエルカムＷｅｂパーツ
１０４  気象Ｗｅｂパーツ
１０６  株式Ｗｅｂパーツ
１０８  検索Ｗｅｂパーツ
１１０  リンクＷｅｂパーツ
１１２、４０５  タイトル
１１４  フレーム
１１６  動詞
２００  上ゾーン
２０２  左ゾーン
２０４  右ゾーン
４０２  編集リンク
４０３、５２２  Ｗｅｂパーツ
４０４  エディタパーツ
４０６  エディタゾーン
４０８  「Ｔｉｔｌｅ」テキストボックス
４１０  「Ｆｒａｍｅ  Ｓｔａｔｅ」ドロップダウンメニュー
４１２  「Ｆｒａｍｅ  Ｔｙｐｅ」ドロップダウンメニュー
４１４  「Ｓｙｍｂｏｌ」テキストボックス
４１８  閉じる動詞ボタン
４２０  「ＯＫ」動詞ボタン
４２２  「Ｃａｎｃｅｌ」動詞ボタン
４２４  フッタ
５０２、５２０  カタログパーツ
５０４  カタログゾーン
５０６  テキストボックス
５０８  「Ａｄｄ」ボタン
５１０  カタログ
５１２  カタログリンク
５２４  Ｗｅｂパーツタイトル
５２６  パーツアイコン
５２８  ライブラリ
５３０  ライブラリリンク
５３２  ページリンク
５３４  ページ別アイテムインジケータ
５３６  「Ａｄｄ」動詞
５３８  ドロップダウン選択ボックス
６００  株式リストＷｅｂパーツ
６０２  株式
６０４  株式グラフＷｅｂパーツ
７０２  Ｐａｒｔ基本クラス
７０４  ＣａｔａｌｏｇＰａｒｔ基本クラス
７０６  ＷｅｂＰａｒｔ基本クラス
７０８  ＥｄｉｔｏｒＰａｒｔ基本クラス
７１０  ＰｒｏｐｅｒｔｙＧｒｉｄＥｄｉｔｏｒＰａｒｔ
７１２  ＢｅｈａｖｉｏｒＥｄｉｔｏｒＰａｒｔ
７１４  ＡｐｐｅａｒａｎｃｅＥｄｉｔｏｒＰａｒｔ
７１６  ＬａｙｏｕｔＥｄｉｔｏｒＰａｒｔ
７１８  ３ｒｄＰａｒｔｙ  ＣａｔａｌｏｇＰａｒｔＰａｒｔ
９００  Ｚｏｎｅ基本クラス
９０２  ＷｅｂＰａｒｔＺｏｎｅ基本クラス
９０４  ＥｄｉｔｏｒＺｏｎｅ基本クラス
９０６  ＣａｔａｌｏｇＺｏｎｅ基本クラス
９０８  ＷｅｂＰａｒｔＺｏｎｅ
１００２  ゾーンフレーム
１００４  タイトルバー
１００６  パーツタイトル領域
１００８  パーツ動詞領域
１０１０  パーツレンダリングコンテンツ
１０１２  パーツフレーム
１１０２  水平にレイアウトされたゾーン
１１０４  垂直にレイアウトされたゾーン
１３０２  ＧｅｔＷｅｂＰａｒｔｓＦｏｒＺｏｎｅメソッド
１３０６  ターゲットゾーン
１４０２  供給者Ｗｅｂパーツ
１４０４  トランスフォーマ
１４０８  消費者Ｗｅｂパーツ
【図１】
2005011355.tif 000003
【図２】
2005011355.tif 000004
【図３】
2005011355.tif 000005
【図４】
2005011355.tif 000006
【図５Ａ】
2005011355.tif 000007
【図５Ｂ】
2005011355.tif 000008
【図６】
2005011355.tif 000009
【図７】
2005011355.tif 000010
【図８Ａ】
2005011355.tif 000011
【図８Ｂ】
2005011355.tif 000012
【図８Ｃ】
2005011355.tif 000013
【図９】
2005011355.tif 000014
【図１０】
2005011355.tif 000015
【図１１Ａ】
2005011355.tif 000016
【図１１Ｂ】
2005011355.tif 000017
【図１２】
2005011355.tif 000018
【図１３】
2005011355.tif 000019
【図１４】
2005011355.tif 000020