説明

異種装置プラットフォーム間を移動するプラットフォーム特定型のグラフィカルユーザインターフェイスのウィジェットの変換

【課題】異種装置プラットフォームの表示画面のサイズに適合させるために、GUIウィジェットを変換すること。
【解決手段】SGUIシステムは、プラットフォーム独立型のプレゼンテーションモデルを含む。プラットフォーム独立型のプレゼンテーションモデルは、プラットフォーム独立型のGUIウィジェットを含んでいる。プラットフォーム独立型のGUIウィジェットは、異種装置プラットフォーム上にあるアプリケーションGUIが使用するプラットフォーム特定型のプレゼンテーションを生成するため、変換ルールにより選択的に変換されてもよい。選択されたプラットフォーム独立型のGUIウィジェットに、優先順位が適用可能な変換ルールが設定されてもよい。最も高い優先順位の変換ルールが、選択されたプラットフォーム独立型のGUIウィジェットの変換用に適用されてもよい。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、グラフィカルユーザインターフェイス(GUI)に関し、特に、異種装置プラットフォーム間を移動するプラットフォーム特定型のGUIウィジェットの変換に関する。
【背景技術】
【0002】
パソコン、個人情報端末(PDA)、無線電話、そしてページャーなどの個人向けの電子装置(携帯装置)が、ここ近年流行している。これらの携帯装置は、無線や有線ネットワークを利用した通信を行えるので、モバイルコンピューティングを可能にしている。ネットワークは、これらの携帯装置に、情報ソースおよび他の類似の装置への接続を提供している。一般的に、ネットワークはインターネット上での通信も含んでいる。
【0003】
モバイルコンピューティング装置は、ある型のユーザインターフェイス(UI)を持っている。ある装置のユーザインターフェイスの特性は、その装置の処理能力とハードウェアによる。例えば無線電話には、限られた処理能力、及び限られたグラフィックとユーザインターフェイス能力しか有していない小さなグラフィカルユーザインターフェイス(GUI)しか与えられていない。逆に、ノートパソコンには、相対的に拡張性のあるグラフィック能力とユーザインターフェイス能力、そして処理能力が与えられている。携帯装置の人気が高まるに連れて、アプリケーションのメインプラットフォームは、デスクトップ型パソコンから携帯装置へとシフトすると思われる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
携帯装置のアプリケーションの開発が困難な1つの理由は、携帯装置の異質性である。多種多様なディスプレイのサイズ、解像度、コマンドの入力方法、そしてGUIライブラリがあるため、アプリケーションの開発者は、各装置プラットフォームのグラフィカルユーザインターフェイス(GUI)用に、アプリケーションを再設計及び再実装する必要がある。たくさんの異なる携帯装置が利用され、または市場に参入しているので、再設計と再実装に、たくさんの労働力と生産コストを要する努力が現在もなされている。
【0005】
1つの解決策は、モデルベース技術による開発である。1つの例が、ユーザインターフェイスモデリングである。一般的に、ユーザインターフェイスモデリングは、プラットフォームモデル、プレゼンテーションモデル、そしてタスクモデルを含む。プラットフォームモデルでは、サポートされる装置用のユーザインターフェイスを形成する操作機能が示される。プレゼンテーションモデルでは、サポートされる装置に関連したユーザインターフェイスの外観に関する階層、及び様式の選択と配置が示される。タスクモデルでは、サポートされる装置のユーザが実行するタスクが示される。この技術を使用することにより、特定の装置用のインターフェイスの生成のため、異なるモデル間におけるマッピングが開発されると思われる。
【0006】
モデルベース型アプローチの実装は、モデルを実装するためのハイレベル言語の開発を含んでいる。さらに開発者は、装置をサポートするためにモデルの重要な部分を設定し、かつ特定する。ハイレベル言語は非常に複雑なので、モデルベース型アプローチを実行する前に、開発者は、実行メカニズムの知識とハイレベル言語を共に学ぶ必要がある。さらにモデルベース型アプローチは、開発者が作った、異なるモデルに基づくコードを作成する。装置のユーザインターフェイス要求においては小さな差異でも、2つの似たタイプの装置用に生成されたコードにおいては大きな差異になることもある。従って開発者に求められるプログラミング技能のレベルは、とても重要になってくる。
【課題を解決するための手段】
【0007】
本発明では、ノンモデルベース型の拡張性のあるグラフィカルユーザインターフェイス(SGUI)システムを開示している。SGUIシステムにより、拡張性のあるアプリケーションは、複数の異種装置プラットフォーム上において動作することが可能となる。拡張性のあるアプリケーションは、アプリケーション・グラフィカルユーザインターフェイス(GUI)を含んでもよい。アプリケーションGUIは、拡張性のあるアプリケーションが動作している異種装置プラットフォームの中の1つのユーザインターフェイスで動くSGUIシステムに適合していてもよい。アプリケーション開発者は、モデルベース型のアプローチの複雑さを伴わない異種装置プラットフォーム内において、ユーザインターフェイス機能から独立している
複数のアプリケーションGUIを設定してもよい。さらに異種装置プラットフォームに関連しているユーザインターフェイスとGUIライブラリの複雑さも、SGUIシステムを利用しているアプリケーション開発者により解消されることが可能になる。
【0008】
SGUIシステムは、拡張性のあるGUIライブラリ、カスタマイズモジュール、そしてレンダーマネージャモジュールを有している。カスタマイズモジュールは、タスクマネージャモジュールと変換マネージャモジュールを有している。拡張性のあるアプリケーションが起動、または異種装置プラットフォーム(ここでは、ターゲット装置プラットフォーム)へ移ると、アプリケーションGUIの中間表現が、拡張性のあるアプリケーションによりインスタンス化される。その中間表現は、階層的な構造において、少なくとも1つの論理パネルと、少なくとも1つの拡張性のあるグラフィカルユーザインターフェイス(SGUI)コンポーネントの表示を含むことが可能な装置プラットフォーム独立型の論理構造形式におけるプラットフォーム独立型のプレゼンテーションモデルである。中間表現内におけるノードは、論理パネルを表すコンテナノードと、SGUIコンポーネントを表すコンポーネントノードを含んでもよい。
【0009】
中間表現は、アプリケーションGUIのアプリケーション開発者により特定されたプロパティ、及びターゲット装置プラットフォームの機能に基づいたカスタマイズモジュールによりカスタマイズされたものであってもよい。中間表現のカスタマイズにより、プラットフォーム独立型のプレゼンテーションモデルは、プラットフォームの特定表示を表している特定のプラットフォーム依存型の論理構造へと変換する。
【0010】
プラットフォーム特定型のプレゼンテーションの開発中において、カスタマイズモジュールを用いた変換カスタマイズを実行してもよい。変換は、プラットフォーム独立型のプレゼンテーションモデルのノードに関連するプラットフォーム独立型のGUIウィジェットの選択的な処理を含む。プラットフォーム独立型のGUIウィジェットは、SGUIコンポーネント単体、またはSGUIコンポーネント複合であってもよい。プラットフォーム独立型のGUIウィジェットへマップするプラットフォーム特定型のGUIにより、プラットフォーム特定型のプレゼンテーションのページのサイズがターゲット装置プラットフォームの表示画面を超えたとき、特定のプラットフォーム独立型のGUIウィジェットの変換が起きてもよい。
【0011】
変換の原因となったプラットフォーム独立型のGUIウィジェットに基づいて、適切な変換ルールが特定されてもよい。適切な変換ルールは、変換ルールの種類に応じてカテゴリー化されてもよい。またカテゴリー化の後、変換ルールに優先順位が設定されてもよい。最も高い優先順位の変換ルールは、変換をトリガしたプラットフォーム独立型のGUIウィジェットに適用されてもよい。
【0012】
変換の原因となったプラットフォーム独立型のGUIウィジェットがSGUIコンポーネント複合であったとき、SGUIコンポーネント複合内のSGUIコンポーネント単体は、各々のSGUIコンポーネント単体用に特定された重要プロパティに基づいて、SGUIコンポーネント単体に最初にSGUIコアコンポーネント、及びSGUIオプショナルコンポーネントとしてカテゴリー化される。各々のSGUIコンポーネント単体に対し、変換ルールに優先順位を設定してもよい。最も高い優先順位の変換ルールは、各々のSGUIコンポーネント単体に適用されてもよい。
【0013】
プラットフォーム独立型のGUIウィジェットの変換により、1つあるいはそれ以上の異なるプラットフォーム独立型のGUIウィジェットに変換する複数のプラットフォーム独立型のGUIウィジェットが作成されてもよい。プラットフォーム独立型のプレゼンテーションモデル内において、コンテナノードは、各々がプラットフォーム独立型のGUIウィジェットを表している複数の第1コンポーネントノードに関連してもよい。もしコンテナノードにより、ページのサイズがターゲット装置プラットフォームの表示画面より大きくなったら、コンポーネントノードにより表されるプラットフォーム独立型のGUIウィジェットが、第2コンポーネントノードに関連している1つ、あるいはそれ以上の異なるプラットフォーム独立型のGUIウィジェットに変換されてもよい。第2コンポーネントノードは、論理関係を第1コンポーネントノードと置き換えるために、プラットフォーム独立型のプレゼンテーションモデルにリンクされてもよい。
【0014】
SGUIシステムの魅力的な特徴は、変換ルールをタイプ別にカテゴリー化することである。変換ルールは、「1から1タイプへの変換ルール」、「1から複数タイプへの変換ルール」、「複数の同クラスから1タイプへの変換ルール」、及び「複数から複数タイプへの変換ルール」の中の1つにカテゴリー化が可能である。「1から複数タイプへの変換ルール」、「複数の同クラスから1タイプへの変換ルール」、及び「複数から複数タイプへの変換ルール」の変換ルールがノードに適用されるとき、リンクが実行されてもよい。
【0015】
SGUIシステムの別の魅力的な特徴は、特定された変換ルールに優先順位を設定することである。優先順位設定の一環として、変換ルールは「複数から複数タイプへの変換ルール」としてカテゴリー化され、カテゴリー化された変換ルールには最も低い優先順位が設定されてもよい。またサポートされていない変換を削除するため、変換ルールは選別されてもよい。さらに、変換されたプラットフォーム独立型のGUIウィジェットにおけるスペース縮小に基づき、変換ルールに優先順位が設定されてもよい。そして最も高い順位の変換ルールが、プラットフォーム独立型のGUIウィジェットを変換するために、選択されてもよい。
【0016】
SGUIシステムの別の魅力的な特徴は、SGUIコンポーネント複合を含んでいることである。変換ルールは、SGUIコンポーネント複合内において、最初にオプショナルとしてカテゴリー化されたSGUIコンポーネント単体に変換される。もしSGUIコンポーネント複合が、表示画面のページに適合しない場合、SGUIコンポーネント複合が表示画面のページに適合するまで、SGUIコアコンポーネントは変換を続ける。
【発明の効果】
【0017】
本発明により、異種装置プラットフォーム間を移動するグラフィカルユーザインターフェイスのウィジェットを特定し、ウィジェットに適用される変換ルールに優先順位を設定し、その優先順位の中から最も高い優先順位の変換ルールを用いることにより、グラフィカルユーザインターフェイスのウィジェットの変換を行う。
【図面の簡単な説明】
【0018】
【図1】拡張性のあるグラフィカルユーザインターフェイスシステムのブロック図である。
【図2】図1に示す拡張性のあるグラフィカルユーザインターフェイスシステムの一部のより詳細なブロック図である。
【図3】図1に示す拡張性のあるグラフィカルユーザインターフェイスシステムが利用した中間表現の一例を示した図である。
【図4】図1に示す拡張性のあるグラフィカルユーザインターフェイスシステムの別の部分のより詳細なブロック図である。
【図5】図1に示す拡張性のあるグラフィカルユーザインターフェイスシステムを使っているグラフィカルユーザインターフェイスコンポーネントの変換例を示す図である。
【図6】図1に示す拡張性のあるグラフィカルユーザインターフェイスシステムを使っているグラフィカルユーザインターフェイスコンポーネント複合の変換例を示す図である。
【図7】図1に示す拡張性のあるグラフィカルユーザインターフェイスシステムの動作を示している流れ図である。
【図8】図7に示す流れ図の続きである。
【図9】図7に示す流れ図の続きである。
【図10】図1に示す拡張性のあるグラフィカルユーザインターフェイスシステムで動作している装置を有している通信システムの一例である。
【図11】図10に示す通信システム内の拡張性のあるグラフィカルユーザインターフェイスシステムの動作を示す流れ図である。
【図12】図11に示す流れ図の続きである。
【図13】図1に示す拡張性のあるグラフィカルユーザインターフェイスシステムで動作している装置を有する通信システムの他の例である。
【図14】拡張性のあるグラフィカルユーザシステムが利用しているプラットフォーム独立型のプレゼンテーションモデルの例である。
【図15】図13の通信システム内をGUIマイグレーションしている間における拡張性のあるグラフィカルユーザインターフェイスシステムの動作を示す流れ図である。
【図16】図1の拡張性のあるグラフィカルユーザインターフェイスシステムを使っているプラットフォーム独立型のプレゼンテーションモデル内における変換例である。
【図17】図13のグラフィカルユーザインターフェイスシステムでページをカスタマイズしている流れ図である。
【図18】図16に示す流れ図の続きである。
【図19】図16に示す流れ図の続きである。
【図20】図16に示す流れ図の続きである。
【図21】図1の拡張性のあるグラフィカルユーザインターフェイスにおける実行状態の変換例を表しているフロー図である。
【発明を実施するための形態】
【0019】
本発明における他の特徴と利点は、図面と以下の詳細な説明で明らかにされる。好ましい実施形態の以上の説明は、ただの一例に過ぎず、本発明の範囲を定義する特許請求の範囲を制限するものではない。
【0020】
本発明の好ましい実施形態において、異なる複数の装置プラットフォーム上で動作することのできる拡張性のあるアプリケーションと共に使う拡張性のあるグラフィカルユーザインターフェイス(SGUI)アーキテクチャを説明する。拡張性のあるアプリケーションは、異種装置プラットフォームに対応付けられた多種のユーザインターフェイスと共に動作するように、SGUIシステムにより動的に適合されてもよい。SGUIシステムを使用することにより、拡張性のあるアプリケーションを、その拡張性のあるアプリケーションが動作することになる異種装置プラットフォームから独立したユーザインターフェイス機能を有するように設計できる。拡張性のあるアプリケーションの開発者は、SGUIシステムの使用をしなければ、種々の異種装置プラットフォームへのユーザインターフェイスを作成する時に、多くの複雑なプログラム作成が必要になるが、SGUIシステムを使用すると、これらを避けることができる。さらに、SGUIシステムは、モデルベース型の技術のようなモデル構造がなくても、異種装置プラットフォームで動作する。このようなわけで、アプリケーション開発者によるプログラミングは比較的簡単であり、モデル構築、及び/またはモデル操作技術は必要でない。
【0021】
拡張性のあるアプリケーションには、異なるプラットフォーム装置上で動作することのできるアプリケーションが含まれる。拡張性のあるアプリケーションのほとんどは、異種装置プラットフォームの表示画面用のプレゼンテーションを生成する機能を有している。プレゼンテーションは、視覚的な素材からなる1ページまたはそれ以上のページ(またはプレゼンテーション単位)を含んでもよい。視覚的な素材は、異種装置プラットフォームのユーザのために、表示画面上に配置されてもよい。拡張性のあるアプリケーションは、アプリケーションGUIでプレゼンテーションを生成してもよい。アプリケーションGUIは、拡張性のあるグラフィカル・ユーザインターフェイス・アプリケーションのコンポーネントである。
【0022】
異種装置プラットフォームは、表示機能と拡張性のあるアプリケーションを動作させる機能を兼ね備えた装置であってもよい。典型的な異種装置プラットフォームは、無線電話、ポケットPC、個人情報端末(PDA)、ぺージャー、デスクトップコンピュータ、ノートブックコンピュータ、車載コンピュータ、または拡張性のあるアプリケーションを実行する機能のある表示画面を兼ね備えた有線/無線装置を含んでもよい。また異種装置プラットフォームは、例えばWindows NT(登録商標)、Windows 2000(登録商標)、Linux(登録商標)、Solaris(登録商標)、MacOS(登録商標)、Palm(登録商標)、Windows CE(登録商標)、独自のオペレーティングシステム、またはその他の装置に機能性を提供するオペレーティングシステムを含んでもよい。オペレーティングシステムは、拡張性のあるアプリケーションを起動させたりサポートしたりするための機能を提供してもよい。
【0023】
異種装置プラットフォームは、拡張性のあるアプリケーションを動作させたり、機能を提供したりするハードウェアまたはソフトウェアを含んでいてもよい。例えば、メモリのような記憶手段を含んでいてもよい。記憶手段は、例えば、オペレーティングシステム、拡張性のあるアプリケーション、および装置プラットフォームに関する他の情報を記憶してもよい。さらに、異種装置プラットフォームは、ユーザインターフェイスを含んでもよい。ユーザインターフェイスは、例えば、表示装置、キーボード、マウスに似たポインティングデバイス、タッチスクリーン、キーパッド、オーディオ機能、または異種装置プラットフォームのユーザ用のインターフェイスを提供する手段を含んでもよい。
【0024】
異種装置プラットフォームの機能は、多岐に異なっていてもよい。ここで言う機能とは、異種装置プラットフォームと拡張性のあるアプリケーションの動作に影響を与えるハードウェア的な特徴と装置機能のことである。つまり、例えば、装置プラットフォームのタイプ(例:無線電話、PDA,ラップトップPC等)、利用可能なユーザインターフェイスライブラリ、表示画面のサイズと解像度である。さらに、代表的な機能として、表示画面に関するユーザインターフェイス、計算処理容量、メモリのサイズ、プラットフォームの使用、または装置プラットフォームのユーザインターフェイスと動作に影響するその他のパラメータが挙げられる。
【0025】
本発明の好ましい実施形態において、異種装置プラットフォームは、Java(登録商標)の技術で作られた拡張性のあるアプリケーションを実行する移動装置である。Java(登録商標)の技術は、Java(登録商標)VM(Virtual Machine;バーチャルマシン)上で動くJava(登録商標)プログラミング言語を有している。Java(登録商標)VMは、多種に渡る装置プラットフォーム上に移植されてもよい。典型的なJava(登録商標)技術の実装は、ノートPCの装置プラットフォーム上で動くJava(登録商標)VM、ポケットPCの装置プラットフォーム上にあるパーソナルJava(登録商標)VM、無線電話の装置プラットフォーム上で動くJava(登録商標)KVMである。他の実施形態においては、他のプログラミング言語/技術、および他の装置プラットフォームが、SGUIシステムで使用される。他のプログラミング言語/技術とは、C言語、C++言語、マイクロソフトのCシャープ言語、及び/または他の技術である。
【0026】
SGUIシステムは、拡張性のあるアプリケーションに対応付けられたアプリケーションGUIの中間表現をインスタンス化させる。中間表現と同様にアプリケーションGUIは、非装置に特定したもの(例えば、装置プラットフォームから独立しているもの)であるが、装置プラットフォームと適合性がある方が好ましい。プラットフォーム独立型のプレゼンテーションモデルにおける中間表現のインスタンスの作成は、拡張性のあるアプリケーションのアプリケーションGUIに基づいてもよい。中間表現は、拡張性のあるアプリケーションにより生成されるプレゼンテーション用の論理構造を提供してもよい。この論理構造を、異種装置プラットフォーム用にカスタマイズして、SGUIシステムによるプラットフォーム特定型のプレゼンテーションを作成してもよい。カスタマイズは、プレゼンテーションを表示させる異種装置プラットフォームの機能と、アプリケーションGUI内で特定されたプロパティに基づいてもよい。SGUIシステムによるカスタマイズは、装置プラットフォーム用のグラフィカルユーザインターフェイスの開発において共通な3つの問題を提起している。即ちそれらは、表示画面サイズ、入力方法、及びユーザインターフェイスライブラリである。
【0027】
・表示画面サイズ
拡張性のあるアプリケーションは、複数の異種装置プラットフォーム上で動作することができる。よって、拡張性のあるアプリケーションを開発しているアプリケーションプログラマは、表示画面用に特定なサイズを採り上げる必要はない。例えば、ドコモ 503i無線電話は120×130画素の表示画面を兼ね備え、コンパックのIPAQポケットPCは320×240画素の表示画面を兼ね備え、典型的なノートPCは、1024×768画素の表示画面を兼ね備えている。表示画面のサイズは、表示画面上におけるプレゼンテーションのページを形成しているコンポーネントのレイアウトや、視覚的なプレゼンテーションの品質に影響を及ぼすこともある。
【0028】
ページを形成するコンポーネントを、グラフィカルユーザインターフェイス(GUI)コンポーネントと呼んでもよい。GUIコンポーネントは、表示画面の状況に応じて、固定およびアニメ化が可能であり、及び/またはインタラクティブであるプレゼンテーションの表示機能である。GUIコンポーネントの典型例は、グラフィカルラベル、グラフィカルボタン、グラフィカルチェックボックス、グラフィカルテキストフィールド、グラフィカルテキストエリア、グラフィカルリスト/テーブル、グラフィカルバックグラウンド、データ入力フィールド、プルダウンメニュー、及び/または表示画面上に表示する機能を兼ね備えているものである。GUIコンポーネントは、固有の識別子と一緒にGUIライブラリに保存されてもよい。この識別子により、例えば、既に述べられているアプリケーションGUIは、GUIコンポーネントでプレゼンテーションを作る。
【0029】
プレゼンテーションは、表示画面のサイズの関数として、複数ページに細かく分割されてもよい。例えば、ノートブックPCのような相対的に大きな表示画面は、大きなサイズ、及び/またはたくさんの量のGUIコンポーネントを含んだ大きなページを表示することができる。一方、例えば、無線電話のような小さな画面は、かなりコンパクトなGUIコンポーネントを持った小さなページのみ表示することができる。さらに、小さなページは、表示画面上において、一度にほんの少しのGUIコンポーネントしか表示できない。
【0030】
SGUIシステムは、異種装置プラットフォームの表示画面を最大限に埋めるために用いることもできる。中間表現を用いることにより、SGUIシステムは、ダイナミックなレイアウトとアプリケーションGUIのグラフィカルユーザインターフェイス(GUI)変換を提供できる。このようにアプリケーションGUIは、拡張性のあるアプリケーションが動いている異種装置プラットフォームの表示画面に拡大縮小されてもよい。
【0031】
・入力方法
異種装置プラットフォームは、また拡張性のあるアプリケーションとアプリケーションGUIに対応付けられている異なる入力方法を兼ね備えていてもよい。例えば入力方法として、無線電話はキーパッド、ポケットPCは手書き入力用のペン、ノートブックPCはキーボード、及び/またはマウスのようなポインティングデバイスを利用する。従って、拡張性のあるアプリケーションのアプリケーション開発者は、対応しているアプリケーションGUI用特定の入力方法を採用しなくてもよい。
【0032】
SGUIシステムは、異種装置プラットフォームに対応できる装置プラットフォーム独立型のGUIイベントを提供する。GUIイベントは、ページ上の視覚的な素材内における状態の変化である。ユーザが、異種装置プラットフォームのユーザインターフェイスと対話することにより、GUIイベントを引き起こされることもある。SGUIシステムにより、装置プラットフォーム特定のGUIイベントを、装置プラットフォーム独立のGUIイベントに、動的に変換される。このように、SGUIシステムを利用している拡張性のあるアプリケーションは、異種装置プラットフォームのユーザインターフェイスと適合性があり、かつ異種装置プラットフォームのユーザインターフェイスから独立しているGUIイベント機能を持つように設計される。
【0033】
・ユーザインターフェイスライブラリ 異種装置プラットフォームは、また異なるアプリケーションプログラムインターフェイス(API)をサポートしてもよい。APIは、広範囲にわたる機能を提供する出来合いのソフトウェアコンポーネントの集まりの1つである。例えば、Java(登録商標)技術は、Java(登録商標)プリケーションプログラムインターフェイス(API)を持っている。Java(登録商標)(API)は、Java(登録商標)型プログラム内で実装される標準的な機能を提供するソフトウェアコンポーネントの集まりである。
【0034】
Java(登録商標)プラットフォームは、「一度書いたらどこでも動く(Write Once, Run Anywhere; WORA)」を主張しているが、移動装置環境で開発しているJava(登録商標)アプリケーションにとって、これは当てはまらないこともある。例えば無線電話で、Java(登録商標)プログラミング言語は、Java(登録商標) 2 Micro Edition(J2ME)であってもよい。基本的にJ2MEのデザインは、柔軟性と分断に基づいている。柔軟性を成し遂げるため、J2MEは装置プラットフォーム特定型のAPIを設定している。装置プラットフォーム特定型のAPIは、プロファイルとして言及される。J2MEアプリケーションは、特定の装置プラットフォームで動くように書かれているので、異なるプロファイルは分断してしまう。例えば、ドコモ503iの無線電話はJ2ME DoJa APIとして言及されるJava(登録商標)プロファイルをサポートしてもよい。同様に、ポケットPCはPersonal Java(登録商標) AWT APIを、ノートブックパソコンはJava(登録商標)2 Standard Edition (J2SE) SWING APIをサポートしてもよい。
【0035】
APIは、異種装置プラットフォームによって、異なるGUIライブラリをサポートしてもよい。例えば、PDAは、対応しているGUIライブラリ内において、より多くのタッチスクリーン関連のGUIコンポーネントを兼ね備えていてもよい。一方、例えば無線電話は、対応しているGUIライブラリ内において、指示関連のGUIコンポーネントしか兼ね備えていてなくてもよい。既に知られている通り、GUIライブラリは、プレゼンテーションを作成するためにアクセス可能な既成のGUIコンポーネントを編集したものである。
【0036】
1つの実施形態のSGUIシステムは、異種装置プラットフォームと適合性があり、かつその上でサポートされる装置プラットフォーム独立型APIを提供する。装置プラットフォーム独立型のAPIは、異種装置プラットフォームに対応付けられている異なるGUIライブラリへ、ブリッジング(橋渡し)機能を提供する。したがって、SGUIシステムを利用しているアプリケーション開発者は、異種装置プラットフォーム用のプラットフォーム特定型のGUIプレゼンテーションを開発するため、異なるGUIライブラリに精通している必要はない。
【0037】
SGUIシステムの典型的な動作例は、拡張性のあるアプリケーションがある装置プラットフォームから別の装置プラットフォームへマイグレーションすることである。拡張性のあるアプリケーションのマイグレーションは、ソース(供給元)装置プラットフォームからターゲット装置プラットフォームへ、動作中の拡張性のあるアプリケーションのインスタンスのマイグレーションを含んでいる。例えば、会社でマウスやキーボードを使い、ラップトップPCで、Eメールに関連している拡張性のあるアプリケーションを操作しているユーザを考えてください。ここで仕事の完了前に、ユーザは会社を出る必要がある。この時にユーザは、まだアクティブな拡張性のあるアプリケーションを、ラップトップPC(ソース(供給元)装置プラットフォーム)からPDA(ターゲット(目的)装置プラットフォーム)へと動かすことにより、Eメール作業機能を続行できる。ラップトップPCの表示画面はPDAより大きいので、アプリケーションのプレゼンテーションは、SGUIシステムによりPDAの表示画面に適合される。これに伴い、ラップトップPCのマウスやキーボードで動いていたユーザインターフェイス機能もまた、SGUIシステムにより、PDA上にあるタッチスクリーンのユーザインターフェイス機能に適合されてもよい。SGUIシステムは、ソースおよびターゲット装置プラットフォームから独立しているユーザインターフェイスの拡張性のあるアプリケーションの移動性を提供する。このように拡張性のあるアプリケーションは、SGUIシステムを使いながら動作する時にだけ必要であり、特に2つの装置プラットフォーム上で動作する時に必要なわけではない。
【0038】
図1は、拡張性のあるグラフィカルユーザインターフェイス(SGUI)システム10のある実施形態のブロック図である。SGUIシステム10は、拡張性のあるGUIライブラリモジュール12、カスタマイズモジュール14、そしてレンダーマネージャモジュール16を持っている。図に描かれた実施形態は、本発明の理解を助けるためのものであり、これらの装置は個々に独立したものではなく、同図より少ないまたは多い装置が、SGUIシステム10を説明している様々な実施形態で利用されてもよい。
【0039】
拡張性のあるGUIライブラリモジュール12は、拡張性のあるアプリケーションの開発中において、アプリケーションの開発者が使用するツールであってもよい。さらに、拡張性のあるGUIライブラリモジュール12は、SGUIシステム10による中間表現と共に使用するため、GUIコンポーネントのライブラリを提供してもよい。ある実施形態において、装置プラットフォーム独立型APIは、拡張性のあるアプリケーションの開発中において使用されてもよい。また中間表現を作るため、装置プラットフォーム独立型APIは、装置プラットフォーム独立型のアプリケーションGUI内に、アプリケーション開発者により実装されてもよい。したがって、装置プラットフォーム独立型のアプリケーションGUIを使用して中間表現のインスタンス化には、拡張性のあるGUIライブラリモジュール12内において、装置プラットフォーム独立型のAPIを実行することが含まれる。中間表現のインスタンス化は、中間表現は装置プラットフォーム独立型のプレゼンテーションモデルということを表している図1において、「装置独立型中間表現」となっている。
【0040】
一般的に、拡張性のあるGUIライブラリモジュール12は、Java(登録商標)アブストラクト ウインドウ ツールキット(AWT)のようなGUIライブラリの他のフォームに似ている。本発明の好ましい実施形態において、拡張性のあるGUIライブラリモジュール12は、Java(登録商標)のアプリケーションGUIに似たスタイルで作られている。従って、Java(登録商標)技術に詳しいアプリケーションプログラマが、装置プラットフォーム特定型APIを利用する現存の装置プラットフォーム特定型のアプリケーションGUIを、SGUIシステム10内において、装置プラットフォーム独立型のAPIを利用する装置プラットフォーム独立型のアプリケーションGUIに変換する要求は少なくなる。
【0041】
カスタマイズモジュール14は、ターゲット装置プラットフォームの装置独立の中間表現をカスタマイズするために動作する。「ターゲット装置プラットフォーム」と言う語は、拡張性のあるアプリケーションがディスプレイ用のプレゼンテーションを生成する、異種装置プラットフォームを特定する。ターゲット装置プラットフォームとして、拡張性のあるアプリケーションが特定された装置プラットフォーム上を動作している間に、プレゼンテーションは生成されてもよい。さらに拡張性のあるアプリケーションが、ソースからマイグレーションの目的である装置プラットフォーム(ターゲット装置プラットフォーム)へマイグレーションする時、プレゼンテーションが生成されてもよい。ある実施形態におけるカスタマイズモジュール14は、タスクマネージャモジュール18と変換マネージャモジュール20を持っている。
【0042】
ある実施形態におけるタスクマネージャモジュール18は、ターゲット装置プラットフォームの機能に基づいて装置独立型の中間表現の機能を取り除いてもよい。その中間表現は、タスクマネージャモジュール18によりタスクが取り除かれたことを表している「取り除かれた中間表現」と図1に示されている。ある実施形態において、拡張性のあるアプリケーションは、ターゲット装置プラットフォームの機能を特定し、そしてその機能をタスクマネージャモジュール18へ提供する。またある実施形態において、タスクマネージャモジュール18は、ターゲット装置プラットフォームの機能を特定することができる。
【0043】
中間表現から取り除かれたタスクは、ターゲット装置プラットフォームに適合しない拡張性のあるアプリケーションの代表的な機能/能力を持っていてもよい。例えば、ラップトップパソコンは、電話のテンキー機能に関連しているタスクは使わない。同様に、利用できる能力に制約があるため、ターゲット装置プラットフォーム上に全てのタスクを表示することは望ましくないともいえる。例えば、多量のテキストデータを入力するのに、無線電話のテンキーを使うのは面倒くさい上、時間もかかる。だからタスクマネージャモジュール18は、無線電話にとっては面倒である編集機能に関連したタスクを取り除いてもよい。ある実施形態において、タスクマネージャは、ターゲット装置プラットフォームの機能、及び/または中間表現内におけるアプリケーション開発者により特定された他のプロパティに応じて、タスクを取り除いてもよい。
【0044】
変換マネージャモジュール20は、中間表現を装置プラットフォーム依存型のプレゼンテーションに変換するように動く。装置プラットフォーム依存型のプレゼンテーションは、ターゲット装置プラットフォーム内で、特定のユーザインターフェイスに適合してもよい。中間表現の変換は、タスクマネージャモジュール18が不要なタスクを取り除くことにより始まる。中間表現の変換には、ターゲット装置プラットフォームの機能ベースの中間表現、中間表現の論理構造、及び/またはアプリケーションGUIが特定したプロパティを動的に変更することが含まれる。以下における変換マネージャモジュール20による変換において、中間表現は装置プラットフォーム依存型の中間表現であり、この装置プラットフォーム依存型の中間表現は、プラットフォーム特定のプレゼンテーション方式における特定のある異種装置プラットフォーム(ターゲット装置プラットフォーム)に対するカスタマイズを示すために「装置依存型中間表現」として図1に表されている。
【0045】
レンダーマネージャモジュール16は、ターゲット装置プラットフォームの表示画面上にプレゼンテーションを表示するようにしてもよい。レンダーマネージャモジュール16は、カスタマイズモジュール14による中間表現のカスタマイズを行う。レンダーマネージャモジュール16は、装置プラットフォーム依存型の中間表現から、プレゼンテーションを取り出してもよい。さらにレンダーマネージャモジュール16は、ターゲット装置プラットフォームの表示画面上にプレゼンテーションを表示するために、拡張性のあるGUIライブラリモジュール12を利用してもよい。
【0046】
レンダーマネージャモジュール16の動作は、プレゼンテーションを取り出すため、装置プラットフォーム依存型の中間表現をトラバースすることを含む。装置プラットフォーム依存型の中間表現は、ターゲット装置プラットフォームに依存している装置プラットフォーム用にカスタマイズされたアプリケーションGUIの符号化表示である。このように、レンダーマネージャモジュール16により取り出されたプレゼンテーションは、ターゲット装置プラットフォームの表示画面上に写っている装置依存型のアプリケーションGUIを表示する。
【0047】
SGUIシステム10の好ましい実施形態において、SGUIシステム10は、ターゲット装置プラットフォームに対しアプリケーションGUIの継ぎ目のないスケーリングを提供するため、拡張性のあるアプリケーションと連動して動いてもよい。アプリケーション開発者は、アプリケーションGUIから装置プラットフォーム独立型の中間表現を作るためのツールとして、拡張性のあるGUIライブラリモジュール12を使うことができる。図1に示すように、SGUIシステム10の稼動中、アプリケーションGUIは、拡張性のあるGUIライブラリモジュール12を使う装置プラットフォーム独立型の中間表現をインスタンス化してもよい。カスタマイズモジュール14は、拡張性のあるアプリケーションが動いているターゲット装置プラットフォームに基づく装置プラットフォーム依存型の中間表現に対し、中間表現をカスタマイズしてもよい。レンダーマネージャモジュール16は、ターゲット装置プラットフォームのユーザインターフェイス用にカスタマイズされたプレゼンテーションを取り出すため、装置プラットフォーム依存型の中間表現を使用してもよい。そしてプレゼンテーションは、レンダーマネージャモジュール16により、ターゲット装置プラットフォームの表示画面上に表示されてもよい。
【0048】
図1に表されているモジュールのより細かな詳細について説明する。
【0049】
図2は、拡張性のあるGUIライブラリモジュール12の1実施形態のより詳細なブロック図である。ある実施形態の拡張性のあるGUIライブラリモジュール12は、拡張性のあるGUIコンポーネントライブラリモジュール22、中間表現モジュール24(IR)、そして拡張性のあるGUIイベント変換モジュール26を有している。他の実施形態において、これより少ないまたは多いモジュールにより、拡張性のあるGUIライブラリモジュール12の機能を表してもよい。拡張性のあるGUIコンポーネントライブラリモジュール22は、有名なGUIコンポーネントライブラリに共通している点がいくつかある。GUIコンポーネントライブラリモジュール22のある実施形態において、GUIコンポーネントライブラリモジュール22は、複数の拡張性のあるグラフィックユーザインターフェイス(SGUI)コンポーネントと装置プラットフォーム独立型のAPIを有している。既に述べたように、装置プラットフォーム独立型のAPIは、異種装置プラットフォームと適合性があり、そして装置独立型のアプリケーションGUIを作るために利用できる。
【0050】
SGUIコンポーネントは、ライブラリ内におけるグラフィカルユーザインターフェイスコンポーネントである。SGUIコンポーネントは、SGUIシステムで動作可能な異種装置プラットフォームによりサポートされる装置独立型のグラフィカルユーザインターフェイスコンポーネントとして描かれている。さらにSGUIコンポーネントは、グラフィカルユーザインターフェイスコンポーネントが、異種装置プラットフォーム用にカスタマイズ可能なことを表すために用いられてもよい。またSGUIコンポーネントは、SGUIコンポーネント複合として言及されてもよい。ここでSGUIコンポーネント複合は、関連のある機能を提供するためにグループ化された複数のSGUIコンポーネント単体である。
【0051】
装置独立型のアプリケーションGUIは、SGUIコンポーネントの表示を含む装置独立型の中間表現のインスタンスを作るのに使われてもよい。しかしながらディスプレイ用のプレゼンテーションを作る前に、中間表現は、装置プラットフォーム依存型の中間表現が表示可能になるように、変換(またはカスタマイズ)されてもよい。
【0052】
好ましい実施形態において、GUIコンポーネントライブラリモジュール22は、Java(登録商標) SWINGに似ている。これにより、Java(登録商標)スイングに明るいアプリケーション開発者は、拡張性のあるGUIコンポーネントライブラリモジュール22を容易に学ぶことができる。ある実施形態において、Java(登録商標)スイングとSGUIコンポーネントの類似点は、共に接頭辞がSだということである。つまり、この実施形態でJava(登録商標)SWINGの接頭辞は、Java(登録商標)SWINGのJではなく、Sなのである。
【0053】
一般的に、クロスプラットフォームGUIライブラリを作るために、4つの有名な技術がある。それら4つの技術とは「Least Common Denominator (LCD)」,「Superset Emulation」,「 Direct API Emulation」and 「Layering/Wrapper」である。LCD技術は、全てのGUIライブラリに共通の特徴を持っている。Superset Emulation技術は、全てのGUIライブラリ用のGUIコンポーネントのスーパーセットを提供できる。ダイレクトAPIエミュレーションの技術は、直接的に、あるGUIライブラリの装置特定型APIを別のGUIライブラリの装置特定型APIへマッピングできる。レイヤリング/ラッパー技術は、GUIライブラリへマッピングする、アブストラクトなGUIライブラリを提供する。
【0054】
SGUIシステムのある実施形態において、ダイレクトAPIエミュレーションとラッパー技術のコンビネーションが実装される。他の実施形態において、他の技術との組み合わせが使われてもよい。しかしながら、LCD技術の利用は、SGUIコンポーネントの利用を制限することもある。さらに、SGUIシステムがサポートするGUIライブラリの数が増えた時、スーパーセットエミュレーションの利用は、拡張性を制限することもある。
【0055】
ダイレクトAPIエミュレーションとラッパー技術の組み合わせが、拡張性のあるGUIコンポーネントライブラリモジュール22により実装されてもよい。拡張性のあるGUIコンポーネントライブラリモジュール22は、他のGUIライブラリへマッピングされてもよい。ある実施形態において、拡張性のあるGUIコンポーネントライブラリモジュール22は、装置特定のGUIライブラリへマッピングされてもよい。装置特定のGUIライブラリは、例えば、Java(登録商標)スイング、Java(登録商標)AWT、及び/またはJava(登録商標)Dojaを有していてもよい。他の実施形態において、拡張性のあるGUIコンポーネントライブラリモジュール22は、非装置特定のライブラリを有している増設された/異なるライブラリへマッピングされてもよい。
【0056】
拡張性のあるGUIコンポーネントライブラリモジュール22内でのマッピングにおいて、SGUIコンポーネントを、他のライブラリ内にある装置特定のGUIコンポーネントへマッピングする。このマッピングは、対応する装置特定のGUIコンポーネントが装置特定のGUIライブラリ内において利用可能な場所で実行されてもよい。もし装置特定のGUIライブラリが利用できないとき、SGUIコンポーネントは、装置特定のGUIライブラリ内において、装置特定のGUIコンポーネント複合へマッピングされてもよい。ある実施形態において、マッピングは定着してない。したがって、この実施形態において、アプリケーション開発者は、拡張性のあるGUIコンポーネントライブラリモジュール22内においてSGUIコンポーネントのマッピングを変えたり/加えたりすることにより、デフォルトマッピングを無視してもよい。
【0057】
再び図2に戻るが、中間表現(IR)モジュール24は、中間表現を作るためにアプリケーションGUIが使用する装置独立型APIを有している、いかなるアプリケーションでもよい。中間表現は、拡張性のあるGUIコンポーネントライブラリモジュール22を利用する装置独立型アプリケーションGUIを表している。好ましい実施形態において、中間表現は木構造のような構造を有しているので、だから中間表現は中間表現(IR)ツリー(木)と呼ばれてもよい。他の実施形態において、例えば、アウトライン構造、マトリックス構造、または他の論理ベースの構造を、中間表現を表すために用いてもよい。
【0058】
IRツリーは、SGUIコンポーネントが配置されているかもしれない論理構造を提供する。SGUIコンポーネントは、IRツリー内の簡単な中間表現内に装置プラットフォーム独立型のアプリケーションGUIを入れることにより、配置されてもよい。アプリケーションGUIは装置プラットフォーム独立型なので、IRツリーは拡張性のあるアプリケーションによりサポートされる、すべての可能なSGUIコンポーネントを含んでいてもよい。SGUIコンポーネントは、装置プラットフォーム独立型のプレゼンテーションへ簡単な変換を提供するように配置されてもよい。さらに詳細は後で述べるが、レイアウト構造、レイアウトの制約、そして制約を示すその他のプロパティは、IRツリーの論理構造内において特定されてもよい。さらに、IRツリーは、Java(登録商標)のアプリケーションGUI開発との類似を永続させるため、Java(登録商標)技術の階層的なコンテナ概念を取り入れることが望ましい。
【0059】
図3は、IRツリー40の構成例を示すブロック図である。IRツリー40は、階層型構造内にある相互に連結した複数のノードを持っている。図の階層構造は、数ある構造の中における1つの例に過ぎない。好ましい実施形態において、IRツリー40は、少なくとも1つのコンポーネントノード42と1つのコンテナノード44を持っている。他の実施形態において、その他のカテゴリーを持つノードが、アプリケーションGUIを表すように特定されてもよい。
【0060】
ある実施形態のコンポーネントノード42は、個々のSGUIコンポーネントを表している。コンポーネントノード42より下の位置には他のノードがこれ以上無いので、コンポーネントノード42は、IRツリー40の「葉」と見なしてもよい。ある実施形態のコンテナノード44は、IRツリー40内における論理パネルを表している。論理パネルは、装置プラットフォームの表示画面に表示するためIRツリー40から作られたプレゼンテーションのページ内で、異なるセクション、または異なるパネルを表している。例えば、Eメールに関するアプリケーション内において、コンテナノード44は、ユーザが受け取った全てのEメールを表示するウインドウを表すことができる。
【0061】
図に示す通り、コンテナノード44は、下位の位置に自身と連結しているコンポーネントノード42、及び/または他のコンテナノード44を持っていてもよい。IRツリー40の下位に位置しているノードは、上位の関連論理パネルにより表されるセクションの一部またはパネルである、関連サブ論理パネル及び関連SGUIコンポーネントを表している。例えば、Eメールを表示するウインドウにおいて、下位にあるコンテナノード44は、ウインドウ内で記述的なヘッダーを提供してもよいし、そして接続先のコンポーネントノード42は、受信したメールを分類する機能を提供してもよい。
【0062】
図3のIRツリー40における例で、最も高い位置にあるルートコンテナノード44aは、全体的なプレゼンテーションを表してもよい。その他のコンテナノード44は、プレゼンテーション内で異なる論理パネルを表しているので、ルートコンテナノード44aの階層的な子供と考えてよい。コンテナノード44c、44d、44e、44g、そして44hは、ルートコンテナノード44aの一番下位のコンテナノードであると言える。逆に言えば、コンテナノード44b、44c、44dは、ルートコンテナノード44aの直系の階層的な子供である。さらに図にあるように、いくつかのコンテナノード44の階層的な子供達はコンポーネントノード42である。例えば、コンテナノード44c、44dの子供は、それぞれコンポーネントノード42g、42hとコンポーネントノード42j、42kである。
【0063】
またIRツリー40は、拡張性のあるアプリケーションのタスク構造でもよい。タスク構造は、拡張性のあるアプリケーションが実行するタスクに関連するSGUIコンポーネントをグループ化することにより、表示されてもよい。タスクという言葉は、装置プラットフォームのユーザが、拡張性のあるアプリケーションで実行できる機能を特定している。機能は、拡張性のあるアプリケーションと装置プラットフォームに依存している。例えば、無線電話機(装置プラットフォーム)におけるEメール機能(拡張性のあるアプリケーション)は、タッチスクリーンを使いながらEメールを見ること、削除すること、そして作成することができる機能を有している。したがって、ユーザの指示を示し、かつ受け入れるSGUIコンポーネントは、機能別にグループ化される。
【0064】
タスク構造は、特定のタスク(機能)に関するSGUIコンポーネント(コンポーネントノード42)を、論理パネル(コンテナノード44)内にグループ化する。コンテナノード44内によるグルーピングにより、装置プラットフォームのディスプレイ上におけるSGUIコンポーネントの対応するグループが表すタスクを表示することができる。例えば、図3において、タスク46はコンテナノード44e、そしてその階層的な子供であるコンポーネントノード42aと42bである。一方、タスクは、複数のコンテナノード44と、それに対応するコンポーネントノード42である。
【0065】
ある実施形態において、SGUIコンポーネントのグルーピングにより、アプリケーションGUIがタスクの優先度を示している制約を提供するためのプロパティを特定する。プロパティは、対応するコンテナノード44に対し、タスクの優先順位を添付してもよい。例えば、タスクの優先順位は、特定の装置プラットフォームに適しているタスクを特定しても良いし、異種装置プラットフォームにおける別のタスクを特定しても良いし、及び/または、タスク及び/または拡張性のあるアプリケーションが動いている装置プラットフォームに関連する情報を特定しても良い。
【0066】
既に述べたように、アプリケーション開発者は、その開発中に、拡張性のあるアプリケーション内で、IRツリー40を作ってもよい。コンテナノードとコンポーネントノードの階層構造を特定する他に、アプリケーション開発者は、IRツリー40の論理構造、及び/またはIRツリー40のレイアウトパラメータに影響する制約を提供するプロパティを特定してもよい。プロパティは、コンポーネントノード42(SGUIコンポーネント)、コンテナノード44(論理パネル)、及び/またはIRツリー40に対し、特定されてもよい。IRツリー40のインスタンスは、特定のプロパティを含んでもよいし、また特定のプロパティベースで作られてもよい。好ましい実施形態において、プロパティの特定化は、アプリケーションGUI内において起こってもよい。また他の実施形態において、プロパティの特定化は、ターゲット装置プラットフォーム内、または他の関連ある装置またはアプリケーション内の拡張性のあるアプリケーションにおいて起こり得る。
【0067】
IRツリー40は、プレゼンテーションのページ内(プレゼンテーション部)において、アプリケーションGUIのレイアウトを表してもよい。ある実施形態において、IRツリー40内の相互関連のパターンによりレイアウトストラクチャは、直系の階層的子供ノードにより、高い水準の論理パネル用に特定されてもよい。アプリケーション開発者は、アプリケーションGUIで、コンポーネントノード42とコンテナノード44用のレイアウト構造を示しているプロパティを特定してもよい。プロパティは、論理パネル(コンテナノード44)とコンテナノード44の階層的な子供であるSGUIコンポーネント(コンポーネントノード42)の位置を特定してもよい。例えば、コンポーネントノード42aにおけるレイアウト構造は、コンテナノード44eが表す論理パネルの右上において、SGUIコンポーネントの位置を特定してもよい。同様に、コンポーネントノード42bは、コンテナノード44eが表す論理パネルの左上において、対応するSGUIコンポーネントの位置を示しているレイアウト構造を含んでいてもよい。コンテナノード44eも、コンテナノード44bにより表される論理パネルのセンターにおいて、対応する論理パネルの位置を特定するレイアウト構造を含んでいてもよい。
【0068】
さらに、図3のIRツリー40の例において、プレゼンテーションのページ48は、コンテナノード44とコンポーネントノード42の階層的に関連のあるグループから形成されていてもよい。図の例において、ページ48はコンテナノード44bで形成されている。ページ48は、コンテナノード44b以下の関連のある階層レベルが課したレイアウト構造に起因してもよい。具体的に説明すると、44f内におけるコンテナノード44g、44h、そして44b内における44e、44fの特定化と同様に、対応するコンテナノード44e、44g、44h内におけるコンポーネントノード42a、42b、42c、42d、42e、42fのレイアウト構造を特定するプロパティが、ページ48を作ることもできる。他の実施形態において、他のレイアウト構造の特定化に関連するIRツリー40における他のノードの階層構造は、ページのフォーメーション(形成)に起因してもよい。
【0069】
ターゲット装置プラットフォーム用のプレゼンテーションのページの生成時、SGUIシステムは、提案されているレイアウト構造に従ってもよい。しかしながら、ある実施形態において、例えば、ターゲット装置プラットフォームの表示画面を最大限に利用することに高い優先順位が設定されている場合において、提案されたレイアウト構造に従うことを無視してもよい。
【0070】
IRツリー40の装置独立型プラットフォームが有する性質のせいで、アプリケーションGUIが生成されたときに、異種装置プラットフォーム内における多様な機能は、レイアウト構造の特定化を難しくする。例えば、許容されるページの最大のサイズは、ターゲット装置プラットフォームの表示画面のサイズに依存しており、開発時間を特定するのは難しい。さらに、開発時間においては、SGUIコンポーネントの実際サイズはわからない。SGUIコンポーネントは、ターゲット装置プラットフォームの機能に基づき、多種あるサイズの中から1つのSGUIコンポーネントに変換するので、SGUIコンポーネントの実際サイズはわからない。
【0071】
ある実施形態において、アプリケーション開発者は、プレゼンテーション内において配置されたSGUIコンポーネントに関するSGUIコンポーネントのサイズを予測することは可能である。仮に、その予測が正確(SGUIコンポーネントの変換後のサイズに近い)なら、ターゲット装置プラットフォームの表示画面内のレイアウトにおけるSGUコンポーネント間の大きな「穴」は、避けることができる。また別の実施形態において、SGUIシステムは、いわゆる「穴」を避けるために、同じコンテナノード44(論理パネル)内で、SGUIコンポーネントに似たサイズを保存するように努める。また他の実施形態において、自動レイアウト生成のためのフォーム、ターゲット装置プラットフォーム用レイアウトのアプリケーション開発者によるカスタマイズ、及び/またはSGUIコンポーネントのサイズの多様性を指定するための技術により、多様なレイアウト構造は指定される。
【0072】
タスクの優先順位とレイアウト構造を示すプロパティの特定化に加えて、アプリケーション開発者は、IRツリー40の論理構造、及び/またはIRツリー40のレイアウトパラメータに影響する制約を提供するプロパティを特定してもよい。ある実施形態において、コンテナノード44のレイアウト優先順位に関連しているプロパティが特定される。本実施形態のプロパティは、コンテナノード44がページ上に配置されるオーダを特定する。最も高いレイアウト優先順位のコンテナノード44は、表示画面内で最初のページに位置し、かつ対応するコンポーネントノード42により特定されるSGUIコンポーネントを保持してもよい。例えば、装置プラットフォームのユーザのために、あるタスクを易しくしたいというアプリケーション開発者は、対応するパネル(コンテナノード44)に、高いレイアウト優先順位を設定する。
【0073】
他の実施形態において、レイアウトの制約を特定するプロパティは、コンポーネントノード42に含まれてもよい。レイアウトの制約は、同ページに互いに隣接して配置される2つまたはそれ以上のSGUIコンポーネントを条件として指定してもよい。例えば、イエスを示している選択可能なボタンとノーを示している選択可能なボタンは、ボタンが隣接していることを条件として指定するレイアウトの制約を含んでもよい。
【0074】
同様に他の実施形態で、プロパティは、コンテナノード44内のレイアウトグループを特定してもよい。レイアウトグループは、コンテナノード44内のノードが、レイアウト構造内で別ページに配置されるかどうかを条件として指定することもできる。ある実施形態において、直系の階層的な子供としてコンポーネントノード42を持っている全てのコンテナノード44は、レイアウトグループに特定されない限り分割できない。同様に、直系の階層的な子供としてコンポーネントノード42を持っていない本実施形態の全てのコンテナノード44は分割可能である。
【0075】
別の実施形態において、プロパティはコンテナノード44のラベルを特定できる機能を持っている。ラベルは、論理パネルに対応付けられてもよいし、ページ間を移動するプレゼンテーション内において、ナビゲーションバー/またはメニューを作成してもよい。他の実施形態においてプロパティは、他の仕様や、論理コンディション、及び/またはコンポーネントノード42、コンテナノード44及び/またはIRツリー40に関連する付加機能を特定するのに利用されてもよい。
【0076】
再び図2に戻り、拡張性のあるGUIイベント変換モジュール26は、ターゲット装置プラットフォームのユーザインターフェイスにより生成されるGUIイベントを変換する技術(方法)であってもよい。ある実施形態において、拡張性のあるGUIイベント変換モジュール26は、装置独立型のGUIイベントAPIを持っている。装置独立型のGUIイベントAPIは、拡張性のあるアプリケーションに対するイベントを処理する。前にも述べたがGUIイベントは、表示画面上のSGUIコンポーネント内の状態の変化を表しているが、これはユーザが対応する装置プラットフォームに関連しているユーザインターフェイスと対話するためである。
【0077】
先行技術では、GUIイベントは、装置特定型アプリケーションGUIアプリケーションプログラムインターフェイス(API)により定義されている。装置特定型GUI APIは、GUIイベントを生成する、特定装置の入出力方法に接続されているGUIイベントを定義する。拡張性のあるGUIイベント変換モジュール26は、異種装置プラットフォーム用のGUIイベントを変換するのに使われる。また拡張性のあるGUIイベント変換モジュール26は、異なる複数の入力方法で動作が可能な装置独立型のGUIイベント変換機を有している。
【0078】
ある実施形態において、GUIイベント変換機は、アクションと呼ばれる抽象的なイベントを定義する。アクションは入力方法から独立している。例えば、ボタンとして動作するGUIコンポーネントに対応付けられたアクションは、装置プラットフォームに依存しているラップトップコンピュータのマウスクリック、ポケットコンピュータのスタイラス・タップ、または携帯電話のソフトキーから生成されてもよい。拡張性のあるアプリケーションは、GUIイベント変換機のGUIイベントを表すアクションにより提供されてもよい。このように、GUIイベントを生成する入力方法は、拡張性のあるアプリケーションに対し、無関係なものであってもよい。
【0079】
拡張性のあるGUIイベント変換モジュール26は、プラットフォーム独立型のアクションの拡張性のあるユーザインターフェイスライブラリを持っている。拡張性のあるユーザインターフェイスライブラリは、拡張性のあるGUIコンポーネントライブラリ22、または異なるライブラリに含まれていてもよい。ある実施形態において、拡張性のあるGUIイベント変換モジュール26は、装置プラットフォーム独立型のGUIイベントAPIに基づいた論理マッピングを含んでいてもよい。拡張性のあるアプリケーションの開発者は、装置プラットフォーム特定型のGUIイベントと同等のプラットフォーム独立型のアクションの間で、論理マッピング用の装置プラットフォーム独立型のAPIを利用してもよい。このようにプラットフォーム独立型のアクションは、対応する装置プラットフォーム特定型のGUIイベントの結果として、拡張性のあるアプリケーションへと配信されてもよい。
【0080】
いくつかの拡張性のあるアプリケーションにおいて、装置プラットフォームの制約のために、プラットフォーム特定型のGUIイベントとプラットフォーム独立型のアクション間におけるマッピングは不可能かもしれない。例えば、ユーザがマップ・イメージにおける特定のポイントをクリックするとき、拡張性のあるアプリケーションは、拡大または縮小できるインターラクティブマップを有していてもよい。パソコンサイドでは、装置プラットフォーム特定型のマウスイベントは、マウスがクリックされた特定の位置を把握する。しかしながら、無線電話において、ユーザインターフェイスとして位置決め入力装置は含まれなくてもよい。このように、無線電話における同等のプラットフォーム独立型のアクションは、マップされることはない。この場合、拡張性のあるGUIイベント変換モジュール26のライブラリは、別段の定めがなければプラットフォーム独立型アクションが表す、プラットフォーム特定入力方法用の装置プラットフォーム依存型アクションを有していてもよい。これに伴い、アプリケーションGUIは、制約を伴うターゲット装置プラットフォーム用のアプリケーションGUIをカスタマイズするプロパティを持っていてもよい。ある実施形態において、一般的に装置プラットフォーム特定型GUIイベントは拡張性がないため、拡張性のあるアプリケーションの主要な機能を実装するのに装置プラットフォーム独立型のアクションを用いなくてもよい。本実施形態において、装置プラットフォーム依存型のアクションは、主要な機能に対する付加拡張機能として用いられてもよい。
【0081】
図4は、変換マネージャモジュール20のより詳細なブロック図における1つの実施形態である。変換マネージャモジュール20は、変換ルールモジュール50、サイズ変換コンポーネントモジュール52、代替コンポーネントモジュール54、GUI変換ルールモジュール単体56、GUI変換ルールモジュール複合58、ダイナミックレイアウトモジュール60、スタイルガイドモジュール62とSGUIコンポーネントリストモジュール64から成っている。他の実施形態において、変換マネージャモジュール20内での機能は、本実施形態で使用されているモジュールより少ない、または多い数のモジュールで表される。
【0082】
変換ルールモジュール50は、IRツリーを動的に作るために、拡張性のあるGUIコンポーネントライブラリモジュール22(図2)を利用してもよい。IRツリーの構造は、対応するプレゼンテーションのページにあるIRツリー内に表されるSGUIコンポーネントと、変換ルールで選択的に変換するSGUIコンポーネントから成っている。
【0083】
変換ルールモジュール50は、IRツリー40(図3)におけるSGUIコンポーネントを変換するのに使われる複数の変換ルールから成っている。ある実施形態において、変換ルールモジュール50は、変換ルールの2つのカテゴリを表しているサイズ変換コンポーネントモジュール52と、代替コンポーネントモジュール54から成っている。サイズ変換コンポーネントモジュール52は、ターゲット装置プラットフォームの表示画面のサイズをベースにSGUIコンポーネントのサイズを調整するルールを提供できる。代替コンポーネントモジュール54は、IRツリー内におけるアプリケーションGUIを表すSGUIコンポーネントと置き換えに、代替のSGUIコンポーネントを特定できる。
【0084】
ある実施形態の代替コンポーネントモジュール54は、代替のSGUIコンポーネントに対する2つのカテゴリのルールを表しているGUI変換ルールモジュール単体56と、GUI変換ルールモジュール複合58から成っている。GUI変換ルールモジュール単体56は、SGUIコンポーネントをターゲット装置プラットフォームに特定するSGUIコンポーネントに変換するルールを提供する。
【0085】
図5は、第1SGUIコンポーネント70がターゲット装置プラットフォームに特定する第2SGUIコンポーネント72に、変換ルールで変換する例を示している。ターゲット装置プラットフォームの機能、ターゲット装置プラットフォームのタイプ、ターゲット装置プラットフォームのユーザインターフェイス、拡張性のあるアプリケーションの機能、及び/またはSGUIコンポーネントのディスプレイに関するパラメータをベースに、SGUIコンポーネントはターゲット装置プラットフォームに特定すると考えてよい。
【0086】
図の例では、第1SGUIコンポーネント70は、ユーザにより選択される「高」、「中」、「低」、いわゆる優先度の選択リストを表している。同様に、第2SGUIコンポーネント72は、優先度の選択ボタンを表している。仮に、第1SGUIコンポーネント70とターゲット装置プラットフォーム用のコンポーネントノード42(図3)を含んでいるIRツリー40(図3)はPDAだとした場合、GUI変換ルールモジュール単体56(図4)は、第1SGUIコンポーネント70を第2SGUIコンポーネント72に変換する変換ルールを提供してもよい(矢印74)。
【0087】
PDAの表示画面におけるサイズの限定、PDAで利用可能なユーザインターフェイス、またはPDAや拡張性のあるアプリケーションに関連性のある理由により、本実施例における第2SGUIコンポーネント72は特定のものと考えられてもよい。この図における例は、SGUIコンポーネントに適用可能な数ある変換ルールの一例にすぎない。
【0088】
図4に再び戻り、GUI変換ルールモジュール複合58は、SGUIコンポーネント複合が、ターゲット装置プラットフォームに特定するSGUIコンポーネントに変換する変換ルールを提供する。前にも述べた通り、SGUIコンポーネント複合は、IRツリー(図3)におけるコンテナノード44(図3)および対応するコンポーネントノード42(図3)により表されてもよい。
【0089】
図6は、第1SGUIコンポーネント複合76が、ターゲット装置プラットフォームに特定している第2SGUIコンポーネント複合78へ変換する変換例を示している。
【0090】
図の例によると、第1SGUIコンポーネント複合76は、複数のデータエントリ80、優先度セレクション82、そして好みセレクション84から成っている。第2SGUIコンポーネント複合78は、ピックリスト86と単一のデータエントリ88から成っている。図5における例と同様、矢印90で示されているように、第1SGUIコンポーネント複合76を第2SGUIコンポーネント複合78に変換するのに、GUI変換ルールモジュール複合58から利用可能な変換ルールを用いてもよい。
【0091】
図4に戻るが、ダイナミックレイアウトモジュール60は、装置プラットフォーム依存型のプレゼンテーションを表すIRツリーを構成してもよい。ダイナミックな構成とは、プレゼンテーションのページのIRツリーが表すSGUIコンポーネントの配置と、選択的にSGUIコンポーネントが変換することを含んでいる。ある実施形態において、レイアウト構造やアプリケーションGUIが特定する他の制約に従い、IRツリーにより表されるSGUIコンポーネントがページ上にあってもよい。さらに、ダイナミックレイアウトモジュール60は、適合性を確認するために、プレゼンテーションとターゲット装置プラットフォームの機能とを比べてもよい。例えば、制約に関する機能は、プレゼンテーションのページサイズでもよい。ダイナミックレイアウトモジュール60が構成するページのサイズは、プレゼンテーションを表示するターゲット装置プラットフォームの表示画面サイズを超えてはいけない。制約に関する他の機能例は、SGUIコンポーネントの最小の視覚サイズ、またはターゲット装置プラットフォームに関する他の機能である。
【0092】
ダイナミックレイアウトモジュール60は、変換ルールを選択&適用する。そしてSGUIコンポーネントを機能あるいは制約に従う形に変換するため、変換ルールモジュール50から利用可能な変換ルールを適用する。例えば表示画面のサイズの制約を満たすため、ダイナミックレイアウトモジュール60は、もっとコンパクトなプレゼンテーションを作るために、変換ルールをIRツリー内のSGUIコンポーネントに適用してもよい。変換ルールの選択は、拡張性のあるアプリケーション、ターゲット装置プラットフォームの表示画面サイズ、装置プラットフォームのユーザインターフェイス機能、及び/またはディスプレイ、及びターゲット装置プラットフォームとの相互作用に関するパラメータにより、決められてもよい。
【0093】
ある実施形態において、ダイナミックレイアウトモジュール60は、その機能や制約をベースにプレゼンテーション用のページを生成してもよい。また別の実施形態において、変換ルールの適用により、ターゲット装置プラットフォームに特定する様々な構成のページセットが生成される。ページセットとは、予想される装置プラットフォーム依存型プレゼンテーションの一部分である。予想されるプレゼンテーション内で開発されたページをベースに、ダイナミックレイアウトモジュール60は、最も望ましい装置プラットフォーム依存型のプレゼンテーションを得るために、ページセット内から選択的にページを利用してもよい。ダイナミックレイアウトモジュール60の望ましい機能とは、ページ数の最少化、アプリケーションGUIが特定するプロパティに従うこと、それぞれのページ用の表示画面を最大に利用すること、及び/またはプレゼンテーション、ターゲット装置プラットフォーム及び/または拡張性のあるアプリケーションに関連しているその他の特徴である。
【0094】
さらに図4に示されているように、本実施形態のダイナミックレイアウトモジュール60は、スタイルガイドモジュール62とSGUIコンポーネントリストモジュール64から成り立っている。また他の実施形態において、少ないまたは多い数のモジュールが、機能を表すため、ダイナミックレイアウトモジュール60内で特定されてもよい。
【0095】
スタイルガイドモジュール62は、少なくとも1つのプリケーション用のスタイルガイドパラメータセットをSGUIコンポーネントに提供してもよい。スタイルガイドパラメータは、プレゼンテーション内において変わらない外観を提供するため、SGUIコンポーネントの視覚的な外観を標準化してもよい。典型的なスタイルガイドパラメータは、フォントサイズ、コンポーネント間におけるスペース、色彩などから成っている。ある実施形態において、スタイルガイドパラメータの1セットは、全ての装置プラットフォームに使われている。また別の実施形態において、スタイルガイドパラメータのセットは、1つまたはそれ以上のターゲット装置プラットフォームに対応付けられていてもよい。
【0096】
SGUIコンポーネントリストモジュール64は、予想されるSGUIコンポーネントのリストを編集する。予想されるSGUIコンポーネントのリストは、IRツリー内にあるSGUIコンポーネントの変換から生じるSGUIコンポーネントを表してもよい。ダイナミックレイアウトモジュール60は、リスト作成のため、変換ルールをIRツリー内にあるSGUIコンポーネントに適用してもよい。ある実施形態において、SGUIコンポーネントリストモジュール64が、リスト内のSGUIコンポーネントのサイズに応じて、SGUIコンポーネントのリストを編集してもよい。
【0097】
ダイナミックレイアウトモジュール60は、SGUIコンポーネントのリスト作成のため、変換ルールモジュール50から選択的に適切な変換ルールを適用してもよい。ある実施形態において、適切な変換ルールの選択のために、ダイナミックレイアウトモジュール60はルールに基づいた技術(方法)を用いてもよい。その技術(方法)においては、2つの前提条件に基づいた選択的な変換ルールが適用可能である。最初の前提条件とは、変換するSGUIコンポーネントの特徴を考慮することである。第2の前提条件とは、プレゼンテーション用のターゲット装置プラットフォームの機能を考慮することである。
【0098】
前提条件に加えて、ある実施形態では、ダイナミックレイアウトモジュール60のランキングから、適切な変換ルールを選択してもよい。変換ルールのランキングは、変換ルールを適用した結果に基づいてもよい。例えばどのくらいの確率で変換ルールが、異なる拡張性のあるアプリケーション用に適正な変換を実現するかということに基づき、ランキングが決まるということである。よって、かつ高い確率で変換が成功する変換ルールはランキングが高く、逆にある特定の拡張性のあるアプリケーション用にしか特定されていない変換ルールはランキングが低い。例えば、(少ない数の選択可能なアイテムにおける)選択ボタン(図5参照)に対する選択リストの変換は、世界的な規模で拡張性のあるアプリケーションにおいて適用可能なので、高いランキングが指定されてもよい。
【0099】
SGUIコンポーネントリストの生成に続いて、ダイナミックレイアウトモジュール60は、プレゼンテーションにおける使用目的でリストからSGUIコンポーネントを選択してもよい。ある実施形態において、最大サイズの表示画面に基づき、SGUIコンポーネントが選択される。また他の実施形態において、ターゲット装置プラットフォームの機能や拡張性のあるアプリケーションの機能、及び/またはその他条件が、選択過程において用いられてもよい。SGUIコンポーネントはリストから選択され、プレゼンテーションを表すページ上に配置されてもよい。リストから選択されたSGUIコンポーネントは、リストを作るのに用いられたSGUIコンポーネントを置き換えてもよい。SGUIコンポーネントの置き換えにより、装置プラットフォーム独立型のSGUIコンポーネントは、効果的にターゲット装置プラットフォームに特定するSGUIコンポーネントに変換される。
【0100】
ある実施形態において、各々のページは、表示画面の最大のサイズと比較されてもよい。この実施形態において、ページを構成するSGUIコンポーネントを縮小するか、または拡大する必要性があるかどうかにより、ダイナミックレイアウトモジュール60は、リストから大きな、または小さなサイズのSGUIコンポーネントを選択してもよい。ある実施形態において、SGUIコンポーネントに対応するリスト内に、似たサイズのSGUIコンポーネントがある場合におけるSGUIコンポーネントの選択は、リスト内でSGUIコンポーネントを作るのに用いられる変換ルール(既に紹介済み)のランキングに基づいてもよい。
【0101】
本発明の好ましい実施形態において、ダイナミックレイアウトモジュール60は、プレゼンテーションに対応しているページを作るために、IRツリーを通して繰り返し処理を行ってもよい。ある実施形態において、ダイナミックレイアウトモジュール60によるプロセスは、IRツリーの最も低い階層レベルから高いレベルに向けて処理を行う。ページを満たすために、ダイナミックレイアウトモジュール60は、論理パネルをプレゼンテーションのページに付け加えてもよい。ページが満たされてないときは、兄弟ノードあるいは高いレベルにあるノードからの階層的に関連のある論理パネルが、ページに付け加えられてもよい。例えば、図3によれば、コンテナノード44h、44f、そして44eが、ページ48を作るために、コンテナノード44gに付け加えられてもよい。これとは逆にページがはみ出したときは、表示画面のサイズに合わせるために、ページ内においてSGUIコンポーネントの変換を実行してもよい。
【0102】
ページがおおむね満たされたとき、プレゼンテーション用の新しいページが作られる。おおむね満たされたページとは、利用可能なSGUIコンポーネントで、ターゲット装置プラットフォームの表示画面を最大化することである。ある実施形態において、おおむね満たされたページとは、およそ95%から100%の割合で、ターゲット装置プラットフォームの表示画面を満たしていることである。レイアウト構造、他の条件として指定されてる制約、及び/またはSGUIコンポーネントは表示画面が完全に満たされることを防ぐが、おおむね満たされたページ内では、現条件のもとで満たされている部分を最大限に活用する。
【0103】
図7は、図3のIRツリー40を参照しながら、図4の変換マネージャモジュール20のある実施形態の動作を示しているブロック図である。変換マネージャモジュール20の動作がブロック100で始まる。変換マネージャモジュール20は、好ましくは、以下においてIRツリー40をインスタンス化し、そして取り除くことにより発生する。IRツリー40において、最も高いレイアウト優先度を持ち、かつ最も低いレベルにあるコンテナノード44が特定される。(ブロック102)低いレベルにあるコンテナノードは、SGUIコンポーネント(コンポーネントノード42)を表す階層的な子供ノードである。図3におけるIRツリー40の例では、コンテナノード44c、44d、44e、44g、そして44hが、最も低いレベルにあるコンテナノードである。レイアウトの優先度は、アプリケーションGUIのプロパティにより特定される。ここでは動作を説明する目的上、図3のコンテナノード44gが、最も高いレイアウト優先度を持っているとする。
【0104】
スタイルガイドモジュール62は、特定のコンテナノード44(コンテナノード44g)に関連しているSGUIコンポーネント(コンポーネントノード42cと42d)に対し、ターゲット装置プラットフォームに対応するスタイルガイドパラメータセットを適用する。(ブロック104)SGUIコンポーネントは、IRツリー40のレイアウト構造とアプリケーションGUIに条件として指定される制約に従い、プレゼンテーションのページ上に配置される。(ブロック106)そして、ページのサイズが決定する。(ブロック108)その後、表示画面からページのサイズがはみ出したかどうかが決まる。(ブロック110)ページのサイズが、ターゲット装置プラットフォームの表示画面のサイズより大きければ、ページはターゲット装置プラットフォームの表示画面からはみ出していることになる。
【0105】
図8のブロック114において、ページがはみ出していたら、適切な変換ルールが選択され、ダイナミックレイアウトモジュール60により、そのルールがSGUIコンポーネントに適用される。予想されるSGUIコンポーネントのリストが作成され、サイズに従いながらSGUIコンポーネントリストモジュール64と共に編集される。(ブロック116)例えば、サイズ縮小の必要がある等の条件をベースにしたリストから、SGUIコンポーネントは特定される。(ブロック118)そして、リスト内にある1つ以上のSGUIコンポーネントが特定されたかどうかを決定する。(ブロック120)もしノーなら、特定されたSGUIコンポーネントが選択される。(ブロック122)その後、選択されたSGUIコンポーネントが、ページ(ブロック106)内で以前に表示された対応するSGUIコンポーネントと交換され(ブロック124)、動作は図7のブロック104に戻る。もし複数のSGUIコンポーネントが特定されたら、最も高いランクの変換ルールから作られたSGUIコンポーネントが選択され(ブロック125)、動作はブロック124に進む。
【0106】
図9に戻り、ブロック110(図7)においてページがはみ出していない場合、ページが満たされていないことが決定される。(図9:ブロック126)ページのサイズがターゲット装置プラットフォームの表示画面のサイズより小さい時、ページは満たされていないという事になる。もしページが満たされないと決定した時、まだページ上に配置されていない兄弟ノード(図3のコンテナノード44h)の特定作業が行われる。(ブロック128)もし兄弟ノードが配置されていない場合、最も高い優先度を持つ特定された兄弟ノードが選択され(ブロック144)、そして選択されたノードの処理を始めるため、動作は図7のブロック104に戻る。もし兄弟ノードが既に配置されているなら(または存在しないなら)、次に高い階層レベル(図3のコンテナノード44f)からの関連ノードが特定される。(ブロック130)
【0107】
ルートコンテナノード(コンテナノード44a)かどうかを判断するのに、次に高い階層レベルからのノードが確認される。(ブロック132)もしイエスなら、まだページ上に置かれていない付加的で最も低いレベルのコンテナノードの有無を調べるためにIRツリーを確認する。(ブロック134)もしそのような最も低いレベルのコンテナノードが存在するなら、最も低いレベルにありかつ次に高い優先度を持っている別のコンテナノード44(図3)を特定するため、動作はブロック102(図7)へ戻る。もしそのような最も低いレベルのコンテナノードが存在しないなら動作は終わる。(ブロック136)
【0108】
ブロック132に戻り、次に高い階層レベルにおけるノード(図3のコンテナノード44f)がルートコンテナノード(コンテナノード44a)でない場合、ノードがページ内に以前に配置されたかどうかを決める。(ブロック138)ノードが以前に配置されていないなら、ノード処理を始めるために、動作はブロック104(図7)へ戻る。ノードが以前に配置されているなら、次の高い階層レベルにあるノードの兄弟ノード(図3のコンテナノード44e)が配置されていないかどうかを判定する。(ブロック140)もし兄弟ノードがページ内で既に配置されているなら(または存在しないなら)、動作はブロック134へ戻る。兄弟ノードが配置されていないなら、最も高いレイアウト優先度を持っている兄弟ノードが選択され(ブロック142)、選択されたノードの処理を始めるため、動作はブロック104(図7)へ戻る。
【0109】
ブロック126へ戻り、ページが満たされていないとは言えない場合、ページはおおむね満たされていると見なされる。(ブロック146)残りのSGUIコンポーネントを配置するために、新しいページが割り当てられ(ブロック148)、動作はブロック134へ戻る。
【0110】
別の実施形態において、ページが満たされたと判断されると、リストからの代替SGUIコンポーネントを用いることにより、同ページにおける付加的な変化の生成のための追加的な動作が実行されてもよい。追加的な動作に続いて、ダイナミックレイアウトモジュール60は、既に前述した通り、最も望ましい装置プラットフォーム依存型のプレゼンテーションを選択してもよい。
【0111】
通信システム内におけるSGUIシステムの利用例が説明される。図10は、装置プラットフォーム202、変換サーバ204、そしてプラットフォーム202、変換サーバ204とネットワーク208を介して通信しているライブラリサーバ206を有している、通信システム200の実施例を示している。装置プラットフォーム202は、既に述べられている異種装置プラットフォームでもよい。変換サーバ204およびライブラリサーバ206は、ネットワーク208内において、サーバ機能を実行するいかなる装置であってもよい。ある実施形態において、動作システムを含む1つまたはそれ以上のサーバコンピュータは、変換サーバ204およびライブラリサーバ206として動作する。動作システムの例として、Microsoft (登録商標)、Windows NT(登録商標)、UNIX(登録商標)、またはサーバ機能をサポートできる他の動作システムが挙げられる。サーバ204、206は、データを保存し、データにアクセスする機能や、SGUIシステムの一部分などのアプリケーションを実行する機能を有していてもよい。ネットワーク208は、インターネット、公衆または専用イントラネット、イクストラネット、及び/または無線、光フャイバ、及び/または有線通信を介し、データ送信や指令が可能なネットワーク構成の形式などであってもよい。
【0112】
通信システム200内において、SGUIシステムは動作可能である。ある実施形態において、拡張性のあるアプリケーション210は、装置プラットフォーム202上において動作してもよい。さらに、拡張性のあるGUIライブラリモジュール12とレンダーマネージャモジュール16は、装置プラットフォーム202上において動作してもよい。さらに、この実施形態では、タスクマネージャモジュール18と変換マネージャモジュール20は、変換サーバ204上のカスタマイズモジュール14内で動作してもよい。既に前実施形態で説明されている拡張性のあるアプリケーション210、拡張性のあるGUIライブラリモジュール12、カスタマイズモジュール14、そしてレンダーマネージャモジュール16は、本実施形態においても同様の働きをする。
【0113】
他の実施形態において、SGUIシステムにおける異なる機能、及び拡張性のあるアプリケーションは、異種装置プラットフォームとサーバ間において配信されてもよい。例えば、各動作をサポートするのに十分な能力があるところで、SGUIシステムと拡張性のあるアプリケーション210は、装置プラットフォーム202上を動作可能となる。また別の例において、SGUIシステムと拡張性のあるアプリケーション210の一部分は装置プラットフォーム202上において動作可能であり、またSGUIシステムと拡張性のあるアプリケーション210のその他の部分は、その他の装置プラットフォーム上で動作可能である。また別の例においてSGUIシステムの大部分は、サーバ上またはその他類似の装置上で動作可能であり、そしてSGUIシステムの不可欠な部分だけが、装置プラットフォーム202上において動作可能であってもよい。
【0114】
ある実施形態において、拡張性のあるGUIライブラリモジュール12における拡張性のあるGUIコンポーネントライブラリ22全体(図2)は、装置プラットフォーム202に保存されてもよい。この実施形態において、変換サーバ204は、ネットワーク208経由で、拡張性のあるGUIコンポーネントライブラリへアクセスしてもよい。既に説明されているが、変換マネージャモジュール20は、GUIコンポーネントの変換中に、拡張性のあるGUIコンポーネントライブラリ、へアクセスしてもよい。
【0115】
別の実施形態において、拡張性のあるGUIコンポーネントライブラリ22のサブセットと共に、拡張性のあるGUIライブラリモジュール12の一部分は、装置プラットフォーム202に保存されてもよい。拡張性のあるGUIコンポーネントライブラリ22の保存については、そのサブセットに限られているが、その理由は、例えば、装置プラットフォーム202の限られた保存機能、情報検索の増加、及び/または装置プラットフォーム202及び/または拡張性のあるアプリケーション210の動作に関する理由である。拡張性のあるGUIコンポーネントライブラリ22のサブセットは、装置プラットフォーム202により頻繁に用いられるSGUIコンポーネントを含んでいてもよい。この実施形態では、拡張性のあるGUIコンポーネントライブラリ22全体(図2)と共に、拡張性のあるGUIライブラリモジュール12の一部分がライブラリサーバ206に保存され、そして必要があれば、装置プラットフォーム202によりネットワーク208を介してアクセスされる。またカスタマイズモジュール14は、装置プラットフォーム202内の拡張性のあるGUIコンポーネントライブラリ22のサブセット、及び/またはライブラリサーバ206内の拡張性のあるGUIコンポーネントライブラリ22全体へアクセスしてもよい。別の実施形態において、変換サーバ204は、装置プラットフォーム202からの、または変換サーバ204自身からのアクセスに備え、拡張性のあるGUIコンポーネントライブラリ22を保存してもよい。
【0116】
また別の実施形態において、変換サーバ204は、GUIライブラリモジュール12の一部分を持っていてもよい。例えば装置プラットフォーム202の制限された処理能力、装置プラットフォーム202のリソースを保存する要求、そしてSGUIシステムの動作に関するその他の理由により、GUIライブラリモジュール12の一部分は、変換サーバ204内に保存されてもよい。ある実施形態において、中間表現モジュール24(図2)の一部分は、変換サーバ204に含まれていてもよい。変換サーバ204に含まれている中間表現モジュールの一部分は、モバイルコードをベースにしたIRツリーのインスタンスを作るために動作してもよい。この実施形態においてモバイルコードは、拡張性のあるアプリケーション210のアプリケーションGUIから、ネットワーク208を介して、変換サーバ204へ送信されてもよい。中間表現モジュールの一部分は、アプリケーションGUIを表すIRツリーのインスタンスを作るために、モバイルコードを実行してもよい。
【0117】
図11は、図10を参照しながら説明されたSGUIシステムのある実施形態における動作を説明したブロック図である。拡張性のあるアプリケーション210がターゲット装置プラットフォーム(装置プラットフォーム202)へマイグレーション、またはターゲット装置プラットフォームから起動したとき、動作は始まる(ブロック250)。拡張性のあるアプリケーション210は、IRツリーのインスタンスがターゲット装置プラットフォーム上において作成されるかどうかを判断する。(ブロック252)もしイエスなら、IRツリーのインスタンスを作るために、拡張性のあるアプリケーション210内のアプリケーションGUIは、GUIライブラリモジュール12に関連して利用される。(ブロック254)アプリケーションGUIを表しているIRツリーは、変換サーバ204に送信されてもよい。(ブロック256)もしIRツリーのインスタンスがターゲット装置プラットフォーム上において作成されないなら、モバイルコードが変換サーバ204に送信される。(ブロック258)アプリケーションGUIを表しているIRツリーのインスタンスを作るために、変換サーバ204はモバイルコードを実行する。(ブロック260)既に説明済みだが、IRツリーは装置プラットフォーム独立型で、そしてアプリケーションGUIに特定されているプロパティを含んでいる。
【0118】
ブロック264において、ターゲット装置プラットフォームの機能が、変換サーバ204に送信される。ターゲット装置プラットフォームの機能として、タスクマネージャモジュール18は、IRツリーから不必要な論理パネル及び/またはSGUIコンポーネントを削除する。(ブロック266)変換マネージャモジュール20は、タスクマネージャモジュール18からIRツリーを受け取り、IRツリーの変換を始める。(ブロック268)IRツリーの変換は、IRツリーにおいて表されているSGUIコンポーネントの構成を含む。装置プラットフォーム依存型のプレゼンテーションのレイアウトを作るため、IRツリーは変換される。
【0119】
再び図12に戻るが、変換の後、装置依存型IRツリーはターゲット装置プラットフォームに送信される。(ブロック270)レンダーマネージャモジュール16は装置依存型IRツリーを通過して、SGUIコンポーネントのインスタンス化を開始する。(ブロック272)レンダーマネージャモジュール16は、SGUIコンポーネントがターゲット装置プラットフォーム内において拡張性のあるGUIコンポーネントライブラリ22に保存されているかどうかを判断する。(ブロック274)もしイエスなら、レンダーマネージャモジュール16は、装置プラットフォーム202の表示画面上に、カスタマイズされたアプリケーションGUIを表示することを指示する。(ブロック276)SGUIコンポーネントが、ターゲット装置プラットフォーム202内における拡張性のあるGUIコンポーネントライブラリ22内に保存されていないなら、レンダーマネージャモジュール16は、ライブラリサーバ206から装置プラットフォーム202へSGUIコンポーネントを動的にダウンロードする。(ブロック278)そして、レンダーマネージャモジュール16は、装置プラットフォーム202の表示画面上に、装置依存型アプリケーションGUIの表示を指示する。(ブロック276)
【0120】
GUIのマイグレーションのイベント前に、ユーザに対して利用可能な技術的特徴を提供する他、SGUIシステム10は、第1異種装置プラットフォームから第2異種装置プラットフォームへマイグレーションするGUIアプリケーションの実行状態を保存することができる。ここでいう実行状態とは、SGUIコンポーネントに影響を与えている拡張性のあるアプリケーションのエンドユーザがもたらした変化を指している。この変化はSGUIコンポーネントの変数(外観の変化、データエントリー、状態変化)を含んでもよい。図13は、第1異種装置プラットフォーム302、第2異種装置プラットフォーム304、そしてサーバコンピュータ306を有しているSGUIシステム10の実施形態により動作している通信システムのブロック図である。他の例において、本実施形態とは異なる数のプラットフォーム、及びサーバが利用可能なのはいうまでもない。
【0121】
第1異種装置プラットフォーム302、第2異種装置プラットフォーム304は、前に説明された、いかなる異種装置プラットフォームであってもよいし、かつ各々はレンダーマネージャモジュール16を有してもよい。サーバコンピュータ306はコンピュータ装置に類似のものであってよいし、また拡張性のあるGUIライブラリ12やカスタマイズモジュール14内にあるタスクマネージャモジュール18及び変換マネージャモジュール20を有していてもよい。他の例においてモジュールは、コンピュータ装置の処理能力、ネットワーク208の構成、プロバイダーの優先度などの様々な変化に応じながら、通信システム内にある装置へと別々に配信されてもよい。第1異種装置プラットフォーム302&第2異種装置プラットフォーム304とサーバ306間における通信は、ネットワーク208を介してもよい。
【0122】
前にも説明した通り、装置プラットフォーム独立型(PI)の中間表現は、拡張性のあるアプリケーションを開発の一部分として開発される。プラットフォーム独立型の中間表現は、プラットフォーム独立型の中間モデル形式で保存されてもよい。プラットフォーム独立型の中間モデルは、サーバ306、第1異種装置プラットフォーム302、第2異種装置プラットフォーム304あるいはネットワーク208と通信しているその他の装置内で保存されてもよい。
【0123】
本実施形態において、装置プラットフォーム独立型の中間表現は、最大の表示画面と最も大規模なユーザインターフェイスメカニズムを有している装置プラットフォームに基づいて特定されてもよい。ここでアプリケーション開発者は、拡張性のあるアプリケーションは最大の表示画面と最も大規模なユーザインターフェイスメカニズムで動作していることが予測できる。例えば、装置プラットフォーム独立型の中間表現は、大きな表示画面と複数のユーザインターフェイス(例:タッチスクリーン、マウス、キーボードなど)を持つラップトップコンピュータの動作に基づいて特定されてもよい。従って、プラットフォーム独立型のプレゼンテーションモデルから生成されたプラットフォーム特定型のプレゼンテーションは、プラットフォーム独立型のプレゼンテーションモデルと同サイズ、あるいはそれより小さいものであってもよい。
【0124】
図14は、IRツリー40及び対応するGUIプレゼンテーション404形式における拡張性のあるサーチアイテムアプリケーション用のプラットフォーム独立型のプレゼンテーションモデルである。前に説明済みだが、ルートノード44aはIRツリー40上に位置し、かつGUIプレゼンテーションを表してもよい。ルートノード44aの子供ノードは、コンテナノードあるいは拡張性のあるアプリケーションのエンドユーザに対して利用可能な異なるタスクを表しているタスクノードである。コンポーネントノード、個々のSGUIコンポーネント及びSGUIコンポーネント複合を表している「葉ノード」が広がるまで、コンテナノード44は、さらにサブタスクノード、サブのサブタスクノード等に分割可能な論理パネルであってもよい。
【0125】
図14の例において、「アイテムタスクのサーチ」として特定されているコンテナノード44mは、「タスクのサーチ」として特定されている第1タスクノード44n、「結果タスクの分類」として特定されている第2タスクノード44p、および「結果タスクの表示」として特定されている第3タスクノード44qを有している。タスクノード44n,44p,44qの各々は論理パネルを表しており、かつコンポーネントノードを有している。図の例においてコンポーネントノードは、IRツリー40のプラットフォーム独立型のプレゼンテーションモデルから生成されたJ2SE Swing GUIのようなGUIプレゼンテーション404内に描かれている。従ってGUIプレゼンテーション404を形成するために、IRツリー40のSGUIコンポーネントは、J2SE Swingにおけるプラットフォーム特定型のGUIコンポーネントへマッピングする。
【0126】
「タスクのサーチ」として特定されたコンテナノード44nは、3つのサブタスクノード(コンポーネントノード)に分割される論理パネルを表してもよい。ここで3つのサブタスクノードとは、SGUIコンポーネントあるいはSGUIコンポーネント複合である。3つのサブタスクノードは次のように表されている。
1.「アイテムの検索」(バーチャルラベル408)として表されている第1コンポーネントノード
2.「サーチ」(バーチャルボタン410)として表されている第2コンポーネントノード
3.バーチャルテキスト領域412として表されている第3コンポーネントノード。
拡張性のあるアプリケーションのエンドユーザが選択可能な分類優先タスクと表示選択タスクを提供するために、第2コンテナノード44p&第3コンテナノード44qと関連しているSGUIコンポーネント及び/またはSGUIコンポーネント複合も同様に、GUIプレゼンテーション404内にあるプラットフォーム特定のGUIコンポーネントにより表される。
【0127】
プラットフォーム独立型のプレゼンテーションモデル内において、SGUIコンポーネント及びSGUIコンポーネント複合は、プラットフォーム独立(PI)ウィジェット、あるいはプラットフォーム独立型のGUIウィジェットと見なしてもよい。SGUIコンポーネント及びSGUIコンポーネント複合は、プラットフォーム特定のプレゼンテーションにおけるプラットフォーム特定(PS)のウィジェットにより表される。プラットフォーム特定型のウィジェットを有するSGUIコンポーネントおよびSGUIコンポーネント複合は、事前に決められたマッピングに基づいている。ここでのマッピングは、拡張性のあるGUIコンポーネントライブラリモジュール22と他のライブラリにおける装置特定のGUIコンポーネント間のことである。事前に決められたマッピングは、プラットフォーム特定のプレゼンテーション内にあるプラットフォーム特定型のウィジェットを、プラットフォーム独立型のプレゼンテーションモデル内の(プラットフォーム独立型のウィジェットに対応している) SGUIコンポーネント、およびSGUIコンポーネント複合に対応づける。
【0128】
前にも説明した通り、プロパティはIRツリー40のタスクノード内に含まれてもよい。ここでプロパティは、少なくとも1つのタスクノード用の詳細なレイアウトプロパティ、少なくとも1つのタスク優先プロパティ、少なくとも1つの優先プロパティ、そして1つ以上の対応するタスクノードに関連する少なくとも1つの分割可能なプロパティのことである。タスクノード用の詳細なレイアウトプロパティは、例えばページ内でプラットフォーム独立型のウィジェットの位置を提供する、レイアウトを制御するJava(登録商標)Gridbag に似ている。タスク優先プロパティはブール(Boolean)機能の配列として実装され、その配列は特定の異種装置プラットフォームを表し、及び/または、タスクが特定のプラットフォームに適しているかどうかを示す。優先プロパティは、プラットフォーム独立型のウィジェット所望のレイアウト結果を表すための整数(インテジャ)として実装される。分割可能なプロパティは、プラットフォーム独立型のウィジェットが複数ページのプレゼンテーションに拡散可能なことを表すブール機能として実装される。
【0129】
ある実施形態において、各々のタスクノードは、対応するタスクノードの重要性を示している、少なくとも1つの重要プロパティを含んでもよい。重要プロパティは、タスクノードにより表されているプラットフォーム独立型のウィジェットが、コアあるいはオプションかということを示すブール機能として実装される。
【0130】
コアプラットフォーム独立型のウィジェットは、よく使われるプラットフォーム独立型のウィジェット、あるいは拡張性のあるアプリケーション内において主要なタスクを実行するプラットフォーム独立型のウィジェットとして定義されてもよい。残りのプラットフォーム独立型のウィジェットは、オプショナルのプラットフォーム独立型のウィジェットとして定義されてもよい。例えば、図14における「サーチアイテムタスク」コンテナノード44mは、前に説明した通り、3つの階層的なサブタスク(コンテナノード44n,44p,44q)を持っている。サーチアイテム実行のため、拡張性のあるアプリケーションのエンドユーザはバーチャルテキスト領域412にアイテム名を入力し、そしてサーチ処理を始める為にバーチャルボタン410を起動してもよい。しかしながら本例において、分類優先タスクと表示選択タスクはサーチ結果を表示するための付加的な機能なので、エンドユーザは両タスクを特定させる必要はない。このように、サーチタスク(コンテナノード44n)と関連のあるプラットフォーム独立型のウィジェットはコアとして特定され、そして結果分類タスク(コンテナノード44p)、および結果表示タスク(コンテナノード44q)と関連のあるプラットフォーム独立型のウィジェットはアプリケーション開発者によるオプションと特定されてもよい。
【0131】
再び図13に戻り、中間表現におけるアプリケーション開発者により特定されたプロパティは、タスクマネージャ18と変換マネージャモジュール20により利用されてもよい。GUIのマイグレーション中において、変換マネージャモジュール20はタスク優先プロパティを利用し、タスクマネージャ18は残りのプロパティを利用してもよい。
【0132】
図15は、第1異種装置プラットフォーム302から第2異種装置プラットフォーム304へ、GUIアプリケーションの実行状態がマイグレーションするプロセスを表しているフロー図である。同図のGUIアプリケーションのマイグレーションにおいて、プラットフォーム特定型のプレゼンテーションは、以前カスタマイズモジュール14におけるプラットフォーム独立型のプレゼンテーションモデルから生成され、そして第1異種装置プラットフォーム302へ提供されていた。第1異種装置プラットフォーム302は、プラットフォーム特定型のプレゼンテーションに基づき、対応する表示画面上に対話式の表示を提供してもよい。
【0133】
第1プラットフォーム302上に表示される、プラットフォーム特定型のプレゼンテーション内のプラットフォーム特定型のウィジェットの実行状態がシリアル化された時、動作は始まる。(ブロック502)プラットフォーム特定型のウィジェットのシリアル化された実行状態と共に、マイグレーションのターゲット装置として第2異種装置プラットフォーム304を特定するマイグレーション要求は、ネットワーク208経由でサーバ306へ伝達される。(ブロック504)プラットフォーム独立型のプレゼンテーションモデルに含まれているプラットフォーム独立型のウィジェットは、第1プラットフォーム302が提供するプラットフォーム特定型のウィジェットの実行状態により更新される。(ブロック506)プラットフォーム独立型のプレゼンテーションモデルのコピーが作られる。(ブロック508)
【0134】
サーバ306は、第2異種装置プラットフォーム304のGUI能力を調査し、そして表示画面サイズ、ユーザ入力メカニズム等のユーザインターフェイス関連の能力を確認する。(ブロック510)タスクマネージャ18はタスク優先プロパティを利用し、プラットフォーム独立型のプレゼンテーションモデルのコピーから不必要なタスクノードを除去し、そして第2異種装置プラットフォーム304用にプラットフォーム特定型のプレゼンテーションの生成を始める。(ブロック512)
【0135】
変換マネージャモジュール20はプラットフォーム独立型のプレゼンテーションモデルのコピーからノードを選択し、ノードに関連するプラットフォーム独立型のウィジェットを、第2異種装置プラットフォーム304用に、プラットフォーム特定型のウィジェットへマップする。(ブロック514)プラットフォーム特定型のウィジェットは、プラットフォーム特定型のプレゼンテーションのページ上に配置される。(ブロック516)ここでページサイズが、第2異種装置プラットフォーム304の表示画面より大きいかどうかを判定する。(ブロック518)もしページサイズが大きすぎて表示画面に適さない場合、変換マネージャモジュール20は、プラットフォーム独立型のプレゼンテーションモデルのコピーからプラットフォーム独立型のウィジェットをカスタマイズし、1あるいはそれ以上のページを表示画面520へと適合させる。(ブロック520)カスタマイズされたプラットフォーム独立型のウィジェットは、プラットフォーム特定型のプレゼンテーション用のプラットフォーム特定型のウィジェットへマップされる。(ブロック522)プラットフォーム独立型のプレゼンテーションモデルにおけるプラットフォーム独立型のウィジェットの実行状態が、プラットフォーム特定型のプレゼンテーション用のプラットフォーム特定型のウィジェットの実行状態へ適用される。(ブロック523)
【0136】
プラットフォーム独立型のプレゼンテーションモデル内において、未処理のノードがないかどうかを判定する。(ブロック524)もしイエスなら動作はブロック514へ戻り、別ノードを選択し、対応するプラットフォーム特定型のウィジェットをページ等へ追加し、そしてプラットフォーム特定型のプレゼンテーションの生成を続ける。もしノーなら、プラットフォーム特定型のプレゼンテーションにより利用されるプラットフォーム特定型のプレゼンテーションの生成されたページ、プラットフォーム独立型のプレゼンテーションモデルの最終コピー、および拡張性のあるGUIライブラリ12の一部分を第2異種装置プラットフォーム304へ送信する。(ブロック526)もしページが表示画面に適していたら(ブロック518)、動作はそのままブロック524へと進み、未処理のノードがないかどうかを判定する。第2異種装置プラットフォーム304のレンダーマネージャモジュール516は、送信されたプラットフォーム特定型のプレゼンテーション上、プラットフォーム独立型のプレゼンテーションモデルの最終コピー上、および拡張性のあるGUIライブラリ12の一部分を使っている表示画面上にプレゼンテーションを表示する。
【0137】
ページに適したプラットフォーム特定型のプレゼンテーションの生成中におけるカスタマイズは、ウィジェットのレイアウトカスタマイズとウィジェットの変換カスタマイズを含んでいてもよい。このようなカスタマイズは、次における要件に基づいている。(1)アプリケーション開発者が特定した最低限の指示により、比較的高品質のプレゼンテーションを生成する。(2)プレゼンテーション生成の遅れを最小限にするため、カスタマイズを比較的シンプルにする。(3)プラットフォーム特定型のプレゼンテーション全体のページを見るため、表示画面上においてスクロールを避ける。
【0138】
前にも設明した通り、レイアウトカスタマイズは、IRツリーにおける各々のノード処理、およびページ内において関連のあるプラットフォーム特定型のウィジェットを配置することを含んでもよい。またレイアウトカスタマイズ中におけるプラットフォーム特定型のウィジェットの配置において、ページを最適化して、ターゲット装置異種プラットフォームの表示画面に適合させる変換を実行してもよい。プラットフォーム特定型のウィジェットの最初のレイアウトは、アプリケーション開発者が特定するノードに関連したプラットフォーム特定型のウィジェットのレイアウトプロパティに基づいてもよい。レイアウトプロパティは、レイアウトを制御するJava(登録商標)Gridbagに類似のものであってよいし、かつページ上で対応するプラットフォーム特定型のウィジェットの相対的な位置を示すものであってもよい。もしページサイズがターゲット異種装置プラットフォームの表示画面に適合していないなら、プラットフォーム独立型のウィジェットをカスタマイズすることにより、プラットフォーム特定型のウィジェットのレイアウトは更にカスタマイズされる。
【0139】
更にレイアウトカスタマイズは、フローレイアウトマネージャを使いながら、ページ内にあるプラットフォーム独立型のウィジェットを再配置再配置してもよい。フローレイアウトマネージャを使うプラットフォーム独立型のウィジェットの再配置においては、例えば、プラットフォーム独立型のウィジェットを一列ではなく、一列以上に配置すること等を含めてもよい。再配置されたプラットフォーム独立型のウィジェットは、プレゼンテーションのページが表示画面のサイズを超えるプラットフォーム特定型のウィジェットに対応する、プラットフォーム独立型のウィジェットであってもよい。一方、物理的な空間や優先度などのクライテリアは、動的な再配置用に、ページ内のプラットフォーム特定型のウィジェットに対応している、どのプラットフォーム独立型のウィジェットを選択するかを決定してもよい。
【0140】
フローレイアウトマネージャは、変換マネージャモジュール20により起動されてもよいし、あるいは変換マネージャモジュール20の一部分であってもよい。フローレイアウトマネージャは、Java FlowLayoutである。さらに、分割可能なプロパティとしてアプリケーション開発者に特定され、かつSGUIコンポーネント複合であるプラットフォーム独立型のウィジェットは、SGUIコンポーネント単体に分割されてもよい。SGUIコンポーネント単体がマップされるプラットフォーム特定型のウィジェットは、SGUIコンポーネント単体あるいはその他のプロパティに関連する優先プロパティに基づきながら、プレゼンテーションの複数のページ間において分配されてもよい。分割されたSGUIコンポーネント単体のレイアウトは、フローレイアウトマネージャで実行されてもよい。ここでSGUIコンポーネント複合は、アプリケーション開発者により、非分割として特定されてもよい。以下におけるカスタマイズにおいて、プレゼンテーションのページが表示画面に適さない場合、変換カスタマイズを起動してもよい。
【0141】
変換カスタマイズは、変換ルールのアプリケーションを含んでいてもよい。変換ルールは、ターゲット異種装置プラットフォームの表示画面に適合させるため、ページ内におけるプラットフォーム特定型ウィジェットの適切なサイズ変換実現の為に適用されてもよい。変換カスタマイズの目的は、プレゼンテーションのページサイズを縮小し、異種装置プラットフォームの表示画面内に丁度適合させることにより、スクロールの使用を避けることである。
【0142】
変換カスタマイズ中において、変換マネージャモジュール20は、どのプラットフォーム独立型のウィジェットが変換され、そしてどのようにプラットフォーム独立型のウィジェットが変換されるかを決定してもよい。どのプラットフォーム独立型のウィジェットを変換するかの決定は、変換可能で、かつ変換ルーツをトリガするプラットフォーム独立型のウィジェットを特定する事に基づいてよい。変換ルールをトリガするプラットフォーム独立型のウィジェットは、プレゼンテーションのページサイズが表示画面のサイズを超えてしまう原因となるプラットフォーム特定型のウィジェットへマップする、非分割なSGUIコンポーネント単体、あるいは非分割なSGUIコンポーネント複合であってもよい。
【0143】
プラットフォーム独立型のウィジェットがどのように変換するかは、特定されたウィジェットに基づいている。プラットフォーム独立型のウィジェットがSGUIコンポーネント単体な場合、変換ルールがそのSGUIコンポーネント単体に適用されてもよい。しかしながら、プラットフォーム独立型のウィジェットがSGUIコンポーネント複合である場合、SGUIコンポーネント複合内にあるSGUIコンポーネント単体の各々は、SGUIコアコンポーネントとSGUIオプショナルコンポーネントとしてカテゴリー化される。SGUIコンポーネント複合内にあるSGUIコンポーネント単体のカテゴリー化は、プレゼンテーションモデルのタスクにおいて、アプリケーション開発者が特定する重要プロパティに基づいてもよい。
【0144】
プラットフォーム独立型のウィジェットを、よりコンパクトなウィジェットにする変換はGUIの有用性を劣化させるかもしれないので、変換ルールはSGUIオプショナルコンポーネントに適用される。もし重要プロパティによるSGUIオプショナルコンポーネントが特定されていない場合、あるいはページをターゲット異種装置プラットフォームへ適合させるためSGUIオプショナルコンポーネントのサイズを縮小することが適切でない場合、変換ルールはSGUIコアコンポーネントへ適用されてもよい。
【0145】
また変換マネージャモジュール20は、複数のルールの中から最も適した変換ルールを決定することにより、プラットフォーム独立型のウィジェット(SGUIコンポーネント単体)を変換してもよい。ここで言う適切な変換ルールとは、対応するプラットフォーム特定型のウィジェットのサイズを変換し、表示画面のサイズに適合させることである。変換ルールは、次の4つのタイプにカテゴリー化されてもよい。(1)「1から1タイプへの変換ルール」(2)「1から複数タイプへの変換ルール」(3)「複数の同クラスから1タイプへの変換ルール」(4)「複数から複数タイプへの変換ルール」
【0146】
「1対1タイプへの変換ルール」とは、プラットフォーム独立型のウィジェット(SGUIコンポーネント単体)を別のプラットフォーム独立型のウィジェット(SGUIコンポーネント単体)に変換することである。例を挙げると、図5における第1SGUIコンポーネント70は、1から1タイプの変換ルールにより、第2SGUIコンポーネント72であるドロップダウンボックスに変換される。「1から複数タイプへの変換ルール」とは、プラットフォーム独立型のウィジェット(SGUIコンポーネント単体)を複数のプラットフォーム独立型のウィジェット(各々のSGUIコンポーネント単体)へ変換することである。例を挙げると、データテーブルを表している単一のプラットフォーム独立型のウィジェットが、複数のデータリストを表している単一のプラットフォーム独立型のウィジェット、あるいは複数のデータリストを表している単一のプラットフォーム独立型のウィジェットに変換されてもよい。
【0147】
「複数の同クラスから1タイプへの変換ルール」とは、同じクラスに属する複数のプラットフォーム独立型のウィジェット(各々のSGUIコンポーネント単体)を、プラットフォーム独立型のウィジェット(SGUIコンポーネント単体)に変換することである。例を挙げると、同じクラスにあり、かつラジオボタンを表している複数の単一のプラットフォーム独立型のウィジェットは、リストあるいはドロップダウンボックスを表している単一のプラットフォーム独立型のウィジェットに変換されてもよい。同様に、テキスト領域あるいはラベルを表している、いくつかの単一のプラットフォーム独立型のウィジェットは、各々1つのテキスト領域、あるいはドロップダウンボックスを表している単一のプラットフォーム独立型のウィジェットに変換されてもよい。
【0148】
「複数から複数タイプへの変換ルール」とは、異なるクラスに属する複数のプラットフォーム独立型のウィジェットを、別の対応する複数のプラットフォーム独立型のウィジェットに変換することである。各々の複数から複数タイプへの変換ルールは、「1つ以上の複数の同クラスから1タイプへの変換ルール」、及びフォーム記入関係のような、異なるプラットフォーム独立型のウィジェット間における対応関係を含んでいてもよい。
【0149】
フォーム記入とは、拡張性のあるアプリケーションのエンドユーザが入力したデータをプラットフォーム特定型のウィジェット形式で表すことを可能にする、プラットフォーム独立型のウィジェット間における関係を示している。言い換えれば、第1プラットフォーム特定型のプレゼンテーションにあるプラットフォーム特定型のウィジェットの状態を、第2プラットフォーム特定型のプレゼンテーションへ変換されたプラットフォーム特定型のウィジェットと同様の状態にすることである。プラットフォーム独立型のウィジェット間における関係は、開発者、知識ベース型システム、実験、あるいはプラットフォーム独立型のウィジェットと変換されたプラットフォーム独立型のウィジェット間において関係を作るその他のメカニズムにより、プラットフォーム独立型のプレゼンテーションモデルにおいて提供可能である。
【0150】
例えば、図6にあるデータエントリ80にあるラベル(例:「アイテム名」、「ブランド名」)はピックリスト86に変換され、そして対応するデータエントリ領域は、拡張性のある「複数の同クラスから1タイプへの変換ルール」を利用している単一のデータエントリ88へと変換される。これら2つの変換は、プラットフォーム独立型のプレゼンテーションモデル、およびプラットフォーム特定型モデルにおけるフォーム記入関係にリンクさせてもよい。
【0151】
変換マネージャモジュール20により、「複数の同クラスから1タイプへの変換ルール」、および「複数から複数タイプへの変換ルール」で変換されたプラットフォーム独立型のウィジェットを、他のプラットフォーム独立型のウィジェットへリンクさせてもよい。リンクは、プレゼンテーション内の2つ以上のプラットフォーム特定型のウィジェット間における動作関係(例:図14のバーチャルボタン410とバーチャルテキスト領域412間における動作関係)に関連している。第1プラットフォーム特定型のウィジェットと第2プラットフォーム特定型のウィジェット間におけるリンクは、第1プラットフォーム特定型のウィジェットの状態を変化させることになり、かつ第2プラットフォーム特定型のウィジェットの状態を変化させることになる。プラットフォーム特定型のウィジェット間におけるリンクは、プラットフォーム独立型のプレゼンテーションモデルにおいて、対応する第1&第2プラットフォーム独立型のウィジェットのリンクにより提供されてもよい。
【0152】
変換ルールが採用されると、オリジナルプラットフォーム独立型のウィジェットの実行状態は別のフォームで表されてもよい。異なる変換ルールが特定のプラットフォームの制約に基づきオリジナルプラットフォーム独立型のウィジェットに対して適用可能なので、プラットフォーム特定型のウィジェットの実行状態が変換可能となる。オリジナルプラットフォーム独立型のウィジェットの実行状態は、プラットフォーム独立型のプレゼンテーションモデルに保存されてもよい。つまり、変換されたプラットフォーム独立型のウィジェットの実行状態は、オリジナルプラットフォーム独立型のウィジェットの実行状態へとマップされてもよい。
【0153】
変換されたプラットフォーム独立型のウィジェットは、対応するプラットフォーム特定型のウィジェットとしてターゲット装置の表示画面上に表示される、変換ルールにより選択された装置独立型のウィジェットであってもよい。オリジナルプラットフォーム独立型のウィジェットは、表示画面上に表示される、開発者が選んだ装置独立型のウィジェットである。オリジナルプラットフォーム独立型のウィジェットは、プラットフォーム独立型のプレゼンテーションモデルに接続されてもよい。同様に、変換が成功したとき、変換されたプラットフォーム独立型のウィジェットもプラットフォーム独立型のプレゼンテーションモデルに接続されてもよい。上記の両接続は、コンポーネントノード形式で表現されてもよい。ここで各々のコンポーネントノードは、少なくとも1つのプラットフォーム独立型のウィジェットを表している。
【0154】
実行状態の変換をするため、プラットフォーム独立型のプレゼンテーションモデルは、オリジナルプラットフォーム独立型のウィジェット及び変換されたプラットフォーム独立型のウィジェット両方のインスタンスを含んでいてもよい。GUIのマイグレーションの実行時間次第で、オリジナルプラットフォーム独立型のウィジェットだけのインスタンス、あるいは変換されたプラットフォーム独立型のウィジェットだけのインスタンスが、同時にアクティブ状態になってもよい。
【0155】
図16は、変換されたプラットフォーム独立型のウィジェットの接続、及びアクティブ状態における変換されたプラットフォーム独立型のウィジェットの変化を表しているプラットフォーム独立型のプレゼンテーションモデル530の例である。図のプラットフォーム独立型のプレゼンテーションモデル530は、コンテナノード532、及び関連性のある複数のオリジナルコンポーネントノード534を有している。コンテナノード532は、論理パネルであるプラットフォーム独立型のウィジェットを表してもよい。また各々のオリジナルコンポーネントノード534、及び関連のあるプラットフォーム独立型のウィジェットは、パネル内のラジオボタン(RB)である、プラットフォーム独立型のウィジェットを表してもよい。
【0156】
プラットフォーム独立型のプレゼンテーションモデルのコピー536による、プラットフォーム特定型のプレゼンテーションの生成中において、矢印537で示されている変換が起こり得る。プラットフォーム独立型のウィジェットへマップされるプラットフォーム特定型のウィジェット(コンテナノード532)が大きいため、ターゲット異種装置の表示画面上に配置できない時、この変換は起こる。例えば、コンテナノード532を変えずに、ラジオボタン(オリジナルコンポーネントノード534)を表している全てのプラットフォーム独立型のウィジェットを、変換されたコンポーネントノード538(コンボボックス:CB)へ変換してもよい。コンボボックスは、ラジオボタンと類似の機能を提供する小さなプラットフォーム独立型のウィジェットであってもよい。
【0157】
変換されたコンポーネントノード538は、変換されたウィジェットを保存、あるいは表すためのプラットフォーム独立型のプレゼンテーションモデルのコピー536において作られた新しいコンポーネントノードであってもよい。以下の変換において、変換されたコンポーネントノード538は、「変換された子供ノード」としてコンテナノード532にリンクされることにより、新しい論理関係を形成してもよい。新しい論理関係がアクティブになることにより、コンテナノード532とオリジナルコンポーネントノード534間における既存の論理関係と置き換えられてもよい。変換された子供ノード(変換されたコンポーネントノード538)は、コンテナノード532を特有の子供ノードとしてもよい。
【0158】
コンテナノード532とオリジナルコンポーネントノード534間における前の論理関係は、図16において点線で表されている、プラットフォーム独立型のプレゼンテーションモデルのコピー536の論理参照として保存されてもよい。しかしながらオリジナルコンポーネントノード534は、開発者が明確に特定していない限り、コンテナノード532の子供ノードである必要はない。このようにIRツリーのレイアウト構造において、オリジナルコンポーネントノード534は含まれないことになる。またこの論理関係は、あるプラットフォーム特定型のプレゼンテーションから別のプラットフォーム特定型のプレゼンテーションへの実行状態のマイグレーション、及びイベント処理をサポートするのに保存されてもよい。
【0159】
最も最適な変換ルールを選択するため、ルールには種類に応じて優先順位が設定されていく。「複数から複数タイプへの変換ルール」は大幅に全体のプレゼンテーションを変え、そしてGUIの有用性を劣化させるので、「複数から複数タイプへの変換ルール」には、最も低い優先度が割り当てられてもよい。その他の変換ルールの優先度を決定するに当たって、変換マネージャモジュール20が各ルールを選択してもよい。
【0160】
各変換ルールの選別機能により、オリジナルプラットフォーム独立型のウィジェットが有する機能、あるいはその他パラメータと適合性のない、変換されたプラットフォーム独立型のウィジェットを作成する変換ルールを削除してもよい。適合性のない機能には、オリジナルプラットフォーム独立型のウィジェットが、変換されたオリジナルプラットフォーム独立型のウィジェットによりサポートされていない入力メカニズムを要求する、変換ルールが含まれている。例えば、アプリケーション開発者が、アクション実行のためにマウスインイベント(例:マウスの矢印がボタンを指しているとき(クリックではない))に対応しているJ2ME DoJaボタンへ、プラットフォーム独立型のウィジェット用のマッピングを特定するとする。しかしながら、ソフトキーはマウスインイベントをサポートしないので、変換カスタマイズの間、ボタンはソフトキーに変換されることはない。このように、当該プラットフォーム独立型のウィジェット用に、かつ当該変換をサポートする変換ルールは、選別機能により削除されてもよい。
【0161】
変換マネージャモジュール20は、一連のスペース縮小パラメータに基づき、変換ルールに優先順位を付けてもよい。スペース縮小パラメータの優先順位とは、変換に基づくプラットフォーム独立型のウィジェットのサイズ、及び/または変換ルールをプラットフォーム独立型のウィジェットに適用することから生じるサイズ縮小量に基づいてもよい。プラットフォーム独立型のプレゼンテーションにあるプラットフォーム独立型のウィジェットにおけるスペース縮小とは、対応するプラットフォーム独立型のウィジェットにおけるスペース縮小により特定される。
【0162】
最小のスペース縮小を提供する変換ルールには、最も高い優先順位が与えられてもよい。あまりコンパクトでない対応するプラットフォーム特定型のウィジェットは、コンパクトなプラットフォーム特定型のウィジェットより高いGUIの有用性を持っているので、最も高い優先順位は最小のスペース縮小を提供する変換ルールに与えられてもよい。スペース縮小パラメータは、プラットフォーム独立型のウィジェットの幅縮小率、高さ縮小率、そして大きさ縮小率を含んでいてもよい。
【0163】
変換ルールをトリガさせるプラットフォーム独立型のウィジェットの状態に基づいて、スペース縮小パラメータの優先順位は変更されてもよい。例えばプラットフォーム独立型のウィジェット用の変換ルールが、幅があって、かつ対応するプラットフォーム独立型のウィジェットによりトリガされると、幅縮小率が最も重要なパラメータとして特定されてもよい。次に高さ縮小率が2番目に重要なパラメータとして特定された場合、大きさ縮小率は無視されてもよい。同様に変換ルールが、高すぎるプラットフォーム特定型のウィジェットによりトリガされると、高さ縮小率が最も重要なパラメータとして特定され、次に幅縮小率が2番目に重要なパラメータとして特定されるので、大きさ縮小率は無視されてもよい。また変換ルールが、幅と高さが両方あり過ぎるプラットフォーム特定型のウィジェットによりトリガされると、大きさ縮小率が最も重要なパラメータとして特定され、残りのパラメータ(幅と高さ縮小率)は無視されてもよい。
【0164】
変換ルールをタイプ化するカテゴライゼーション、選別、およびスペース縮小を実行することにより、各々に対し優先順位が付けられてもよい。また、タイプ化のカテゴライゼーション、選別、またはスペース縮小だけを利用することにより、優先順位が付けられてもよい。さらに、タイプ化のカテゴライゼーション、選別、またはスペース縮小のいかなる組み合わせや順番などを利用することにより、優先順位が付けられてもよい。
【0165】
異種装置プラットフォームがJava技術を用いて拡張性のあるアプリケーションを実行することに関し、変換ルールはJavaクラスで特定されてもよい。各々の変換ルールは、1つのJavaクラスで表される。クラスの詳細に関して、実行状態及びイベント処理の変換が、プラットフォーム独立型のウィジェット用のアプリケーョン開発者によって特定されてもよい。
【0166】
例えば図6のような変換を実施する、Javaを用いて作成される変換ルールの例を以下に示す。

