(57)【要約】小型デバイスのディスプレイ内に表示するスケーラブルなアイテム・リストを管理するためのシステムと方法。小型デバイス内で実行されるクライアント・プログラムは、「リスト・コンテナ・オブジェクト」をインスタンス化し、「リスト・アイテム・データ・オブジェクト」をリスト・コンテナ・オブジェクトに追加することができる。リスト・コンテナ・オブジェクトは、一定の数の「アイテム・レンダラ・オブジェクト」をインスタンス化することができ、これは、リスト・アイテム・データ・オブジェクトを適切に表示する役割を持つ。各アイテム・レンダラ・オブジェクトは、表示されているリスト内の１行に対応する。リスト・コンテナ・オブジェクトは、アイテム・レンダラ・オブジェクトの集合とインタフェースし、リストの表示を管理する。一実施形態では、アイテム・レンダラ・オブジェクトは、アイテム・レンダラ・オブジェクトを対話操作するためのメソッドを備える「アイテム・レンダラ・インタフェース」をサポートするクラスのインスタンスである。そこで、さまざまなタイプのオブジェクトを表示できる一般的なフレームワークを説明するが、そのために、異なるアイテム・レンダラ・オブジェクトの実施に対し適切にアイテム・レンダラ・インタフェースのメソッドを実装する。リスト・コンテナ・オブジェクトは、所定の時間に表示されるリスト・アイテム・データ・オブジェクトの集合を追跡することができる。ユーザが、たとえば、上下にスクロールすることにより、リストを対話操作するときに、リスト・コンテナ・オブジェクトは、メソッド呼び出しまたはユーザのアクションを示すユーザ・インタフェース・イベントを受け取り、表示するアイテムの新規開始インデックスを決定し、各アイテム・レンダラ・オブジェクトに、たとえば、各アイテム・レンダラ・オブジェクトのアイテム・レンダラ・インタフェース・メソッドを呼び出し、対応するリスト・アイテム・データ・オブジェクトをパラメータとして渡すことにより適切なリスト・アイテム・データ・オブジェクトの再表示を指示することができる。
2004501409.tif 000002
【特許請求の範囲】
【請求項１】
表示用のスケーラブルなアイテム・リストを管理するシステムであって、
ディスプレイ、及びメモリに結合されているＣＰＵを備える小型デバイスと、
リスト・コンテナ・オブジェクトをインスタンス化し、リスト・アイテム・データ・オブジェクトをリスト・コンテナ・オブジェクトに追加するように実行可能であり、小型デバイスのメモリに含まれるクライアント・プログラムと
を備え、
リスト・コンテナ・オブジェクトを実行して、複数のリスト・アイテム・レンダラ・オブジェクトのそれぞれについて対応するリスト・アイテム・データ・オブジェクトを指定することができ、
リスト・アイテム・レンダラ・オブジェクトごとに対応するリスト・アイテム・データ・オブジェクトを指定する前記リスト・コンテナ・オブジェクトに応答して、各リスト・アイテム・レンダラ・オブジェクトを実行して、小型デバイスのディスプレイ内にリスト・アイテム・データ・オブジェクトを表示できるシステム。
【請求項２】
リスト・コンテナ・オブジェクトを実行して複数のリスト・アイテム・レンダラ・オブジェクトをインスタンス化できる請求項１に記載のシステム。
【請求項３】
クライアント・プログラムを実行してリスト・コンテナ・オブジェクトに、リスト・アイテム・レンダラ・オブジェクト・クラスを指定する情報を供給でき、
複数のリスト・アイテム・レンダラ・オブジェクトをインスタンス化する前記リスト・コンテナ・オブジェクトが、クライアント・プログラムで指定されたリスト・アイテム・レンダラ・オブジェクト・クラスの複数のオブジェクトをインスタンス化するリスト・コンテナ・オブジェクトを含む請求項２に記載のシステム。
【請求項４】
リスト・アイテム・レンダラ・オブジェクト・クラスがアイテム・レンダラ・インタフェースを実施し、
アイテム・レンダラ・インタフェースがリスト・アイテム・レンダラ・オブジェクトに対応するリスト・アイテム・データ・オブジェクトを設定する「データ設定」メソッドを備え、
リスト・アイテム・レンダラ・オブジェクトごとに対応するリスト・アイテム・データ・オブジェクトを指定する前記リスト・コンテナ・オブジェクトが対応するリスト・アイテム・データ・オブジェクトを各リスト・アイテム・レンダラ・オブジェクトの「データ設定」メソッドに渡すリスト・コンテナ・オブジェクトを含む請求項３に記載のシステム。
【請求項５】
リスト・コンテナ・オブジェクトが現在表示されている第１のリスト・アイテム・データ・オブジェクトを指定する開始インデックスを保持し、
ユーザの対話に応答して、リスト・コンテナ・オブジェクトを実行し、開始インデックスを更新し、複数のリスト・アイテム・レンダラ・オブジェクトのそれぞれに対応する更新されたリスト・アイテム・データ・オブジェクトを指定することができ、
各リスト・アイテム・レンダラ・オブジェクトに対応する更新されたリスト・アイテム・データ・オブジェクトを指定する前記リスト・コンテナ・オブジェクトに応答して、各リスト・アイテム・レンダラ・オブジェクトを実行して、小型デバイスのディスプレイ内に更新されたリスト・アイテム・データ・オブジェクトを表示できる請求項１に記載のシステム。
【請求項６】
複数のリスト・アイテム・レンダラ・オブジェクトのそれぞれが小型デバイスのディスプレイ内に表示されるリスト行に対応し、
小型デバイスのディスプレイ内にリスト・アイテム・データ・オブジェクトを表示する前記各リスト・アイテム・レンダラ・オブジェクトがリスト・アイテム・レンダラ・オブジェクトに対応するリスト行内にリスト・アイテム・データ・オブジェクトを表示する各リスト・アイテム・レンダラ・オブジェクトを含む請求項１に記載のシステム。
【請求項７】
小型デバイスのディスプレイに表示するためにスケーラブルなアイテム・リストを管理する方法であって、
ＣＰＵ及びメモリを備える小型デバイスのメモリに含まれるクライアント・プログラムが、リスト・コンテナ・オブジェクトをインスタンス化し、リスト・アイテム・データ・オブジェクトをリスト・コンテナ・オブジェクトに追加し、
前記リスト・コンテナ・オブジェクトが複数のリスト・アイテム・レンダラ・オブジェクトのそれぞれについて対応するリスト・アイテム・データ・オブジェクトを指定し、
リスト・アイテム・レンダラ・オブジェクトごとに対応するリスト・アイテム・データ・オブジェクトを指定する前記リスト・コンテナ・オブジェクトに応答して、小型デバイスのディスプレイ内にリスト・アイテム・データ・オブジェクトを表示する各リスト・アイテム・レンダラ・オブジェクトを備える方法。
【請求項８】
さらに、
リスト・コンテナ・オブジェクトが複数のリスト・アイテム・レンダラ・オブジェクトをインスタンス化する請求項７に記載の方法。
【請求項９】
さらに、
クライアントプログラムがリスト・コンテナ・オブジェクトに、リスト・アイテム・レンダラ・オブジェクト・クラスを指定する情報を供給し、
複数のリスト・アイテム・レンダラ・オブジェクトをインスタンス化する前記リスト・コンテナ・オブジェクトがクライアント・プログラムで指定されたリスト・アイテム・レンダラ・オブジェクト・クラスの複数のオブジェクトをインスタンス化する請求項８に記載の方法。
【請求項１０】
リスト・アイテム・レンダラ・オブジェクト・クラスがアイテム・レンダラ・インタフェースを実施し、
アイテム・レンダラ・インタフェースがリスト・アイテム・レンダラ・オブジェクトに対応するリスト・アイテム・データ・オブジェクトを設定する「データ設定」メソッドを備え、
リスト・アイテム・レンダラ・オブジェクトごとに対応するリスト・アイテム・データ・オブジェクトを指定する前記リスト・コンテナ・オブジェクトが対応するリスト・アイテム・データ・オブジェクトを各リスト・アイテム・レンダラ・オブジェクトの「データ設定」メソッドに渡すリスト・コンテナ・オブジェクトを含む請求項９に記載の方法。
【請求項１１】
さらに、
リスト・コンテナ・オブジェクトが現在表示されている第１のリスト・アイテム・データ・オブジェクトを指定する開始インデックスを保持し、
ユーザの対話に応答して、リスト・コンテナ・オブジェクトが開始インデックスを更新し、複数のリスト・アイテム・レンダラ・オブジェクトのそれぞれに対応する更新されたリスト・アイテム・データ・オブジェクトを指定し、
各リスト・アイテム・レンダラ・オブジェクトに対応する更新されたリスト・アイテム・データ・オブジェクトを指定する前記リスト・コンテナ・オブジェクトに応答して、各リスト・アイテム・レンダラ・オブジェクトが小型デバイスのディスプレイ内に更新されたリスト・アイテム・データ・オブジェクトを表示する請求項７に記載の方法。
【請求項１２】
複数のリスト・アイテム・レンダラ・オブジェクトのそれぞれが小型デバイスのディスプレイ内に表示されるリスト行に対応し、
小型デバイスのディスプレイ内にリスト・アイテム・データ・オブジェクトを表示する各リスト・アイテム・レンダラ・オブジェクトが、リスト・アイテム・レンダラ・オブジェクトに対応するリスト行内にリスト・アイテム・データ・オブジェクトを含む請求項７に記載の方法。
【請求項１３】
中央処理装置（ＣＰＵ）と、
ＣＰＵに結合されたメモリと、
ディスプレイと、
リスト・コンテナ・オブジェクトをインスタンス化し、リスト・アイテム・データ・オブジェクトをリスト・コンテナ・オブジェクトに追加するように実行可能であり、メモリに含まれるクライアント・プログラムを備え、
リスト・コンテナ・オブジェクトを実行して、複数のリスト・アイテム・レンダラ・オブジェクトのそれぞれについて対応するリスト・アイテム・データ・オブジェクトを指定することができ、
リスト・アイテム・レンダラ・オブジェクトごとに対応するリスト・アイテム・データ・オブジェクトを指定する前記リスト・コンテナ・オブジェクトに応答して、各リスト・アイテム・レンダラ・オブジェクトを実行して、ディスプレイ内にリスト・アイテム・データ・オブジェクトを表示するシステム。
【請求項１４】
リスト・コンテナ・オブジェクトを実行して複数のリスト・アイテム・レンダラ・オブジェクトをインスタンス化する請求項１３に記載のシステム。
【請求項１５】
クライアントプログラムを実行してリスト・コンテナ・オブジェクトに、リスト・アイテム・レンダラ・オブジェクト・クラスを指定する情報を供給し、
複数のリスト・アイテム・レンダラ・オブジェクトをインスタンス化する前記リスト・コンテナ・オブジェクトがクライアント・プログラムで指定されたリスト・アイテム・レンダラ・オブジェクト・クラスの複数のオブジェクトをインスタンス化するリスト・コンテナ・オブジェクトを備える請求項１４に記載のシステム。
【請求項１６】
リスト・アイテム・レンダラ・オブジェクト・クラスがアイテム・レンダラ・インタフェースを実装し、
アイテム・レンダラ・インタフェースがリスト・アイテム・レンダラ・オブジェクトに対応するリスト・アイテム・データ・オブジェクトを設定する「データ設定」メソッドを備え、
リスト・アイテム・レンダラ・オブジェクトごとに対応するリスト・アイテム・データ・オブジェクトを指定する前記リスト・コンテナ・オブジェクトが、対応するリスト・アイテム・データ・オブジェクトを各リスト・アイテム・レンダラ・オブジェクトの「データ設定」メソッドに渡すリスト・コンテナ・オブジェクトを含む請求項１５に記載のシステム。
【請求項１７】
ＣＰＵ、メモリ、およびディスプレイが小型デバイスに組み込まれている請求項１３に記載のシステム。
【請求項１８】
リスト・コンテナ・オブジェクトが複数のリスト・アイテム・レンダラ・オブジェクトのそれぞれについて対応するリスト・アイテム・データ・オブジェクトを指定し、
リスト・アイテム・レンダラ・オブジェクトごとに対応するリスト・アイテム・データ・オブジェクトを指定する前記リスト・コンテナ・オブジェクトに応答して、各リスト・アイテム・レンダラ・オブジェクトがシステムのディスプレイ内にリスト・アイテム・データ・オブジェクトを表示する
プログラム命令を格納するメモリ媒体。
【請求項１９】
さらに、
リスト・コンテナ・オブジェクトが複数のリスト・アイテム・レンダラ・オブジェクトをインスタンス化するプログラム命令を格納する請求項１８に記載のメモリ媒体。
【発明の詳細な説明】
【０００１】
（発明の背景）
１．発明の分野
本発明は、グラフィカル・ユーザ・インタフェース（ＧＵＩ）の分野に関し、より詳細には、小型デバイスのディスプレイに表示するスケーラブルなアイテムのリストを管理するシステムおよび方法に関する。
【０００２】
２．関連技術の説明
グラフィカル・ユーザ・インタフェース（ＧＵＩ）は、ボタン、入力テキスト・フィールド、メニューなどグラフィカル・コンポーネントやコントロールを使用して、直観的な方法でユーザがソフトウェア・アプリケーションと対話することができる。グラフィカル・ユーザ・インタフェースは、デスクトップ・コンピュータなど一般のコンピューティング・デバイス上で実行されるソフトウェア・アプリケーションとしばしば関連しているが、小型デバイスなど他のタイプのコンピューティング・デバイスにおいてＧＵＩが次第に一般的なものになってきている。
【０００３】
「スマート」な小型デバイスの分野は急速に拡大し変わりつつある。小型デバイスには、ハンドヘルド・コンピュータ、パーソナル・データ・アシスタント（ＰＤＡ）、携帯電話、グローバル・ポジショニング・システム（ＧＰＳ）受信機、ゲーム・コンソール、セットトップ・ボックスなどのデバイスがある。小型デバイスは、ますます強力になってきており、従来、デスクトップ・コンピュータなど一般のコンピューティング・デバイスと関連していたソフトウェア・アプリケーションやサービスを実行できるようになってきている。たとえば、多くの小型デバイスは、今では、Ｗｅｂブラウザ・アプリケーションを実行できるようになった。
【０００４】
小型デバイスは、より強力になり、小型デバイス上で実行されるソフトウェア・アプリケーションはより複雑になったため、ユーザがグラフィカル・ユーザ・インタフェースを通じてアプリケーションと簡単に対話できるようにすることが実現可能になり、また望ましいものとなってきている。ただし、経験から、デスクトップ・コンピュータなどの資源の豊富な環境で実行するようになっているＧＵＩを実施するときに一般に使用されている多くの手法には、小型デバイスで実行するようになっているＧＵＩに適用した場合にさまざまな欠点がある。小型デバイスには、メモリ容量や使用可能な処理能力などリソースに対する非常に強い制約がある。したがって、小型デバイスの環境で良好に動作する専用の、または最適化されたユーザ・インタフェース・コンポーネントを設計することが必要であり、または望ましいことがしばしばである。
【０００５】
グラフィカル・ユーザ・インタフェース・システムによってサポートされているユーザ・インタフェース・コンポーネントまたはコントロールの一タイプに、アイテムのリストを表示するリスト・コンポーネントやリスト・コントロールがある。さまざまなシステムまたはアプリケーションで、リスト・コンポーネント内のアイテムはさまざまなタイプのエンティティを表し、いろいろな方法、たとえばテキスト文字列、アイコン、背景陰影付けなど、またはこれらのさまざまな組み合わせで表示できる。たとえば、電子メール・クライアント・プログラムでは、リスト・コンポーネントを使用して、電子メール・メッセージのリストを表示することができ、その場合、リスト内の各アイテムまたは行は特定の電子メール・メッセージを表し、さまざまなアイコンを使って表示し、既読かどうかなどメッセージのステータスを示すことができる。
【０００６】
このようなＧＵＩリスト・コンポーネントは、デスクトップ・コンピュータのユーザに馴染みのあるものである。上述のように、小型デバイスの環境内でこのような豊富なＧＵＩリスト・コンポーネントを使用することが望ましい場合がある。ただし、ＧＵＩリスト・コンポーネントを実装する以前のアプローチは多くの場合、リスト・コンポーネントを小型デバイス環境内で使用するときにさまざまな欠点がある。
【０００７】
ＧＵＩリスト・コンポーネントを実装する以前の多数のアプローチの潜在的欠点の１つに、リスト・コンポーネントでは、各リスト・アイテムと関連する情報を保持するためにメモリを割り当てる場合があるという点があげられる。たとえば、各データ・アイテムがリスト内に挿入されると、リスト・コンポーネントは、さまざまなユーザ・インタフェース構造またはデータ・アイテムと関連するその他のデータ構造を作成し保持する。各リスト・アイテムのリスト・コンポーネントによって保持されている情報を利用することは、ユーザがリストを探して行くときにリスト・アイテムの表示を速くできるようにするなどさまざまな利点がある。ただし、メモリに制約のある環境では、リスト・アイテムごとに余分なメモリが必要であるという欠点が利点を帳消しにする。したがって、スケーラブルな方法でリスト・アイテムを表示するシステムおよび方法を提供し、リストに多数のアイテムが追加されても、リスト・コンポーネント自体のメモリ要件は一定であるようにすることが望ましい。
【０００８】
ＧＵＩリスト・コンポーネントを実装する以前のいくつかのアプローチの他の潜在的欠点は、リスト・コンポーネントでは、各リスト・アイテムの表示に関して多くの場合コントロールがない、または制限されたコントロールしかないという点である。たとえば、プログラマは各リスト・アイテムの表示を制御するいくつかのアプリケーション・プログラミング・インタフェース（ＡＰＩ）属性を設定することに制限されている。しかし、ＡＰＩによってサポートされていないリスト・アイテム表示のさまざまな他の側面をカスタマイズすることが望ましい場合がある。さらに、リスト・コンポーネントは、表示可能なデータ・アイテムまたはオブジェクトのタイプで制限される場合がある。したがって、各リスト・アイテムのレンダリングまたは表示をクライアント・プログラマ側で簡単に制御できる、たとえば、プログラマ定義オブジェクトをユーザに表示する方法を制御することができるリスト・アイテムを表示するシステムおよび方法を提供することが望ましい。
【０００９】
（発明の概要）
上記の問題は、大部分、本発明で述べているように、小型デバイスのディスプレイで表示するスケーラブルなアイテムのリストを管理するためのシステムと方法により解決できる。本小型デバイスで走っているクライアント・プログラムは「リスト・コンテナ・オブジェクト」をインスタンス化する。リスト・コンテナ・オブジェクトは、クライアント・プログラムが「リスト・アイテム・データ・オブジェクト」をリスト・コンテナ・オブジェクトに追加するためのＡＰＩを提供する。リスト・コンテナ・オブジェクトは、特定の実装またはプログラミング環境に適したさまざまな方法で、たとえば、アイテムを要素とするベクトル、配列、リンク・リストなどとしてこれらのリスト・アイテム・データを保持することができる。
【００１０】
リスト・コンテナ・オブジェクトは、リスト・アイテム・データ・オブジェクトを適宜表示することを担当する一定数の「アイテム・レンダラ・オブジェクト」をインスタンス化する。各アイテム・レンダラ・オブジェクトは表示されているリスト内の１行に対応する。リスト・コンテナ・オブジェクトは、リストの表示を管理するために、アイテム・レンダラ・オブジェクトの集合とインタフェースする。一実施態様では、アイテム・レンダラ・オブジェクトは「アイテム・レンダラ・インタフェース」を実装するクラスのインスタンスである。アイテム・レンダラ・インタフェースは、アイテム・レンダラ・オブジェクトとインタフェースするためのＳｅｔＤａｔａ（）、ＧｅｔＤａｔａ（）などのメソッドを含むことができる。一般的なフレームワークが説明される。そこでは、アイテム・レンダラ・オブジェクトの異なる実装に適したアイテム・レンダラ・インタフェース・メソッドを実装することにより、さまざまなタイプのオブジェクトを表示する。
【００１１】
リスト・コンテナ・オブジェクトは、所定の時間に表示されるリスト・アイテム・データ・オブジェクトの集合を追跡できる。一実施態様では、リスト・コンテナ・オブジェクトは、単に、リストの第１行に現在表示されるアイテムを指定する「開始インデックス」を保持しているだけである。たとえば上下にスクロールすることによりユーザがリストと対話すると、リスト・コンテナ・オブジェクトは、ユーザのアクションを示すユーザ・インタフェース・イベントを受け取り、表示するアイテムに対する新規開始インデックスを決定し、各アイテム・レンダラ・オブジェクトにたとえばＳｅｔＤａｔａ（）アイテム・レンダラ・インタフェース・メソッドをアイテム・レンダラ・オブジェクトごとに呼び出し、対応するリスト・アイテム・データ・オブジェクトをパラメータとして渡すことにより指示し、適切なリスト・アイテム・データ・オブジェクトを再表示するようにできる。
【００１２】
本発明の他の目的および利点は、添付図面とともに、以下の詳細な説明を読むと明白になるであろう。
【００１３】
本発明には、さまざまな修正および他の形態がありえるが、その特定の実装形態は図面の内の例を用いて示されているため、ここで詳述する。ただし、図面とその詳細な説明には本発明を開示されている特定の形態に限定する意図はなく、それと反対に、添付の請求項により定められているように本発明の精神に従い本発明の範囲内にあるすべての修正、等価物、および代替物を対象とすることを意図している。
【００１４】
（好ましい実施形態の詳細な説明）
図１−例示システム
図１は、スケーラブルなユーザ・インタフェースのアイテム・リストをサポートするシステム７２０の一実施形態を示すブロック図である。システム７２０は、デスクトップ・コンピュータまたはワークステーション、小型デバイスなどのさまざまな種類のコンピューティング・デバイスで採用することができる。
【００１５】
図１に示されているように、システム７２０はプロセッサ７１０を含むことができる。プロセッサ７１０は、ｘ８６プロセッサ、たとえばＰｅｎｔｉｕｍ（登録商標）クラス、ＰｏｗｅｒＰＣプロセッサ、ＳＰＡＲＣ  ＲＩＳＣプロセッサ・ファミリのＣＰＵなどさまざまな種類のいずれでもかまわない。システム７２０が小型デバイスである実施形態などさまざまな実施形態において、プロセッサ７１０は上記のものよりも低い能力のプロセッサでもよく、また、デジタル・シグナル・プロセッサ（ＤＳＰ）などの小型デバイス専用開発のプロセッサでもよい。プロセッサ７１０は、デスクトップ・コンピュータ・クラスのプロセッサに搭載されているようなクロック速度、１６ＭＨｚ程度の低速など、さまざまなクロック速度が設定できる。
【００１６】
システム７２０はさらに、プロセッサ７１０に結合されたメモリ７１２を含んでいる。メモリ７１２は、ＤＲＡＭ、ＳＲＡＭ、ＥＤＯ  ＲＡＭなど、あるいは磁気媒体、たとえばハード・ドライブや光記憶装置といった不揮発性メモリなど、さまざまな種類のメモリで構成することができる。メモリ７１２は、他のタイプのメモリ、あるいはその組み合わせとしてもよい。システム７２０が小型デバイスである実施形態では、メモリ７１２は、代表的なデスクトップ・コンピュータ・システムに比べて記憶容量が非常に少ない場合がある。
【００１７】
図１に示されているように、メモリ７１２はユーザ・インタフェース・アイテムのスケーラブルなリストを実装するためのコード７２４を格納できる。ユーザ・インタフェース・リスト・コード７２４は、後述のようなユーザ・インタフェース・リストを管理する際に使用するさまざまなオブジェクトを実装するコード、たとえば、クラス定義またはモジュールを備えている。
【００１８】
メモリ７１２は、さらに、ユーザ・インタフェース・リスト・コード７２４を使用するクライアント・プログラム７１８を格納することもできる。たとえば、クライアント・プログラム７１８は、後述のように、ユーザ・インタフェース・リスト・コード７２４のオブジェクトをインスタンス化し、そのオブジェクトにあるメソッドを呼び出すプログラム命令を記述できる。ユーザ・インタフェース・リスト・コード７２４はクライアント・プログラム７１８と緊密に結合されていることに注意されたい。たとえば、クライアント・プログラム７１８は、アプリケーション・プログラムでよく、またユーザ・インタフェース・リスト・コード７２４はアプリケーションのコード・ベースの一部でよい。しかし、他の実施形態では、ユーザ・インタフェース・リスト・コード７２４はクライアント・プログラム７１８とゆるく結合することもできる。たとえば、ユーザ・インタフェース・リスト・コードを、さまざまなクライアント・プログラムで使用するユーザ・インタフェース・ライブラリに含めることができる。
【００１９】
図１に示されているように、システム７２０はディスプレイ７１６を備える。ディスプレイ７１６は、ＬＣＤ（液晶ディスプレイ）、ＣＲＴ（陰極線管）ディスプレイなどさまざまなタイプのものでもよい。小型携帯電話など、代表的な小型デバイスのディスプレイは、デスクトップ・コンピュータ・システムに比べて小さいことに注意されたい。ディスプレイ７１６は、以下の説明に従って生成されるリストを含むさまざまな情報を表示するようにできる。
【００２０】
図１に示されているように、システム７２０は入力メカニズム７１４を備えることもできる。入力メカニズム７１４は、特定のシステムに適するさまざまなタイプのうちのどれでもよい。たとえば、入力メカニズムとして、キーボード、マウス、トラックボール、タッチペン、マイクロホン、モデム、赤外線受信機などを使用できる。
【００２１】
上述のように、さまざまな実施形態において、システム７２０は小型デバイスを例としている。ここで使用しているように、小型デバイスは、プロセッサおよびシステム・メモリなどのコンピューティング・リソースを備えるハードウェア・デバイスであるが、代表的なデスクトップ・コンピュータが備える以上に大きな制約がこれらのリソースの一つまたは複数に課されている。たとえば、代表的な小型デバイスは、搭載メモリが２ＭＢ以下であるが、代表的デスクトップ・システムでは６４ＭＢ以上である。さらに、代表的小型デバイスは、代表的デスクトップ・コンピューティング・システムに比べて、プロセッサ・タイプまたはプロセッサ速度またはその両方に関して処理能力が著しく劣っている。たとえば、特定のパーソナル・データ・アシスタント・デバイスは、１６ＭＨｚのプロセッサを搭載するが、代表的デスクトップ・システムは、プロセッサ速度が１００ＭＨｚ以上である。さらに、代表的小型デバイスは、デスクトップ・コンピューティング・システムの表示画面に比べて表示サイズが著しく小さい。たとえば、ハンドヘルド・コンピュータの表示画面は、通常、デスクトップのモニタの表示画面に比べて小さい。上で与えた特定の数値は一例に過ぎず、比較のため使用されていることに注意されたい。
【００２２】
小型デバイスはさらに、上述のメモリ、プロセッサ、および表示サイズ・リソースのほかに、代表的なデスクトップ・コンピューティング・システムに比べて、他のリソース・タイプに対し制約がある場合がある。たとえば、代表的な小型デバイスは、ハードディスクを備えていない、ネットワーク接続がない、あるいは間歇的なネットワーク接続を使用しているか、あるいは無線ネットワーク接続を利用しているなどである。
【００２３】
多くの小型デバイスは、携帯型であり、かつ／またはデスクトップ・コンピュータに比べて小さいが、必ずしもそうではない。また、多くの小型デバイスは、主にバッテリ駆動またはバッテリ駆動のみである。さらに、小型デバイスは、代表的デスクトップ・コンピューティング・システムに比べて、使用可能性の範囲が制限されているかまたは狭い場合がある。そこで、さまざまな実施形態では、図１に示されているシステムは、ハンドヘルド・コンピュータ、着用可能デバイス（たとえば、リストウォッチ・コンピュータ）、パーソナル・データ・アシスタント（ＰＤＡ）、「スマート」携帯電話、セットトップ・ボックス、ゲーム・コンソール、グローバル・ポジショニング・システム（ＧＰＳ）ユニット、電子テキストブック・デバイスなどを示しているが、これらに限られるわけではない。新しいクラスの消費者デバイスが急激に台頭してきたため、小型デバイスを網羅したリストを用意することは不可能である。しかし、「小型デバイス」という用語は、上述の用語の精神と範囲内に含めても妥当であると思われるデバイスを含むことが意図されている。
【００２４】
さまざまな実施形態で、ここで説明するシステムおよび方法をさらに、デスクトップＰＣやメインフレーム・コンピュータなどの汎用コンピュータ・システムで採用することもできる。
【００２５】
図２〜３：スケーラブルなユーザ・インタフェース・アイテム・リストを提供するフレームワーク
図２は、スケーラブルなユーザ・インタフェースのアイテム・リストを提供するフレームワークの一実施形態を示すブロック図である。上述のように、図のフレームワークは小型デバイス内に実装できる。
【００２６】
図２に示されているフレームワークは、リスト・コンテナ・オブジェクト１００を含む。クライアント・プログラムは、リスト・コンテナ・オブジェクト１００をインスタンス化し、リスト・コンテナ・オブジェクト１００が備えるアプリケーション・プログラミング・インタフェース（ＡＰＩ）を介してリスト・アイテム・データ・オブジェクト１０１をリスト・コンテナ・オブジェクトに追加することができる。クライアント・プログラムは、さまざまなプログラミング言語または開発環境を使用して書かれたクライアント・プログラムとすることができる。リスト・コンテナ・オブジェクト１００は、さまざまな方法で実装されたオブジェクトとすることができ、またさまざまな方法で、たとえば、クライアント・プログラムが呼び出せるオブジェクト・メソッドとして、ＡＰＩをクライアント・プログラムに提供できる。たとえば、Ｊａｖａ（登録商標）プログラミング言語を使用して実施した実施形態では、リスト・コンテナ・オブジェクトにより、次のようなシグネチャを持つメソッドを提供できる。
ｐｕｂｌｉｃ ｓｙｎｃｈｒｏｎｉｚｅｄ ｖｏｉｄ ａｄｄＩｔｅｍ （Ｏｂｊｅｃｔ ｉｔｅｍ）
【００２７】
クライアント・プログラムは、ａｄｄＩｔｅｍ（）メソッドを呼び出して、リスト・アイテム・データ・オブジェクト１０１をリスト・コンテナ１００に追加できる。リスト・コンテナは、リスト・アイテム・データ・オブジェクト１０１をさまざまな方法、たとえば、ベクトル、配列、リンク・リストなどとして格納または保持することができる。
【００２８】
図２に示されているように、所定の時間に、リスト・アイテム・データ・オブジェクト１０１のサブセットのみが実際に表示される。所定の時間に表示できるアイテムの個数は、リストのサイズ、つまり、リスト・コンテナ・オブジェクトが構成されている「行」の数に応じて決まる。リスト・コンテナ・オブジェクトをいくつかの行で構成する方法について後述する。たとえば、リスト・コンテナ・オブジェクトが１０のリスト・アイテム・データ・オブジェクトを保持するが、４行を持つようにのみ構成されている場合（図２に示されているように）、リスト・アイテム・データ・オブジェクトのサブセットのみを表示する。リスト・コンテナ・オブジェクトは、リスト・アイテム・データ・オブジェクト１０１のうちどれが現在リストの最初の行に表示されるかを指定する「開始インデックス」を保持することができる。
【００２９】
図２に示されているように、リスト・コンテナ・オブジェクト１００は、リスト・アイテム・レンダラの集合１０２Ａ〜１０２Ｄ（リスト・アイテム・レンダラ・オブジェクト１０２と総称する）とインタフェースする。各リスト・アイテム・レンダラ・オブジェクト１０２は、表示されているリスト内の１行に対応する。たとえば、図２内で、リスト・アイテム・レンダラ・オブジェクト１０２Ｃは第３の行に対応する。各リスト・アイテム・レンダラ・オブジェクト１０２はリスト・アイテム・データ・オブジェクトを適切に表示するコードを実装する。リスト・コンテナ・オブジェクト１００は、リスト・アイテム・レンダラ・オブジェクト１０２と対話して、リストの表示を管理する。
【００３０】
一実施形態では、リスト・アイテム・レンダラ・オブジェクトは、次のようなシグネチャを持つ「データ設定」メソッドを含むオブジェクトとすることができる。
ｐｕｂｌｉｃ ｖｏｉｄ ＳｅｔＤａｔａ （Ｏｂｊｅｃｔ ｄａｔａ）
【００３１】
リスト・コンテナ・オブジェクトは、単純に開始インデックスを使用して、各リスト・アイテム・レンダラ・オブジェクトに対応する適切なリスト・アイテム・データ・オブジェクトを取り出して、リスト・アイテム・レンダラ・オブジェクトのＳｅｔＤａｔａ（）メソッドにリスト・アイテム・データ・オブジェクトを渡すことができる。たとえば、図２で、リスト・コンテナ・オブジェクトは図に示されている第５のリスト・アイテム・データ・オブジェクトをリスト・アイテム・レンダラ・オブジェクト１０２Ａに渡し、図に示されている第６のリスト・アイテム・データ・オブジェクトをリスト・アイテム・レンダラ・オブジェクト１０２Ｂに渡すといったことができる。
【００３２】
ＳｅｔＤａｔａ（）メソッドの呼び出しに応じて、リスト・アイテム・レンダラ・オブジェクトは特定のタイプのリスト・アイテム・データ・オブジェクトに対し適宜ユーザ・インタフェースに、受け取ったリスト・アイテム・データ・オブジェクトを表示することができる。たとえば、電子メール・メッセージを表すリスト・アイテム・データ・オブジェクトに関しては、リスト・アイテム・レンダラ・オブジェクトは、送信者の名前、メッセージ件名などのメッセージ・オブジェクトから情報を取り出して、その情報をユーザ・インタフェースに表示することができる。
【００３３】
一実施形態では、「アイテム・レンダラ」インタフェースを定義し、さまざまなタイプのリスト・アイテム・データ・オブジェクトを表示するように設計されたリスト・アイテム・レンダラ・オブジェクトは、すべて、アイテム・レンダラ・インタフェースを実装するように期待される。Ｊａｖａ（登録商標）プログラミング言語を使用して構築されたリスト・アイテム・レンダラ・オブジェクトによって実装されたアイテム・レンダラ・インタフェースの一実施形態を図３に示す。
【００３４】
図３に示されているように、アイテム・レンダラ・インタフェースは、上述のＳｅｔＤａｔａ（）メソッドとともに、ｇｅｔＤａｔａ（）、ｓｅｔＶｉｓｉｂｌｅ（）、ｉｓＶｉｓｉｂｌｅ（）、ｇｅｔＲｅｎｄｅｒＣｏｍｐｏｎｅｎｔ（）などの追加メソッドを含めることができる。
【００３５】
リスト・コンテナ・オブジェクトとアイテム・レンダラ・オブジェクトとのインタフェースを標準化することにより、図２のフレームワークを使用して、さまざまなタイプのリスト・アイテム・データ・オブジェクトを都合よく表示できる。リスト・コンテナは、リスト・アイテム・データ・オブジェクトおよびリスト・アイテム・レンダラ・オブジェクトを、表示されるリスト・アイテム・データ・オブジェクトのタイプと独立に管理することができ、タイプ固有のロジックを特定のリスト・アイテム・レンダラ・オブジェクトの実装内にカプセル化することができる。リスト・アイテム・レンダラ・オブジェクト内のタイプ固有のロジックのカプセル化を使用すると、プログラム開発者はリスト・アイテム・データ・オブジェクトを表示する方法を完全に制御する簡単な手段を利用することができることに注意されたい。
【００３６】
さまざまな方法でリスト・アイテム・レンダラ・オブジェクトに適したクラスを指定または決定できる。一実施形態では、リスト・アイテム・データ・オブジェクトのタイプが与えられたとして、クライアント・プログラム側でリスト・コンテナ・オブジェクトに適切なリスト・アイテム・レンダラ・クラスを通知する必要がある。たとえば、クライアント・プログラムが電子メール・メッセージを表すオブジェクトをリスト・コンテナに挿入すると、クライアント・プログラムはリスト・コンテナ・オブジェクトに、リスト・アイテム・レンダラ・オブジェクトの適切なクラスが、たとえば、ＭｅｓｓａｇｅＩｔｅｍＲｅｎｄｅｒｅｒという名前のクラスであり、ＭｅｓｓａｇｅＩｔｅｍＲｅｎｄｅｒｅｒクラスはアイテム・レンダラ・インタフェースを実施し、電子メール・メッセージオブジェクトから情報を取り出し、その情報を表示するコードを含むことを通知できる。クライアント・プログラムは、さまざまな方法でリスト・コンテナ・オブジェクトに適切なリスト・アイテム・レンダラ・クラスを通知することができる。たとえば、リスト・コンテナ・オブジェクトは、クライアント・プログラムから呼び出し可能なＳｅｔＲｅｎｄｅｒＣｌａｓｓ（）メソッドを含むことができる。リスト・アイテム・レンダラ・クラスをさまざまな方法で、たとえば、リスト・アイテム・データ・オブジェクト自体の中の情報に基づいてクラスを決定することにより決定できる実施形態を考察する。
【００３７】
図４−ユーザ・インタフェースのコンポーネントの使用
リスト・アイテム・レンダラ・オブジェクトは、さまざまな方法でリスト・アイテム・ユーザ・インタフェースの表示ロジックを実施できる。一実施形態では、リスト・アイテム・レンダラ・オブジェクトは、既存のユーザ・インタフェース・コンポーネントまたはコントロールを情報の表示に使用でき、その際にたとえば、ユーザ・インタフェース・オブジェクトをインスタンス化したり、ユーザ・インタフェース・クラスから継承したりする。たとえば、Ｊａｖａ（登録商標）プログラミング言語を使用して実装された実施形態では、リスト・アイテム・レンダラ・オブジェクトは、Ｊａｖａ（登録商標）標準のＡｂｓｔｒａｃｔ　Ｗｉｎｄｏｗ　Ｔｏｏｌｋｉｔ　（ＡＷＴ）ユーザ・インタフェース・コンポーネント、たとえばｊａｖａ．ａｗｔ．Ｃａｎｖａｓコンポーネントから継承できる。したがって、ユーザ・インタフェース表示に統合ユーザ・インタフェース・リスト・コンポーネントとして表示されるものは、実際には、複数のユーザ・インタフェース・コンポーネントを備えることができる。
【００３８】
リスト・アイテム・レンダラ・オブジェクトは、もちろん、表示される情報のタイプ、特定のシステムでサポートされている特定のユーザ・インタフェース・コンポーネントなどに応じて、さまざまなタイプのユーザ・インタフェース・コンポーネントを必要ならば利用することができる。リスト・アイテム・レンダラ・オブジェクトに対しデータを設定するリスト・コンテナ・オブジェクトに対して、各リスト・アイテム・レンダラ・オブジェクトは関連するユーザ・インタフェース・コンポーネントとインタフェースしてデータを適切に表示できるが、そのために、たとえば、ユーザ・インタフェース・コンポーネント上でさまざまなペイントまたはドロー・メソッドなどを呼び出す。
【００３９】
上述のように、各リスト・アイテム・レンダラ・オブジェクトは、表示されているリスト内の特定の１行に対応する。したがって、各リスト・アイテム・レンダラ・オブジェクトと関連するユーザ・インタフェース・コンポーネントのサイズを、表示されているリストの特定の行に対応するユーザ・インタフェース表示の領域を制御するのに適したサイズに設定できる。たとえば、図４では、４つの矩形領域に分けられるユーザ・インタフェース表示の一部を示しており、それぞれリストの行に対応する。領域はそれぞれ、リスト・アイテム・レンダラ・オブジェクトと関連するユーザ・インタフェース・コンポーネントにより管理できる。たとえば、図４では、ユーザ・インタフェース・コンポーネント１５２Ａは、図２のリスト・アイテム・レンダラ・オブジェクト１０２Ａに関連付けることができ、ユーザ・インタフェース・コンポーネント１５２Ｂは、図２のリスト・アイテム・レンダラ・オブジェクト１０２Ｂに関連付けるというようにできる。
【００４０】
リスト・アイテム・レンダラ・オブジェクトを使用すると、クライアント・プログラムは、関連するユーザ・インタフェース・コンポーネントを取得できる。たとえば、図３に示されているアイテム・レンダラ・インタフェイスの実施形態では、リスト・アイテム・レンダラ・オブジェクトと関連付けられているユーザ・インタフェース・コンポーネントを取得するためのｇｅｔＲｅｎｄｅｒＣｏｍｐｏｎｅｎｔ（）メソッドを示している。
【００４１】
図４に示されているように、リスト・コンテナ・ユーザ・インタフェース・コンポーネント１５０は、リスト・コンテナ・オブジェクトに関連付けることができ、そのサイズは表示されるリストでカバーされるユーザ・インタフェース領域全体のサイズに設定される。
【００４２】
リストのサイズおよびリスト行およびリスト内の行数は、さまざまな方法で決定できる。たとえば、リスト・コンテナ・オブジェクトをインスタンス化するときに、クライアント・プログラムは、たとえば、リスト・サイズと行数をパラメータとしてコンストラクタ関数に渡すことによりこの情報を指定できる。
【００４３】
既存のユーザ・インタフェース・コンポーネントまたはコントロールを使用することで、リスト・コンテナを特定の環境またはユーザ・インタフェース・コンポーネントでサポートされているさまざまなタイプのユーザ・インタフェース・イベントに対応させることができる。たとえば、キーの押下、マウスのクリックなどのユーザ・インタフェース・イベントは、リスト・コンテナ・ユーザ・インタフェース・コンポーネント１５０からブローカ機能でリスト・コンテナ・オブジェクトに仲介し、リスト・コンテナ・オブジェクトにより表示されているリストをたとえばスクロールさせることができる。
【００４４】
上の説明では、既存のユーザ・インタフェース・コンポーネントまたはコントロールを使用してリスト・アイテム・データを表示するといったが、リスト・アイテム・レンダラ・オブジェクトはもちろん、望ましい場合に、ユーザ・インタフェース表示ロジック自体をすべて実装することができる。
【００４５】
図５−リスト表示の例
上述のように、ここで説明したシステムと方法は、ユーザ・インタフェース・リスト内のさまざまなタイプのデータ・アイテムを表示するために適用できる。図５は、このようなユーザ・インタフェース・リストの１つを示すスクリーン・ショットである。図５は、８個の行からなるリストを示しており、それぞれ送信者の名前、送信日、メッセージのサイズなどの電子メール・メッセージのヘッダ情報を表示する。
【００４６】
図５のリストは、多くの共通のユーザ・インタフェース・リスト・コンポーネントに似た表示である。ただし、図５のリストは、ここで説明したように実現され動作する。
【００４７】
図６−ユーザ・インタフェース内の表示用にリストを作成する
図６は、図２および３を参照し、上記のフレームワークに従ってユーザ・インタフェースに表示するためのリストを作成する方法の一実施形態を示す流れ図である。
【００４８】
ステップ２００で、クライアント・プログラムはリスト・コンテナ・オブジェクトをインスタンス化する。ステップ２００は、特定の実装およびプログラミング環境に応じてさまざまな方法で実施できる。
【００４９】
ステップ２０２で、クライアント・プログラムは上述のようにリスト・アイテム・データ・オブジェクトをリスト・コンテナ・オブジェクトに追加する。
【００５０】
ステップ２０４で、クライアント・プログラムは、インスタンス化するリスト・アイテム・レンダラ・オブジェクトに適したクラスを指定する。上述のように、リスト・アイテム・レンダラ・オブジェクトは、ステップ２０２で追加した特定のリスト・アイテム・データ・オブジェクトを表示できるようにするクラスとすべきである。クライアント・プログラムでは、たとえば、リスト・コンテナ・オブジェクトのＳｅｔＲｅｎｄｅｒＣｌａｓｓ（）メソッドを呼び出してリスト・アイテム・レンダラ・クラスを指定できる。
【００５１】
ステップ２０６で、リスト・コンテナ・オブジェクトは、ステップ２０４で指定したクラスの適切な数のリスト・アイテム・レンダラ・オブジェクトをインスタンス化する。上述のように、リスト・アイテム・レンダラ・オブジェクトの個数は、ユーザ・インタフェースに表示されるリスト行の個数に対応している。ステップ２０６で、リスト・コンテナ・オブジェクトはさらに、リスト・アイテム・レンダラ・オブジェクトごとに対応するデータ・オブジェクトを設定する。上述のように、リスト・コンテナは、単に、各リスト・アイテム・レンダラ・オブジェクトのＳｅｔＤａｔａ（）メソッドを呼び出して、適切なリスト・アイテム・データ・オブジェクトをパラメータとして渡すだけである。最初の表示では、リスト・アイテム・レンダラ・オブジェクトに渡されたリスト・アイテム・データ・オブジェクトは通常、リストの先頭のリスト・アイテム・データ・オブジェクトに対応する。たとえば、４つの表示されている行からなるリストでは、最初の４つのリスト・アイテム・データ・オブジェクトをリスト・アイテム・レンダラ・オブジェクトに渡すことができる。
【００５２】
ステップ２０８で、各リスト・アイテム・レンダラ・オブジェクトはステップ２０６で受け取った対応するリスト・アイテム・データ・オブジェクトを表示する。上述のように、リスト・アイテム・データ・オブジェクトは、特定のタイプのリスト・アイテム・データ・オブジェクト、アプリケーション、開発プラットフォームなどに適したさまざまな方法で表示することができる。
【００５３】
ステップ２１０で、リスト・コンテナ・オブジェクトは、ユーザ・インタフェース・イベントなどの処理イベントを開始する。たとえば、リスト・コンテナ・オブジェクトは、リストをスクロールするなどのさまざまなユーザ・アクションを表すイベントを受け取って処理することができる。このようなイベントについては、リスト・コンテナは、後述のようにリスト表示を更新することができる。
【００５４】
上記のように、図６は、ユーザ・インタフェースに表示するリストを作成する方法の一実施形態を示しており、図６のさまざまなステップについて異なる順序で追加、省略、組み合わせ、変更、実行などを行える。たとえば、図６は、単一のステップでリスト・アイテム・データ・オブジェクトをリスト・コンテナ・オブジェクトに追加することに関して説明されている。ただし、リスト・アイテム・データ・オブジェクトは、もちろんリストの操作中にまざまな位置でリスト・コンテナに追加できる。
【００５５】
他の例として、リスト・アイテム・レンダラ・オブジェクトのクラス決定およびリスト・アイテム・レンダラ・オブジェクトのインスタンス化のステップは、図６に示されているのと異なるさまざまな方法で実行できる。たとえば、リスト・コンテナ・オブジェクトは、リスト・アイテム・レンダラ・オブジェクトの適切なクラスを決定する他のオブジェクトとインタフェースし、オブジェクトのインスタンス化を行ったり、管理したりすることなどができる。
【００５６】
図７−リストの動的動作
図７は、ユーザ・インタフェース・リストの動的動作を管理する一実施形態を示す流れ図である。
【００５７】
ステップ３００で、ユーザは現在のリスト位置を変更する。ユーザは、ユーザ・インタフェースとリスト・コンテナ・オブジェクトでサポートされている各種の方法で現在のリスト位置を変更できる。たとえば、図５の例に示されているように、ユーザ・インタフェースは、示されている「Ｕｐ」および「Ｄｏｗｎ」ボタンなどのボタンを含むことができる。ユーザがこれらのボタンのいずれかをクリックすると、クライアント・プログラムは、リスト・コンテナを上下に移動する命令を出すように動作することができる。たとえば、一実施形態では、リスト・コンテナは次のようなメソッドを備えることができる。
2004501409.tif 000003
【００５８】
クライアント・プログラムは、これらのリスト・コンテナ・メソッドを適宜呼び出すことができる。
【００５９】
リスト・コンテナ・オブジェクト自体は、さまざまなユーザ・インタフェース・イベントを受け取り、応答するようにも構成できる。たとえば、上述のように、リスト・コンテナ・オブジェクトは、これらの機能をサポートするユーザ・インタフェース・オブジェクトに基づく。
【００６０】
ステップ３０２で、リスト・コンテナ・オブジェクトは、ステップ３００で実行したアクションに基づき、リストの新しい開始インデックスを決定する。図２について上述したように、リスト・コンテナは、所定の時間に表示される第１のリスト・アイテム・データ・オブジェクトを指定する開始インデックスを維持できる。ステップ３０２で、リスト・コンテナ・オブジェクトは、適宜この開始インデックスを更新できる。たとえば、ユーザがステップ３００のページを下へスクロールした場合、リスト・コンテナは単に、たとえば、表示されているリスト行の個数を開始インデックスに加えるだけで開始インデックスを大きくすることができる。
【００６１】
開始インデックスが更新されると、ステップ３０４でリスト行が再表示される。リスト・コンテナ・オブジェクトは、単純に開始インデックスを使用して、各リスト・アイテム・レンダラ・オブジェクトの対応するリスト・アイテム・データ・オブジェクトを取り出して、たとえば上述のようにレンダラ・オブジェクトのＳｅｔＤａｔａ（）メソッドを呼び出して、リスト・アイテム・レンダラ・オブジェクトに表示する新規データを通知することができる。
【００６２】
ステップ３０６で、各リスト・アイテム・レンダラ・オブジェクトは、同様に上述のように、更新されたリスト・アイテム・データ・オブジェクトを表示する。
【００６３】
上記のように、図７は、リストの動的操作を管理する方法の一実施形態を示しており、図７のさまざまなステップについて異なる順序で追加、省略、組み合わせ、変更、実行などを行える。たとえば、図７のステップ３００は、現在のリスト位置の変更を開始するユーザについて説明されている。リスト位置のこのような変更はもちろん、プログラムで行うこともできる。
【００６４】
以上、実施形態について少なからず詳しく述べたが、上記の開示を完全に理解したとき、当業者にはさまざまな変形形態および修正が明白となろう。以下の請求項はそのようなすべての変形形態および修正を包含すると解釈されるものとする。
【図面の簡単な説明】
【図１】
スケーラブルなユーザ・インタフェースのアイテム・リストをサポートするシステムの一実施形態を示すブロック図である。
【図２】
スケーラブルなユーザ・インタフェースのアイテム・リストを提供するフレームワークの一実施形態を示すブロック図である。
【図３】
リスト・アイテム・レンダラ・オブジェクトによって実装されるアイテム・レンダラ・インタフェースの一実施形態の図である。
【図４】
リスト・アイテム・レンダラ・オブジェクトと関連するユーザ・インタフェース・コンポーネントによるユーザ・インタフェースの表示の一部の管理を示す図である。
【図５】
本発明で説明しているように、実装されているユーザ・インタフェース・リストの実施例を示すスクリーン・ショットである。
【図６】
本発明のフレームワークに従ってユーザ・インタフェースに表示するためのリストを作成する方法の一実施形態を示す流れ図である。
【図７】
ユーザ・インタフェース・リストの動的動作を管理する一実施形態を示す流れ図である。
【図１】
2004501409.tif 000004
【図２】
2004501409.tif 000005
【図３】
2004501409.tif 000006
【図４】
2004501409.tif 000007
【図５】
2004501409.tif 000008
【図６】
2004501409.tif 000009
【図７】
2004501409.tif 000010
【国際公開パンフレット】
2004501409.tif 000011
2004501409.tif 000012
2004501409.tif 000013
2004501409.tif 000014
2004501409.tif 000015
2004501409.tif 000016
2004501409.tif 000017
2004501409.tif 000018
2004501409.tif 000019
2004501409.tif 000020
2004501409.tif 000021
2004501409.tif 000022
2004501409.tif 000023
2004501409.tif 000024
2004501409.tif 000025
2004501409.tif 000026
2004501409.tif 000027
2004501409.tif 000028
2004501409.tif 000029
2004501409.tif 000030
2004501409.tif 000031
2004501409.tif 000032