プライベートクラスのフォーム記入の変換

/*プラットフォーム特定型のウィジェット変換*/
・新しいプラットフォーム独立型のウィジェット(ドロップダウンボックス(DD1
))の構成
・バーチャルな「アイテム名」、「ブランド名」等、ラベルのプロパティ(例:フォントサイズ)をDD1へコピー
・バーチャルテキスト領域(TF1)の構成
・バーチャルな「アイテム名」、「ブランド名」等、テキスト領域のプロパティをTF1へコピー
/*実行状態の変換*/
・オリジナルのバーチャルラベルとテキスト領域のペア例を、以下のJavaハッシュテーブルに記録:

【表1】

・拡張性のある選択イベントのリスナー(イベントライブラリからの)をDD1へ追加、そしてアクションを特定。よってエンドユーザがアイテムをDD1 (例:アイテム名) から選択すると、それに対応する物(例:ボトル水)がハッシュテーブルから選択される。
・その物をTF1上に表示する。

/*イベント処理の変換*/
・エンドユーザがエンターキー、あるいは相当のキーをヒットした時、「アイテム名」、あるいは「ブランド名」等、テキスト領域にある物が自動的に更新されることをアプリケーション開発者は特定する。
・マイグレーション後に、エンターキーイベントが受信されたら、TF1上に、例えば「コーラ」のような物を入力する。
・例えば「アイテム名」のような、今選択されたアイテムをDD1上に入力する。
・ハッシュテーブル上において、選択されたアイテムのタイトルを検索し、そしてそれに対応するアイテム(物)を更新する。
・イベントの出所として入力された「アイテム名」、及び新しい物として入力された「コーラ」を用いてイベントを作成する。
・オリジナルの状態と変換された状態を同期化させるため、イベントをオリジナルのバーチャル「アイテム名」テキスト領域へ送信。
【0167】
図17は、図13と図14を参照して説明されるレイアウトカスタマイズのプロセス、及び変換カスタマイズのプロセスの実施形態を表すフロー図である。動作はIRツリーのルートノード44aを現在ノードに設定することから始まる。(ブロック540)現在ノードの未処理である直接子供ノードがあるかどうかを判定する。(ブロック542)イエスなら、最も高い優先順位の未処理の直接子供ノードが現在ノードへ設定され(ブロック544)、処理はブロック542へ戻る。もし未処理の直接子供ノードがないなら、現在ノードはルートノード44aであるかどうかを判定する。(ブロック546)もしイエスなら、プラットフォーム特定型のプレゼンテーション、プラットフォーム独立型のプレゼンテーション、及び拡張性のあるGUIライブラリ12の関連性のある部分が、ターゲット異種装置プラットフォームへ送信される。(ブロック548)
【0168】
もし現在ノードがルートノード44aでない場合、プラットフォーム特定型のプレゼンテーションモデル内で現在ノードと関連のあるサブノードで表されているプラットフォーム特定型のウィジェットが、アプリケーション開発者によって特定されているプロパティに基づいて、ページ上に配置されてもよい。(ブロック550)プロパティは、ページ上でプラットフォーム特定型のウィジェットの位置を示すため、レイアウトを制御するJava Gridbag に類似であってもよい。ページのサイズが算出される。(ブロック552)ページのサイズが、ターゲット表示画面のサイズと比較される。(ブロック554)もしページが、ターゲット表示画面内に適合するなら、現在ノードに関連しているプラットフォーム独立型のウィジェットが、プラットフォーム独立型のプレゼンテーションモデルのコピー内に保存される。(ブロック556)処理済みの現在ノードがマークされ(ブロック558)、別の現在ノードを選択するために、動作はブロック540へ戻る。一方ページのサイズが、ターゲット表示画面より大きいのなら(ブロック554)、フローレイアウトマネージャを使っているプラットフォーム独立型のウィジェットを再配置することにより、プラットフォーム特定型のウィジェットはページ内で動的に再配置される。(ブロック560)
【0169】
図18に進み、ページのサイズが、再びターゲット表示画面のサイズと比較される(ブロック562)。もしページがターゲット表示画面に適合するのなら、動作はブロック556へと戻り、プラットフォーム特定型のプレゼンテーションのコピー内においてプラットフォーム独立型のウィジェットを保存する。もしページがまだターゲット表示画面のサイズより大きいのなら、現在ノード(プラットフォーム独立型のウィジェット)、あるいは他の関連するノードが分割可能かどうかを判定する(ブロック564)。ブロック566でイエスと判定されたなら、少なくとも第2ページがインスタンス化される。プレゼンテーションがページに適合するまで、特定された分割ノードに関連しているプラットフォーム特定型のウィジェットが、フローマネージャを使うことにより第1ページと少なくとも第2ページの間で分配される(ブロック568)。プラットフォーム独立型のウィジェットが、プラットフォーム独立型のプレゼンテーションのコピー内において保存される。(ブロック569)処理済みの現在ノードがマークされ(ブロック570)、別の現在ノードを選択するために、動作はブロック540へ戻る。
【0170】
関連のあるサブノード、あるいは現在ノードのいずれもが分割できない場合(ブロック564)、現在ノードと関連のある変換可能なプラットフォーム独立型のウィジェットが特定される。(ブロック574)プラットフォーム独立型のウィジェットが、SGUIコンポーネントであるかどうかの判定が実行される。(ブロック576)もしプラットフォーム独立型のウィジェットがSGUIコンポーネントであるなら、複合ウィジェット内にあるSGUIコンポーネント単体は、重要プロパティに基づいたSGUIコアコンポーネント、及びSGUIオプショナルコンポーネントとして、カテゴリー化される。(ブロック578)
【0171】
図19に進み、SGUIオプショナルコンポーネントが全て処理されたかどうかを判定する。(ブロック580)もしノーなら、次の未処理のSGUIオプショナルコンポーネントが選択される。(ブロック582)適用可能な全ての変換ルールが、選択された全てのSGUIコンポーネント用に検索される。(ブロック584)検索された変換ルールが、4つある変換ルールの中の1つとして特定される。(ブロック586)「複数から複数タイプへの変換ルール」に対し、最も低い優先順位が付けられる。(ブロック588)残り3つの変換ルールについては選別され、不適合なルールが除去される。(ブロック590)残り3つの変換ルールに関して、変換されたSGUIコンポーネントの予想されるスペース縮小量が算出される。(ブロック592)
【0172】
図20に進み、スペース縮小量に基づいて、残りの変換ルールに対しても優先順位が付けられる。(ブロック594)最も高い優先順位(最も少ないスペース縮小)を持つ変換ルールが、SGUIコンポーネントに適用される。(ブロック596)変換されたSGUIコンポーネントが、プラットフォーム特定型のウィジェットへマップされる。(ブロック598)プラットフォーム特定型のウィジェットが、フローレイアウトマネージャにより、ページ内に配置される。(ブロック599)ここでページが、ターゲット異種装置プラットフォームの表示画面より大きいかどうかを判断する。(ブロック600)もしノーなら、動作は図17のブロック556に戻り、プラットフォーム独立型のプレゼンテーションモデル等のコピー内に、現在ノードと関連したプラットフォーム独立型のウィジェットを保存する。もしページがまだ大きすぎるのなら、プラットフォーム独立型のウィジェットに内の全てのSGUIコンポーネントが処理されたかどうかを判定する。(ブロック602)もしノーなら、動作は図19のブロック580へ戻る。もしプラットフォーム独立型のウィジェットにおける全てのSGUIコンポーネントが処理されているのなら、対応するプラットフォーム独立型のウィジェット用のノードが、処理されたものとしてマークされる。(ブロック604)現在ノードと関連している全ての変換可能なプラットフォーム独立型のウィジェットが、処理されたどうかを判定する。(ブロック606)もしノーなら、動作は図18のブロック574に戻り、その他の変換可能なプラットフォーム独立型のウィジェットを特定する。もし現在ノードと関連している全ての変換可能なプラットフォーム独立型のウィジェットが処理されたなら、ノードを縮小することが不可能だというアラームがアプリケーション開発者用に生成され(ブロック608)、別の現在ノードを選択するため、動作は図17のブロック504へ戻る。
【0173】
図19に戻り、プラットフォーム独立型のウィジェットにおける全てのSGUIオプショナルコンポーネントが処理された(あるいは存在しないか)と判断されると(ブロック580)、未処理のSGUIコアコンポーネントが選択され(ブロック610)、動作はブロック584へと進む。図18に戻るが、プラットフォーム独立型のウィジェットがSGUIコンポーネント複合でなければ、動作は図19のブロック584へと進み、SGUIコンポーネント複合を持つプラットフォーム独立型のウィジェットに似た、SGUIコンポーネント単体を持つプラットフォーム独立型のウィジェットの処理をする。
【0174】
図13へ戻り、実行状態の変換、及びプラットフォーム独立型のウィジェットのイベント処理は、変換カスタマイズの一部分として起こってもよい。前にも述べたが、マイグレーションしたプレゼンテーションは、オリジナルのプレゼンテーションから、異なる一連のプラットフォーム独立型のウィジェットを採用してもよい。エンドユーザ用にアプリケーションの継続性を保つため、オリジナルプラットフォーム特定型のプレゼンテーションにおけるプラットフォーム特定型のウィジェットの実行状態は、マイグレーションしたプラットフォーム特定型のプレゼンテーションにおけるプラットフォーム特定型のウィジェットへマップされてもよい。
【0175】
実行状態のマイグレーションを、拡張性のあるGUIライブラリ12を用いて実行することにより、第1プラットフォーム特定型のプレゼンテーションにおけるプラットフォーム特定型のウィジェットの現実行状態が、プラットフォーム独立型のプレゼンテーションモデル(中間プレゼンテーション)内の対応するプラットフォーム独立型のウィジェットへマップされてもよい。プラットフォーム独立型のプレゼンテーションモデルのコピーがコピー&削除された後、ターゲット異種装置プラットフォーム用の第2プラットフォーム特定型のプレゼンテーションの開発中に、ノードに関連した対応しているプラットフォーム特定型のウィジェットが、ページ内に配置される。プラットフォーム独立型のプレゼンテーションモデルにおけるプラットフォーム独立型のウィジェットの実行状態が、第2プラットフォーム特定型のプレゼンテーションにおいて、対応しているプラットフォーム特定型のウィジェットの実行状態として適用されてもよい。したがって、第1プラットフォーム特定型のプレゼンテーションの現実行状態が、第2プラットフォーム特定型のプレゼンテーションにおいて実装されてもよい。
【0176】
マイグレーションの前に、プラットフォーム特定型のウィジェットの現実行状態と、それに対応するプラットフォーム独立型のウィジェットの現実行状態を同期させてもよい。この同期化には、外観、状態変化、あるいは/またはプラットフォーム特定型のウィジェットから入手されたデータを有する、プラットフォーム独立型のウィジェットの実行状態を更新することを含んでもよい。ターゲット異種装置プラットフォーム用のプラットフォーム特定型プレゼンテーションの開発中において、プラットフォーム独立型のウィジェットの実行状態が保存されてもよい。マイグレーションに続いて、プラットフォーム独立型のウィジェットの実行状態が検索され、そしてプラットフォーム特定型のプレゼンテーションを用いる、マイグレーションしたプラットフォーム特定型のウィジェット上にプラットフォーム独立型のウィジェットの実行状態が表わされる。
【0177】
GUIのマイグレーションのイベント中に、変換ルールが適用されたとき、オリジナルプラットフォーム独立型のウィジェットの現実行状態を変換されたプラットフォーム独立型のウィジェットにマップすることにより、類似のプロセスが実行されてもよい。変換されたプラットフォーム独立型のウィジェットは、プラットフォーム特定型のプレゼンテーションにおけるプラットフォーム特定型のウィジェットへマップされてもよい。プラットフォーム特定型のプレゼンテーションを達成する為の、プラットフォーム独立型のプレゼンテーションのレイアウト及び変換が実行されてもよい。(図17から20において説明済み)
【0178】
レイアウト及び変換中において、プラットフォーム独立型のウィジェット(SGUIコンポーネント)がプラットフォーム特定型のウィジェットへマップされると、SGUIコンポーネントライブラリにおけるAPIは、同様にプラットフォーム独立型のウィジェットの状態をプラットフォーム特定型のウィジェットの状態へマップしてもよい。このようにGUIのマイグレーションが起こると、実行状態は、プラットフォーム独立型のプレゼンテーションにおけるプラットフォーム独立型のウィジェットとプラットフォーム特定型のプレゼンテーションにおけるプラットフォーム特定型のウィジェットの間を往来してもよい。
【0179】
実行状態のマッピングは、各々の変換ルールに対して特有のものなので、各々の変換ルールは実行状態を変換できるメカニズムを提供してもよい。実行状態の変換例が、Java(登録商標)コードを使って作成される変換ルールの例(前に説明済み)に含まれていてもよい。コード例に関して、全てのオリジナルのテキスト領域の状態が、Javaハッシュテーブル(既に説明済み)に保存される。変換されたテキスト領域は、ドロップダウンボックスの状態に基づき、全てのオリジナルのテキスト領域の状態を一度に表示する。
【0180】
実行状態の変換、またはマッピングの手順は、異なるタイプの変換において適用されてもよい。例えば、SGUIシステムの初期使用中やマイグレーション中において、プラットフォーム独立型のウィジェットの実行状態が、プラットフォーム特定型のウィジェットの実行状態に変換される。さらにマイグレーションの前に、プラットフォーム特定型のウィジェットの実行状態が、プラットフォーム独立型のウィジェットの実行状態へ変換されてもよい。さらに、プラットフォーム独立型のウィジェットの実行状態が、別のプラットフォーム独立型のウィジェットの実行状態へ変換されてもよい。(例:プラットフォーム特定型のプレゼテーションの進展中に、変換がトリガされた時)
【0181】
図16を参照しながら説明した通り、例えばラジオボタンのセットのような、スペースを取り過ぎる複数の第1コンポーネントノード534は、コンボボックスのような、新しい第2コンポーネントノード単体538への変換が必要かもしれない。ラジオボタンの実行状態からコンボボックスの実行状態への実行状態の変換は、プラットフォーム独立型のラジオボタンの実行状態から、マッピングを通して、プラットフォーム独立型のコンボボックスの実行状態への変換を含んでもよい。またマッピングを通して、プラットフォーム独立型のラジオボタンの実行状態が、プラットフォーム独立型のコンボボックスの実行状態へ変換されてもよい。さらに、プラットフォーム特定型のコンボボックスからプラットフォーム独立型のコンボボックスへ実行状態を変換する、実行状態のマッピングが実行されてもよい。プラットフォーム独立型をプラットフォーム独立型の実行状態の変換へ用いることにより、プラットフォーム独立型のプレゼンテーションモデルは、ウィジェットの実行状態を保存することが可能になる。
【0182】
図21は、実行状態の変換とプラットフォーム独立型のウィジェットのマッピング間における一般的な動作を表しているプロセスのフロー図である。オリジナルプラットフォーム独立型のウィジェットのタイプが特定されるところで、動作は始まる。(ブロック650)例えば、ウィジェットのタイプは、ラジオボタンタイプやコンボボックスタイプなどである。オリジナルプラットフォーム独立型のウィジェットが、少なくとも1つの変換されたプラットフォーム独立型のウィジェットに変換される。(ブロック652)変換が成功すると、変換されたウィジェットのタイプが特定される。(ブロック654)オリジナルプラットフォーム独立型のウィジェットの実行状態が検索される。(ブロック656)実行状態が、決定された構成(例:配列)で保存される。(ブロック658)ウィジェットのタイプに応じて、オリジナルプラットフォーム独立型のウィジェットの実行状態が、変換されたプラットフォーム独立型のウィジェットの実行状態へ変換される。(ブロック660)変換された実行状態は、変換されたプラットフォーム独立型のウィジェットに関連づけて保存される。(ブロック662)変換されたプラットフォーム独立型のウィジェットが、プラットフォーム特定型のプレゼンテーション内のプラットフォーム特定型のウィジェットへマップされる。(ブロック664)変換されたプラットフォーム独立型のウィジェットの実行状態が、プラットフォーム特定型のウィジェットの実行状態へマップされる。(ブロック666)変換されたプラットフォーム独立型のウィジェットの実行状態が、変換されたプラットフォーム特定型のウィジェット上に表される。(ブロック668)
【0183】
イベント処理の変換は、GUIのマイグレーション後に、同レベルのGUIインタラクションを提供するので重要である。マウスボタンを押したり、あるいは第1異種装置プラットフォーム上におけるプラットフォーム特定型のウィジェットのタイプされた文字入力等のイベントが、バーチャルイベント形成のために抽出されてもよい。別の異種装置プラットフォームにおいて、上記プラットフォーム特定型のウィジェットに対して同じ入力を表している異なるイベントが、同様に同じバーチャルイベント形成のために抽出されてもよい。異種装置プラットフォーム上における異なるイベントが、バーチャルイベントに基づいている、プラットフォーム独立型のプレゼンテーションモデル内のプラットフォーム独立型のウィジェットの同じ入力(を表している異なるイベント)へマップされてもよい。
【0184】
例えば図6が、J2SE SWINGプラットフォームからJ2ME Personal Java AWT プラットフォームまでの、GUIのマイグレーションを表していると仮定する。マイグレーションの前において、エンドユーザは、SWINGテキスト領域であるかもしれない「アイテム名」として特定されているデータを、データエントリ80に入力し、そしてSWINGイベントが生成されてもよい。SWINGイベントは、データベース内に「アイテム名」データを保存するアクションを引き起こしてもよい。マイグレーション後において、SWINGテキスト領域がAWTテキスト領域へと変換したとき、AWTテキスト領域がAWTイベントのみをサポートしていたとしても、SWINGイベントは同様のアクションを引き起こしてもよい。
【0185】
拡張性のあるGUIライブラリ12を使うことにより、SWINGイベントとAWTイベントが、汎用のバーチャルイベント形成用に抽出されてもよい。このように、汎用なバーチャルイベントが受信されたとき(例:「アイテム名」データが入力されたとき)、それに関連するアクションが引き起こされる。変換ルールがプラットフォーム独立型のウィジェットに適用されたとき、上記と同様な抽出が適用されてもよい。イベントマッピングは、各々の変換ルールに対して特有のものなので、各々の変換ルールはまたイベント処理の変換を提供してもよい。イベント処理の変換例は、Javaを用いて作成された変換ルールの例に関する個所で既に説明済みである。(図6参照)コードに関して、イベントが、変換された単一のデータエントリ88から生成されたとき、変換マネージャモジュール20は、複数のデータエントリ80内においてオリジナルのテキスト領域として動作し、そしてアクションを引き起こすためにイベントを送信してもよい。
【0186】
実行状態の変換あるいはマッピングと同様に、イベント処理の変換、あるいはマッピングも各々の変換ルールに対して特有のものであってもよい。実行状態とは違い、イベント処理は実行時間により異なるものではないので、イベント処理のマイグレーションは必要ではない。代わりに、少なくとも1つのオリジナルプラットフォーム独立型のウィジェットのタイプ、及び少なくとも1つの変換されたオリジナルプラットフォーム独立型のウィジェットのタイプが特定される。そして、両方のタイプを利用できるイベント処理のメカニズムが、特定されてもよい。オリジナルプラットフォーム独立型のウィジェットのイベント処理メカニズムは、変換されたプラットフォーム独立型ウィジェットのイベント処理メカニズムにマップされてもよい。マッピングにより、オリジナルプラットフォーム独立型のウィジェットの状態変化に影響を与えている、入出力機能が可能になる。この機能は、変換されたプラットフォーム独立型ウィジェットにより実行される。
【0187】
既に記載済みのSGUIシステムは、拡張性のあるアプリケーションのアプリケーションGUI用に装置プラットフォーム独立型の動作を提供している。SGUIシステムの拡張性により、拡張性のあるアプリケーションは、異なるサイズの表示画面、入力方法、及び異種装置プラットフォームのユーザインターフェイスに関連しているGUIライブラリでの動作が可能となる。さらに、SGUIシステム全体のデザインにより、拡張性のあるアプリケーションが動作可能な異種装置プラットフォームのユーザインターフェイスに関連する複雑性を回避しながら、拡張性を有するアプリケーションの開発者は、手軽にSGUIシステムを使うことができる。
【0188】
SGUIシステムにより、拡張性のあるアプリケーションにおいて、装置プラットフォーム独立型のアプリケーションGUIの使用が可能になる。アプリケーションGUIは、SGUIシステムがターゲット装置プラットフォーム用にカスタマイズするプラットフォーム独立型のプレゼンテーションモデルにより表されてもよい。プラットフォーム独立型のプレゼンテーションモデルのカスタマイズは、拡張性のあるアプリケーションにより特定されるプロパティ、及びターゲット装置プラットフォームの機能や性能に基づいてもよい。したがって、装置プラットフォーム独立型のアプリケーションGUIは、複数の異種装置プラットフォーム上において表示される装置プラットフォーム特定型のアプリケーションGUI用に、SGUIシステムによりカスタマイズされてもよい。
【0189】
SGUIシステムは3つの長所を持っている。1つめはGUIのマイグレーションのコンセプトである。2つめはエンドユーザが、スクロール機能を使用しなくても、変換を用いることによりプレゼンテーションのページをターゲット異種装置プラットフォームの表示画面に適合できることである。3つめは、SGUIシステムが有する柔軟性により、アプリケーション開発者は、特定の拡張性のあるアプリケーションのアプリケーションGUIをベストサポートするアプリケーション特定型の変換ルールの設定することが可能になる。
【0190】
本発明を説明するために、特定の実施形態を使用したが、本発明の趣旨を逸脱しない範囲で、本発明に対し種々の変更または付加を施すことは、当業者にとって容易である。したがって、本出願における図面と説明は、単なる実例に過ぎず、本発明を限定するものではない。
【符号の説明】
【0191】
10……SGUIシステム、12……拡張性のあるGUIライブラリ(モジュール)、14……カスタマイズモジュール、16……レンダーマネージャ(モジュール)、18……タスクマネージャ(モジュール)、20……変換マネージャ(モジュール)、22……拡張性のあるGUIコンポーネントライブラリ(モジュール)、24……中間表現、26……拡張性のあるGUIイベント変換(モジュール)、40……IRツリー、42……コンポーネントノード、44……コンテナノード、46……タスク、48……ページ、50……変換ルール(モジュール)、52……サイズ変換コンポーネント(モジュール)、54……代替コンポーネント(モジュール)、56……GUI変換ルール(モジュール)単体、58……GUI変換ルール(モジュール)複合、60……ダイナミックレイアウト(モジュール)、62……スタイルガイド(モジュール)、64……SGUIコンポーネントリスト(モジュール)、70……第1SGUIコンポーネント、72……第2SGUIコンポーネント、76……第1SGUIコンポーネント複合、78……第2SGUIコンポーネント複合、80……(複数の)データエントリ、82……優先度セレクション、84……好みセレクション、86……ピックリスト、88……単一のデータエントリ、200……通信システム、202……装置プラットフォーム、204……変換サーバ、206……ライブラリサーバ、208……ネットワーク、210……拡張性のあるアプリケーション、302……第1(異種装置)プラットフォーム、304……第2(異種装置)プラットフォーム、306……サーバコンピュータ、44a……ルート(コンテナ)ノード、44m……コンテナノード(アイテムタスクのサーチ)、44n……第1タスクノード(タスクのサーチ)、44p……第2タスクノード(結果タスクの分類)、44q……第3タスクノード(結果タスクの表示)、404……GUIプレゼンテーション、408……バーチャルラベル(アイテムのサーチ:第1コンポーネントノード)、410……バーチャルボタン(サーチ:第2コンポーネントノード)、412……バーチャルテキスト領域(第3コンポーネントノード)

【特許請求の範囲】
【請求項1】
記憶部(50)および制御部(60)を有し、第1の装置と第2の装置との間で、異種装置プラットフォーム間のマイグレーションを行うためにグラフィカルユーザインターフェイスのウィジェットを変換するサーバであって、
前記記憶部は複数の変換ルール(52、54、56)を記憶し、
前記制御部は、
プラットフォーム独立型のプレゼンテーションモデルに含まれているプラットフォーム独立型のグラフィカルユーザインターフェイスのウィジェットのなかから、変換対象とすべき、前記第1の装置のプラットフォーム上で実行されているプラットフォーム独立型のグラフィカルユーザインターフェイスのウィジェットを、マイグレーション要求を受信することにより特定し、
前記記憶部を参照し、前記特定したウィジェットに対して適用可能な複数の変換ルールを抽出し、
該抽出された複数の変換ルールの各々に対し、前記第1の装置のプラットフォーム上で実行されたウィジェットの表示領域に対する、変換後のウィジェットが前記第2の装置のプラットフォーム上で実行された場合の表示領域の縮小率に基づいて、優先順位を設定し、
当該特定されたウィジェットを、優先順位が最も高く設定された変換ルールにしたがって変換する
ことを特徴とするサーバ。
【請求項2】
前記制御部は、前記変換されたウィジェットからプラットフォーム独立型のグラフィカルユーザインターフェイスのウィジェットを予め定められた対応関係に基づいてマッピングして、異種装置プラットフォーム用にプラットフォーム特定型のプレゼンテーションを生成する
ことを特徴とする請求項1に記載のサーバ。
【請求項3】
前記記憶部は、前記ウィジェットを構成するコンポーネントの集合であるグラフィカルユーザインターフェイスライブラリを複数記憶し、
前記制御部は、前記記憶部に記憶されたグラフィカルユーザインターフェイスライブラリを参照して、複数のライブラリ間の予め定められた対応関係に従って前記特定したウィジェットの変換を実行する
ことを特徴とする請求項1に記載のサーバ。
【請求項4】
前記特定されたウィジェットは、グラフィカルユーザインターフェイスのコンポーネント単体を複数個含むグラフィカルユーザインターフェイスコンポーネント複合であり、
前記制御部は、グラフィカルユーザインターフェイスのコンポーネント単体がコアコンポーネントあるいはオプショナルコンポーネントに分類されるかに応じて、異なる変換態様で変換を実行する
ことを特徴とする請求項1に記載のサーバ。
【請求項5】
前記制御部は、前記変換されたウィジェットを、前記プラットフォーム独立型のモデルにおける他のプラットフォーム独立型のグラフィカルユーザインターフェイスのウィジェットであって当該変換されたウィジェットとの動作関係に関連した条件を満たすウィジェットにリンクさせる
ことを特徴とする請求項1に記載のサーバ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate


【公開番号】特開2010−9623(P2010−9623A)
【公開日】平成22年1月14日(2010.1.14)
【国際特許分類】
【出願番号】特願2009−233193(P2009−233193)
【出願日】平成21年10月7日(2009.10.7)
【分割の表示】特願2003−92814(P2003−92814)の分割
【原出願日】平成15年3月28日(2003.3.28)
【出願人】(392026693)株式会社エヌ・ティ・ティ・ドコモ (5,876)
【Fターム(参考)】