(57)【要約】  複数のアプリケーションが表示される。第１のアプリケーションの表示の変更要求が受信される。第１のアプリケーションの表示との競合を避けるために、第１のアプリケーションの表示の変更に応じて、１つまたは複数の他のアプリケーションの表示の変更方法が決定される。第１のアプリケーションの表示が変更される。１つまたは複数の他のアプリケーションの１つまたは複数の表示は、第１のアプリケーションの表示との競合を避けるために、第１のアプリケーションの表示の変更に応じて自動的に変更される。【選択図】  図８
2007511851.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも第１のアプリケーションと第２のアプリケーションを含む１組のアプリケーション群を表示する工程と；
前記第１のアプリケーションの表示を変更する工程と；
前記第１のアプリケーションの前記表示の前記変更に応じて、前記第２のアプリケーションの表示を自動的に変更する工程を有するアプリケーションの管理方法。
【請求項２】
前記第１のアプリケーションの前記表示を変更する前記工程は、前記第１のアプリケーションの前記表示のサイズを変更する工程を有し；
前記第２のアプリケーションの前記表示を変更する前記工程は、前記第２のアプリケーションの前記表示の位置またはサイズを変更する工程を有することを特徴とする請求項１に記載の方法。
【請求項３】
前記第１のアプリケーションの前記表示を変更する前記工程は、前記第１のアプリケーションの前記表示の位置を変更する工程を有し；
前記第２のアプリケーションの前記表示を変更する前記工程は、前記第２のアプリケーションの前記表示の位置またはサイズを変更する工程を有することを特徴とする請求項１に記載の方法。
【請求項４】
前記各アプリケーションは、サイズが固定された表示領域内に表示されることを特徴とする請求項１に記載の方法。
【請求項５】
前記アプリケーション群は第３のアプリケーションを有し；
前記第１のアプリケーションおよび前記第２のアプリケーションは前記第３のアプリケーション内に表示されることを特徴とする請求項１に記載の方法。
【請求項６】
前記第１のアプリケーションの表示を変更する前記工程は、ユーザが対象の一部をドラッグすることに応答して実行されることを特徴とする請求項１に記載の方法。
【請求項７】
前記第２のアプリケーションの前記表示を自動的に変更する前記工程は、
前記第１のアプリケーションの前記表示の変更による前記第２のアプリケーションへの影響を決定する工程と；
前記影響が許容されるか否かを判定する工程と；
前記影響が許容される場合に、前記第２のアプリケーションの前記表示を変更する工程を含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記第１のアプリケーションの表示を変更する前記工程は、前記表示の前記変更が許容されるかどうかを決定する工程を有することを特徴とする請求項１に記載の方法。
【請求項９】
前記１組のアプリケーション群用のユーザ・インターフェース・アイテムを生成する工程と；
親アプリケーション用のレイアウト・オブジェクトを生成する工程と；
対応するアプリケーションが変更される場合に、１つまたは複数の機能を呼び出すためのポインタを各ユーザ・インターフェース・アイテムに与える工程と；
前記ユーザ・インターフェース・アイテム用の表示を提供する工程と；
前記対応するアプリケーションを実行する工程をさらに有する請求項１に記載の方法。
【請求項１０】
前記第２のアプリケーションの前記表示を自動的に変更する前記工程は、
前記第１のアプリケーションの前記表示の縦方向の配置が変化したことを判定する工程と；
前記第１のアプリケーションとの縦方向の関係において、兄弟アプリケーションの縦方向の配置を前記第１のアプリケーションに合わせて調整する工程を有することを特徴とする請求項１に記載の方法。
【請求項１１】
前記第２のアプリケーションの前記表示を自動的に変更する前記工程は、
前記第１のアプリケーションの前記表示の横方向の配置が変化したことを判定する工程と；
前記第１のアプリケーションとの横方向の関係において、兄弟アプリケーションの横方向の配置を前記第１のアプリケーションに合わせて調整する工程を有することを特徴とする請求項１に記載の方法。
【請求項１２】
前記第２のアプリケーションの前記表示を自動的に変更する前記工程は、
前記第１のアプリケーションの前記表示の幅が変化したことを判定する工程と；
前記第１のアプリケーションの前記表示を含む第１の表示列の列幅を変更する工程と；
前記第１の表示列の前記列幅に基づいて前記第１の表示列内の表示の幅を変更する工程を有することを特徴とする請求項１に記載の方法。
【請求項１３】
前記第２のアプリケーションの前記表示を自動的に変更する前記工程は、
前記第１のアプリケーションの前記表示の幅が変化したことを判定する工程と；
前記第１のアプリケーションの前記表示を含む第１の表示列の列幅を変更する工程と；
前記第１の表示列の前記列幅に基づいて前記第１の表示列内の表示の幅を変更する工程と；
前記第１の表示列に隣接する第２の表示列の列幅を変更する工程と；
前記第２の表示列の前記列幅に基づいて前記第２の表示列内の表示の幅を変更する工程を有することを特徴とする請求項１に記載の方法。
【請求項１４】
前記第２のアプリケーションの前記表示を自動的に変更する前記工程は、
前記第１のアプリケーションの前記表示の縦方向のサイズが変化したことを判定する工程と；
残りの領域を兄弟アプリケーション間で分配する工程と；
前記分配工程に基づいて兄弟アプリケーションのサイズを調整する工程を有することを特徴とする請求項１に記載の方法。
【請求項１５】
前記第１のアプリケーションはグループのメンバであり、前記グループのメンバは前記グループ内で所定の関係を有し；
前記第２のアプリケーションの前記表示を自動的に変更する前記工程は、前記所定の関係を維持するように実行されることを特徴とする請求項１に記載の方法。
【請求項１６】
前記第１のアプリケーションの表示を変更するとともに前記第２のアプリケーションの前記表示を自動的に変更する前記工程は、
前記第１のアプリケーションの選択を受信する工程と；
前記第１のアプリケーションの前記表示を拡大し、前記第１のアプリケーションの前記表示を主要な場所内に配置する工程と；
所定の関係に基づいて既存の領域内に収まるように、前記第２のアプリケーションを含む前記第１のアプリケーションの兄弟アプリケーションの表示をサイズ変更するとともに位置あわせをすることを有することを特徴とする請求項１に記載の方法。
【請求項１７】
前記第１のアプリケーションの表示を変更し、前記第２のアプリケーションの前記表示を自動的に変更する前記工程は、
前記第１のアプリケーションの前記表示が１つまたは複数の兄弟アプリケーションと重なることを判定する工程と；
前記１つまたは複数の兄弟アプリケーションの表示がサイズ変更可能であることを判定する工程と；
最小限の間隔を維持するように前記１つまたは複数の兄弟アプリケーションの前記表示を自動的にサイズ変更する工程を有することを特徴とする請求項１に記載の方法。
【請求項１８】
前記第１のアプリケーションの表示を変更し、前記第２のアプリケーションの前記表示を自動的に変更する前記工程は、
前記第１のアプリケーションの前記表示が１つまたは複数の兄弟アプリケーションと重なることを判定する工程と；
前記１つまたは複数の兄弟アプリケーションのすべての表示をサイズ変更することはできないことを判定する工程と；
重なる兄弟アプリケーションのすべての表示をサイズ変更できるように、前記第１のアプリケーションの前記表示の前記サイズ変更を制限する工程と、を有することを特徴とする請求項１に記載の方法。
【請求項１９】
前記第１のアプリケーションの表示を変更し、前記第２のアプリケーションの前記表示を自動的に変更する前記工程は、
前記第１のアプリケーションの前記表示が１つまたは複数の兄弟アプリケーションと重なることを判定する工程と；
前記１つまたは複数の兄弟アプリケーションのすべての表示を十分にサイズ変更することはできないことを判定する工程と；
十分にサイズ変更することができない表示を限定的にサイズ変更する工程と；
十分にサイズ変更することができない表示に隣接するアプリケーションをサイズ変更する工程を有することを特徴とする請求項１に記載の方法。
【請求項２０】
前記第１のアプリケーションの表示を変更し、前記第２のアプリケーションの前記表示を自動的に変更する前記工程は、
前記第１のアプリケーションの前記表示を削除する工程と；
比例したサイズに基づいて、兄弟アプリケーションの残りの表示を前記第１のアプリケーションに適合させる工程を有することを特徴とする請求項１に記載の方法。
【請求項２１】
前記第１のアプリケーションの表示を変更し、前記第２のアプリケーションの前記表示を自動的に変更する前記工程は、
前記第１のアプリケーションの前記表示が既存の空き領域内に収まるか否かを判定する工程と；
前記第１のアプリケーションに対し重なる可能性のある隣接するアプリケーションを移動できるか否かを判定する工程と；
前記第１のアプリケーションに対し重なる可能性のある隣接するアプリケーションをサイズ変更することができるか否かを判定する工程を有することを特徴とする請求項１に記載の方法。
【請求項２２】
前記第１のアプリケーションの表示を変更し、前記第２のアプリケーションの前記表示を自動的に変更する前記工程は、
前記第１のアプリケーションの前記表示が既存の空き領域内に収まるか否かを判定する工程と；
前記第１のアプリケーションに対し重なる可能性のある隣接するアプリケーションを移動できるか否かを判定する工程と；
前記第２のアプリケーションのための前記表示を含む前記重なる可能性のある隣接するアプリケーションを自動的に移動する工程と；
前記第１のアプリケーションのための前記表示を追加する工程を有することを特徴とする請求項１に記載の方法。
【請求項２３】
前記第１のアプリケーションの表示を変更し、前記第２のアプリケーションの前記表示を自動的に変更する前記工程は、
前記第１のアプリケーションの前記表示が既存の空き領域内に収まるかどうかを判定する工程と；
前記第１のアプリケーションに対し重なる可能性のある隣接するアプリケーションをサイズ変更することができるかどうかを判定する工程と；
前記第２のアプリケーションのための前記表示を含む前記重なる可能性のある隣接するアプリケーションをサイズ変更する工程と；
前記第１のアプリケーションのための前記表示を追加する工程を有することを特徴とする請求項１に記載の方法。
【請求項２４】
前記第２のアプリケーションの前記表示を自動的に変更する前記工程は、前記第１のアプリケーションの前記表示が前記第２のアプリケーションの前記表示と重なるのを避ける工程を有することを特徴とする請求項１に記載の方法。
【請求項２５】
前記第２のアプリケーションの前記表示を自動的に変更する前記工程は、前記第２のアプリケーションの前記表示が所定のサイズ閾値未満であることを判定し、前記第２のアプリケーションの前記表示をアイコンに変換する工程を有することを特徴とする請求項１に記載の方法。
【請求項２６】
プロセッサで読取り可能な記憶装置上で具現化されるプロセッサで読取り可能なコードを有する１つまたは複数のプロセッサで読取り可能な記憶装置であって、
プロセッサで読取り可能な前記コードは、
少なくとも第１のアプリケーションと第２のアプリケーションを含む１組のアプリケーション群を表示領域に表示する工程と；
前記第１のアプリケーションのサイズまたは位置を変更する工程と；
前記第１のアプリケーションの表示が前記第２のアプリケーションの表示と競合しないように、前記第１のアプリケーションのサイズまたは位置の変更に応じて、前記第２のアプリケーションのサイズまたは位置を自動的に変更する工程を有する方法を１つまたは複数のプロセッサが実行するようにプログラムされていることを特徴とする記憶装置。
【請求項２７】
前記第２のアプリケーションのサイズまたは位置を自動的に変更する前記工程は、
前記第１のアプリケーションの幅が変化したことを判定する工程と；
前記第１のアプリケーションを含む第１の表示列の列幅を変更する工程と；
前記第１の表示列の前記列幅に基づいて、前記第１の表示列内の他のアプリケーションの幅を変更する工程を有することを特徴とする請求項２６に記載の１つまたは複数のプロセッサで読取り可能な記憶装置。
【請求項２８】
前記第１のアプリケーションと前記第２のアプリケーションは、サイズが固定された表示領域内で表示されることを特徴とする請求項２６に記載の１つまたは複数のプロセッサで読取り可能な記憶装置。
【請求項２９】
前記第２のアプリケーションのサイズまたは位置を自動的に変更する前記工程は、
前記第１のアプリケーションの幅が変化したことを判定する工程と；
前記第１のアプリケーションを含む第１の表示列の列幅を変更する工程と；
前記第１の表示列の前記列幅に基づいて、前記第１の表示列内の１つまたは複数の他のアプリケーションの幅を変更する工程と；
前記第１の表示列に隣接する第２の表示列の列幅を変更する工程と；
前記第２の表示列の前記列幅に基づいて、前記第２の表示列内の１つまたは複数の他のアプリケーションの幅を変更する工程を有することを特徴とする請求項２６に記載の１つまたは複数のプロセッサで読取り可能な記憶装置。
【請求項３０】
前記第１のアプリケーションのサイズまたは位置を変更し、前記第２のアプリケーションのサイズまたは位置を自動的に変更する前記工程は、
前記第１のアプリケーションが１つまたは複数の兄弟アプリケーションと重なることを判定する工程と；
前記１つまたは複数の兄弟アプリケーションの表示をサイズ変更することができることを判定する工程と；
最小限の間隔を維持するように前記１つまたは複数の兄弟アプリケーションを自動的にサイズ変更する工程を有することを特徴とする請求項２６に記載の１つまたは複数のプロセッサで読取り可能な記憶装置。
【請求項３１】
前記第１のアプリケーションの表示が前記第２のアプリケーションの表示と重なると、前記第１のアプリケーションの表示が前記第２のアプリケーションの表示と競合することを特徴とする請求項２６に記載の１つまたは複数のプロセッサで読取り可能な記憶装置。
【請求項３２】
前記第１のアプリケーションの表示が許容されない状態で前記第２のアプリケーションの表示と重なると、前記第１のアプリケーションの表示が前記第２のアプリケーションの表示と競合することを特徴とする請求項２６に記載の１つまたは複数のプロセッサで読取り可能な記憶装置。
【請求項３３】
表示領域に表示された第１のアプリケーションの表示を変更する要求を受信する工程と；
前記第１のアプリケーションの前記表示との競合を避けるために、前記第１のアプリケーションの前記表示の変更に応じて、１つまたは複数の他のアプリケーションのための１つまたは複数の表示がどのように変化すべきかを決定する工程と；
前記第１のアプリケーションの前記表示を変更する工程と；
前記第１のアプリケーションの前記表示との競合を避けるために、前記第１のアプリケーションの前記表示の変更に応じて、変化すべき１つまたは複数の他のアプリケーションのための１つまたは複数の表示を自動的に変更する工程を有するアプリケーション群の管理方法。
【請求項３４】
要求を受信する前記工程は、ユーザがウィンドウの一部をドラッグする工程を有することを特徴とする請求項３３に記載の方法。
【請求項３５】
避けられる前記競合は、前記第１のアプリケーションの前記表示が、前記変化すべき１つまたは複数の他のアプリケーションのための前記１つまたは複数の表示と重なるのを避けることを有することを特徴とする請求項３３に記載の方法。
【請求項３６】
避けられる前記競合は、前記第１のアプリケーションの前記表示が、前記変化すべき１つまたは複数の他のアプリケーションのための前記１つまたは複数の表示に、許容されない状態で重なるのを避けることを有することを特徴とする請求項３３に記載の方法。
【請求項３７】
前記決定する工程は、前記第１のアプリケーションの前記表示が前記１つまたは複数の他のアプリケーションのための前記１つまたは複数の表示と重なることを避けるために、前記１つまたは複数の他のアプリケーションのための前記１つまたは複数の表示をどのように調整するかを決定する工程を有することを特徴とする請求項３３に記載の方法。
【請求項３８】
前記第１のアプリケーションの前記表示に対する前記変更が許可されるか否かを判定する工程と；
前記第１のアプリケーションの前記表示に対する前記変更が許可されない場合に、前記第１のアプリケーションの前記表示に対する前記変更を拒否する工程をさらに有する請求項３３に記載の方法。
【請求項３９】
前記１つまたは複数の他のアプリケーションは第２のアプリケーションを含み；
前記１つまたは複数の他のアプリケーションのための前記１つまたは複数の表示を変更する前記工程は、前記第１のアプリケーションの前記表示との重なりを避けるために前記第２のアプリケーションの表示をどのように変更するかを決定する工程と、前記第２のアプリケーションの前記表示に対する前記変更が許可されないことを判定する工程と、前記第１のアプリケーションの前記表示に対する前記変更を拒否する工程を有することを特徴とする請求項３３に記載の方法。
【請求項４０】
前記１つまたは複数の他のアプリケーションは第２のアプリケーションを含み；
前記１つまたは複数の他のアプリケーションのための前記１つまたは複数の表示を変更する前記工程は、前記第１のアプリケーションの前記表示との重なりを避けるために前記第２のアプリケーションの表示をどのように変更するかを決定する工程と、前記第２のアプリケーションの前記表示に対する前記変更が前記第２のアプリケーションの前記表示を過度に縮小することを判定する工程と、前記第２のアプリケーションの前記表示に対する前記変更が前記第２のアプリケーションの前記表示を過度に縮小するという判定に応じて、前記第２のアプリケーションの前記表示をアイコンに変換する工程を有することを特徴とする請求項３３に記載の方法。
【請求項４１】
前記１つまたは複数の他のアプリケーションは第２のアプリケーションを含み、
前記第１のアプリケーションと前記第２のアプリケーションは親アプリケーション内で実行され；
前記第１のアプリケーションは前記第１のアプリケーションの前記表示に対する前記要求された変更を前記親アプリケーションに報告し；
前記親アプリケーションは前記決定工程を実行することを特徴とする請求項３３に記載の方法。
【請求項４２】
プロセッサで読取り可能な記憶装置上で具現化されるプロセッサで読取り可能なコードを有する１つまたは複数のプロセッサで読取り可能な記憶装置であって、
プロセッサで読取り可能な前記コードは、
第１のアプリケーションの表示を変更する要求を受信する工程と；
前記第１のアプリケーションの前記表示との競合を避けるために、前記第１のアプリケーションの前記表示の変更に応じて、１つまたは複数の他のアプリケーションのための１つまたは複数の表示がどのように変化すべきかを決定する工程と；
前記第１のアプリケーションの前記表示を変更する工程と；
前記第１のアプリケーションの前記表示との競合を避けるために、前記第１のアプリケーションの前記表示の変更に応じて、変化すべき１つまたは複数の他のアプリケーションのための１つまたは複数の表示を自動的に変更する工程を有する方法を１つまたは複数のプロセッサが実行するようにプログラムされていることを特徴とする記憶装置。
【請求項４３】
前記決定工程は、前記第１のアプリケーションの前記表示が前記１つまたは複数の他のアプリケーションのための前記１つまたは複数の表示と重なることを避けるために、１つまたは複数の他のアプリケーションのための前記１つまたは複数の表示をどのように調整するかを決定する工程を有することを特徴とする請求項４２に記載の１つまたは複数のプロセッサで読取り可能な記憶装置。
【請求項４４】
前記方法は
前記第１のアプリケーションの前記表示に対する前記変更が許可されるか否かを判定する工程と；
前記第１のアプリケーションの前記表示に対する前記変更が許可されない場合に、前記第１のアプリケーションの前記表示に対する前記変更を拒否する工程をさらに有することを特徴とする請求項４２に記載の１つまたは複数のプロセッサで読取り可能な記憶装置。
【請求項４５】
前記１つまたは複数の他のアプリケーションは第２のアプリケーションを含み；
前記１つまたは複数の他のアプリケーションのための前記１つまたは複数の表示を変更する前記工程は、前記第１のアプリケーションの前記表示との重なりを避けるために前記第２のアプリケーションの表示をどのように変更するかを決定する工程と、前記第２のアプリケーションの前記表示に対する前記変更が許可されないことを決定する工程と、前記第１のアプリケーションの前記表示に対する前記変更を拒否する工程を有することを特徴とする請求項４２に記載の１つまたは複数のプロセッサで読取り可能な記憶装置。
【請求項４６】
第１のアプリケーションの表示を変更する要求を受信する手段と；
前記第１のアプリケーションの前記表示との競合を避けるために、前記第１のアプリケーションの前記表示の変更に応じて、１つまたは複数の他のアプリケーションのための１つまたは複数の表示がどのように変化すべきかを決定する手段と；
前記第１のアプリケーションの前記表示を変更する手段と；
前記第１のアプリケーションの前記表示との競合を避けるために、前記第１のアプリケーションの前記表示の変更に応じて、変化すべき１つまたは複数の他のアプリケーションのための１つまたは複数の表示を変更する手段を有するアプリケーションを実行可能な装置。
【請求項４７】
入力装置と；
表示装置と；
アプリケーション用のコードを記憶する記憶装置と；
前記入力装置、前記表示装置、および前記記憶装置と通信を行う処理装置を有し、
前記処理装置は、前記表示装置に前記アプリケーションを表示するために、前記コードにアクセスし、第１のアプリケーションの表示の変更する要求を受信し、前記第１のアプリケーションが前記第２のアプリケーションと競合しないように、前記第１のアプリケーションの前記表示を変更する前記要求に応じて、第２のアプリケーションの表示を自動的に変更することを特徴とするアプリケーションを実行可能な装置。
【請求項４８】
前記処理装置は、前記第１のアプリケーションの前記表示に対する前記変更が許可されるか否かを判定し、前記第１のアプリケーションの前記表示に対する前記変更が許可されない場合は、前記第１のアプリケーションの前記表示を変更しないことを特徴とする請求項４７に記載の装置。
【請求項４９】
前記処理装置は、前記第２のアプリケーションの前記表示に対する前記変更が許可されるか否かを判定し、前記第２のアプリケーションの前記表示に対する前記変更が許可されない場合は、前記第１のアプリケーションの前記表示を変更しないことを特徴とする請求項４７に記載の装置。
【請求項５０】
前記第１のアプリケーションの表示が前記第２のアプリケーションの表示と重ならない場合は、前記第１のアプリケーションは前記第２のアプリケーションと競合しないことを特徴とする請求項４７に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
（技術分野）
本発明は複数のアプリケーションを表示するための技術に関する。
【背景技術】
【０００２】
（関連技術の説明）
コンピュータの性能がより向上し、ソフトウェアがより高機能化するにつれ、コンピュータのユーザは、コンピュータの能力をより利用して複数のアプリケーションを同時に実行するようになっている。例えば、ユーザはデスクトップ上に複数のウィンドウを開き、各ウィンドウで１つまたは複数のアプリケーションを実行する。あるいは、デスクトップ上に１つのウィンドウを開き、第１のアプリケーションを実行する。その後、第１のアプリケーションの中で他の複数のアプリケーションを実行することができる。後者の１つの例としては、ユーザがウェブ・ブラウザを実行すると、そのウェブ・ブラウザの中で複数のアプリケーションが実行される場合である。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
コンピュータ上でウィンドウ表示されるアプリケーションを複数実行することについての１つの問題は、複数のアプリケーションが表示される表示領域が過度に煩雑になることである。例えば、ウィンドウ表示されるアプリケーションが複数開かれると、１つまたは複数のアプリケーションによって他のアプリケーションが見えなくなることがある。ユーザがアプリケーションにアクセスしようとすると、まず、そのアプリケーションの表示を探し、サイズを変更し、手動で他のアプリケーションのサイズを変更するか、あるいは他のアプリケーションを移動させなければならない場合がある。通常、複数のアプリケーションを同時に見ることは難しい。
【０００４】
したがって、表示領域を共有する複数のアプリケーション用のユーザ・インターフェースをより好適に管理する必要がある。
【課題を解決するための手段】
【０００５】
本発明は、概して説明すると、複数のアプリケーションを１つの表示領域に表示する技術に関する。これら複数のアプリケーションは１つの表示領域を共有する。１つのアプリケーションが変更されると、それに応じて他の１つまたは複数のアプリケーションは自動的に調整される。例えば、１つの実施形態では、１つのアプリケーションが拡大されると、他のアプリケーションはそれに応じて縮小、および／または移動する。
【０００６】
１つの実施形態では、本発明を実行するシステムは、少なくとも第１のアプリケーションと第２のアプリケーションとを含む１組のアプリケーションを表示する。第１のアプリケーションの表示が変更される。第２のアプリケーションの表示は、第１のアプリケーションの表示の変更に応じて自動的に変更される。異なる実施形態では、第２のアプリケーションの表示は、第１のアプリケーションの表示の変更前、変更後、または変更中に変更することができる。
【０００７】
他の実施形態では、複数のアプリケーションが表示される。第１のアプリケーションの表示の変更の要求を受信する。第１のアプリケーションの表示との競合を避けるため、他の１つまたは複数のアプリケーションの表示は、第１のアプリケーションの表示の変更に応じてどのように変更するべきかが決定される。第１のアプリケーションの表示が変更される。他の１つまたは複数のアプリケーションの表示は、第１のアプリケーションの表示との競合を避けるために、第１のアプリケーションの表示の変更の要求に応じて自動的に変更される。
【０００８】
１つの実施形態では、第１のアプリケーションの表示が第２のアプリケーションの表示と重なると、第１のアプリケーションは第２のアプリケーションと競合しているといえる。他の実施形態では、アプリケーションは、一部の重なりを許可するが他は許可しないように構成することができる。例えば、第２のアプリケーションは、下部の１５ピクセルの重なりを許可するように構成できる。第１のアプリケーションの変更が第２のアプリケーションの下部の１５ピクセルとのみ重なるものである場合、競合はない。第１のアプリケーションの変更が第２のアプリケーションの下部１５ピクセルを越えて重なるものである場合、競合が発生している。他の実施形態では、アプリケーション間に競合があるか否かを判定するために様々な基準を用いることができる。
【０００９】
本発明は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェア両者の組合せを用いることで実現することができる。本発明のために使用されるソフトウェアは、ハード・ディスク・ドライブ、ＣＤ−ＲＯＭ、光ディスク、フロッピ・ディスク、磁気テープ装置、ＲＡＭ、ＲＯＭ、フラッシュ・メモリ、または他の適切な記憶装置を含むプロセッサで読取り可能な１つまたは複数の記憶装置に保存される。別の実施形態では、ソフトウェアの一部またはすべては、カスタムＩＣ、ゲート・アレイ、ＦＰＧＡ、ＰＬＤ、および専用のプロセッサを含む専用ハードウェアで置き換えることができる。１つの実施形態では、１つまたは複数のプロセッサの動作を規定するために本発明を実施するソフトウェアが使用される。１つまたは複数のプロセッサは、１つまたは複数の記憶装置（ハード・ディスク・ドライブ、ＣＤ−ＲＯＭ、ＤＶＤ、光ディスク、フロッピ・ディスク、磁気テープ装置、ＲＡＭ、ＲＯＭ、フラッシュ・メモリ、または他の適切な記憶装置）、周辺機器（プリンタ、モニタ、キーボード、ポインティング・デバイス）、および／または通信インタフェース（例えば、ネットワーク・カード、無線送信器／受信機等）と通信を行うことができる。
【００１０】
本発明のこれらおよび他の目的および利点は、本発明の好ましい実施形態を図面を参照しながら記載した以下の説明から明確になるであろう。
【発明を実施するための最良の形態】
【００１１】
本発明は、複数のアプリケーションを１つの表示領域に表示する技術に関する。１つのアプリケーションが変更されると、他の１つまたは複数のアプリケーションは、それに応じて調整される。１つの実施形態では、システムは表示領域内のアプリケーション間で重ならない関係を維持するように動作する。例えば、表示領域１０を示す図１について考える。１つの実施形態では、表示領域１０はコンピュータ装置のモニタまたはスクリーンに描かれたウィンドウ、デスクトップまたは他の形式の表示領域である。表示領域１０内では、アプリケーション１２、１４、１６、１８を含む４つのアプリケーションが実行されている。これらアプリケーションの使用中に、ユーザが１つのアプリケーションのサイズ、位置、またはローテーションの変更しようとすることがある。例えば、ユーザは、アプリケーションのサイズを変更するためにアプリケーションの角をドラッグしたり、アプリケーションのサイズを変更するためにアプリケーションの縁をドラッグしたり、アプリケーションを移動するためにアプリケーション全体をドラッグしたり、アプリケーションの位置合わせをするために新たなサイズをキー入力したり、新たな座標をキー入力したりすることなどができる。ユーザがアプリケーション１２のサイズを変更しようとする場合を考える。本発明は、アプリケーション１２が他のアプリケーションと重ならないようにアプリケーション１２のサイズ変更を適切に行うために、他のアプリケーションの１つまたは複数がそれに応じて自動的にサイズ変更され、あるいは移動されることを可能にする。単語「重なる」は、あるアプリケーションの表示（例えばウィンドウ）が他のアプリケーションの表示の上、またはその下に存在することを示すために使用される。図２は、アプリケーション１２がサイズ変更されて大きくなった場合に、本発明の１つの実施形態において、行われることの１例を示している。この例では、アプリケーション１４はその幅が縮小され、アプリケーション１６はその高さが縮小され、アプリケーション１８はその高さが縮小されている。アプリケーションがサイズを変更するにしたがって、そのコンテンツは調整される。例えば、画像がサイズ変更されおよび／またはその解像度が変更されたり、文字が見えなくなったり、あるいは表示内の項目の配置が変更される。
【００１２】
１つの実施形態では、アプリケーションはある状況においては重なることができる。例えば、第１のアプリケーションは、ある領域（例えば、左端の１０ピクセル、上部の６ピクセル等）が重なることは許可するが、他の領域は重ならない。第２のアプリケーションが、重なることを許可された第１のアプリケーションの領域と重なるように変更される場合は、競合はなく、第１のアプリケーションは調整されない。第２のアプリケーションが、重なることを許可されていない第１のアプリケーションの領域と重なるように変更される場合は、競合があり、第１のアプリケーションは、不適切な重なりを回避するように調整される。
【００１３】
図３は、他のアプリケーション内に埋め込まれ、表示された１つまたは複数のアプリケーションを含む表示領域２０を示している。例えば、表示領域２０はアプリケーション２２、２４、２６を含んでいる。アプリケーション２２内には、アプリケーション３０、３２、３４が存在する。アプリケーション３０内には、アプリケーション４０と４２が存在する。アプリケーションを埋め込むことによりアプリケーションの階層が形成される。アプリケーションが変更されると、同じ階層レベルの他のアプリケーションはそれに応じて調整される。いくつかの実施形態では、アプリケーションが変更されると、他の階層レベルのアプリケーションもそれに応じて調整される場合がある。
【００１４】
１つの例では、表示領域２０は、アプリケーション（例えばウィンドウ、ブラウザ、ダッシュボード等）である。アプリケーション２２のサイズ、位置、またはローテーションが変更されると、アプリケーション２４と２６はそれに応じて、可能な限り、変更される。同様に、アプリケーション４２のサイズが変更されると（例えば、大きくなるか小さくなる、ＸまたはＹ方向へ移動する）、アプリケーション４０もそれに応じて変更される。例えば、図４は、アプリケーション４２の幅サイズが拡大された後の表示領域２０を示している。それに応じて、アプリケーション４０は、アプリケーション４２のサイズの増加に合わせて、その幅サイズが自動的に縮小されている。図５は、アプリケーション３０の高さサイズが拡大された後の表示領域２０を示している。アプリケーション３０のサイズの増加に応じて、アプリケーション３２と３４の高さサイズは自動的に縮小されている。図５では、アプリケーション３０が拡大された場合に、アプリケーション４０と４２が拡大されていないことに留意されたい。他の実施形態では、アプリケーション４０と４２は、アプリケーション３０内の空いている領域を活用して拡大することができる。
【００１５】
図１〜５には、本発明により提供される基本的な機能を示している。すなわち、１つのアプリケーションが変更される（または、変更するよう要求される）と、他のアプリケーションは自動的に調整される。これにより、ユーザは１つの表示領域で複数のアプリケーションを管理できるようになる。例えば、ユーザが特定のアプリケーションに関心があれば、そのアプリケーションを使用するために、ユーザはその特定のアプリケーションを拡大することができる。このアプリケーションが拡大されている間は、他のアプリケーションは縮小されるので表示領域は煩雑にならない。
【００１６】
本明細書の目的では、アプリケーションは見たり、修正したり、または一連のデータの処理ができる任意の独立した機能として定義される。アプリケーションはサイズの変更を許可している。いくつかの実施形態では、アプリケーションは最小限のサイズを有していてもよい。アプリケーションは、グループ化されていても、埋め込まれていても、または他のアプリケーションを含んでもよい。アプリケーションの例としては、画像編集アプリケーション、カレンダー・アプリケーション、ニュース提供アプリケーション、電子メール・アプリケーション、文書処理アプリケーション、表計算アプリケーション、インターネット閲覧アプリケーション等が挙げられる。いくつかの実施形態では、表示領域の一部では本発明を利用できるが、表示領域の他の部分では本発明は使用されない。
【００１７】
図６は、図１に対応するアプリケーションの階層を示している。すなわち、階層は２つのレベルを有している。トップ・レベルには、アプリケーション１０が存在する。２番目のレベルには、アプリケーション１２、１４、１６、１８が存在する。従って、アプリケーション１２〜１８はアプリケーション１０内に埋め込まれている。
【００１８】
図７は、図３〜５に対応する階層の例を提供している。図７の階層は４つのレベルを含んでいる。トップ・レベルには、アプリケーション２０が存在し、これは表示領域となっている。階層の２番目のレベルには、アプリケーション２２、２４、２６が存在する。アプリケーション２２〜２６はアプリケーション２０内に存在する。階層の３番目のレベルには、アプリケーション３０、３２、３４が存在し、それらのすべてはアプリケーション２２内に表示される。階層の４番目のレベルには、アプリケーション４０と４２が存在し、両方ともアプリケーション３０内に表示される。本発明の１つ実施形態では、階層内のどのレベルにおいても、アプリケーションはその兄弟アプリケーションと重ならない関係を維持するように動作する。兄弟アプリケーションとは、同じ階層レベルにある他のアプリケーションである。例えば、１つの実施形態では、システムは、アプリケーション３０がアプリケーション３２及び３４と重ならないように動作する。同様に、システムは、アプリケーション２２がアプリケーション２４及び２６と重ならないように動作する。
【００１９】
アプリケーションのサイズ・パラメータ（幅、高さ、位置、ローテーション、その他）によるユーザの対話は、階層内で敏速な処理を開始させる。変更を要求された対象であるアプリケーションは「イニシエータ」となり、変更するという要求をその親アプリケーションに伝達する。親アプリケーションは、階層内のイニシエータの真上のアプリケーションである。例えば、アプリケーション４０と４２の親アプリケーションはアプリケーション３０であり、アプリケーション３０、３２、３４の親アプリケーションはアプリケーション２２であり、アプリケーション２２〜２６の親アプリケーションはアプリケーション２０である。親アプリケーションは、イニシエータが変更の要求をすることを検知すると、仲介プログラムとなる。親アプリケーションは、イニシエータの兄弟アプリケーションと関連付けてイニシエータの要求を評価し、またいくつかの実施形態では親プログラム自身を評価する。その変更が許可されると、イニシエータはサイズ・パラメータを新しい値に設定する。親アプリケーションは、これに応答して、兄弟アプリケーションのサイズ・パラメータの調整を行う。親アプリケーションが、自身のサイズ・パラメータを調整してもよい。これは実時間処理であり、イニシエータに対する処理が行われるのにしたがって、イニシエータに対する動作として親アプリケーションとのネゴシエーションが行われ、（アニメーションの有無にかかわらず）修正されるアプリケーションと隣接するアプリケーションとの間でユーザのために連続的な対話が行われる。
【００２０】
図８は、本発明にしたがってアプリケーションがどのように表示されるかを管理する処理の１つの実施形態を説明するフローチャートである。工程１０２では、アプリケーションのサイズ、位置、またはローテーションを変更する試みがなされる。上述のように、これは、オペレータがマウスを使用してウィンドウまたは他のインタフェース・アイテムの角、縁、または他の部分をドラッグすることによりアプリケーションのサイズを変更することができる。他の実施形態では、オペレータは新しいサイズまたは新しい位置をキー入力することができる。サイズまたは位置の変更を試みることにより、工程１０４でその要求が行われる。１つの実施形態では、この要求は以下の様々なイベントのうちのいずれか１つまたは複数を含むことができる：ｏｎＸ（Ｘ位置の変更）、ｏｎＹ（Ｙ位置の変更）、ｏｎＷｉｄｔｈ（幅の変更）、ｏｎＨｅｉｇｈｔ（高さの変更）、ｏｎＤｅｌｅｔｅ、ｏｎＩｎｓｅｒｔ、ｏｎＣｌｉｃｋ（マウスボタンのクリック）、特定の実施形態に特有な他のイベント。イベントは、イベントを生成しているアプリケーション、イベント内で要求される変更（古い値、新しい値、および／または差分値）、およびイベントの形式に関する情報を含む。この要求は、工程１０６において親アプリケーションにより受信される。工程１０８では、その変更が許可されるかどうかが判定される。１つの実施形態では、アプリケーションに対して何を変更することができるかを定義するため、所定の１連の規則を使用できる。親アプリケーションは、これらの定義された規則の範囲内で変更を許可することができるか否かを判定することができる。他の実施形態では、変更を要求するアプリケーションは、それに応じて変更できるかどうかをアプリケーション自身で判定できる。この規則の例としては、アプリケーションは最小限のサイズまたは最大限のサイズを有していなければならないという規則を挙げることができる。さらに、規則により、アプリケーションの位置を表示領域のうちの特定の位置に限定することができる。変更が許可されないと変更は拒否され、図８の手順は、変更を行うことなく終了される（工程１１０）。
【００２１】
変更が許可されると、工程１１２によって、同じ階層レベルの他のアプリケーションへの変更の影響が決定される。ネゴシエーションが行われ、要求の詳細、要求を受信するアプリケーションの許容範囲、および親アプリケーションに基づいて、受諾、拒否、または調整という結果となる。これらの各要素は、要求の結果としてアプリケーションのサイズ／位置／ローテーションを変更することができる。この手順は、親アプリケーションへの鎖を（階層の上のレベルへ）上ることも鎖を下ることもできる。いくつかの実施形態では、変更は、異なる階層レベルのアプリケーションに影響することができる。工程１１４では、同じ階層レベルの他のアプリケーションへの影響が許可されるか否かが判定される。変更による他のアプリケーションへの影響が許可されないと、その変更は工程１１６において拒否される。例えば、拡大中のアプリケーション１２（図１参照）が、アプリケーション１６を過度に縮小させると（すなわち、アプリケーション１６が最小限のサイズを有するので）、アプリケーション１２に対する変更は拒否される。他のアプリケーションへの影響を許可できれば、変更を求めた最初のアプリケーションは工程１１８において変更され、そして同じ階層レベルで適切に影響を受けるアプリケーションは、工程１２０において変更される。なお、工程１２０は、工程１１８の前後、またはその間に実行することができる。他の実施形態では、工程１１８は、図８の処理の初期において実行することができる。
【００２２】
図９は、１つまたは複数のアプリケーションを開始する処理の１つの実施形態を説明するフローチャートを示している。工程１８０では、各アプリケーションを表示するために、アプリケーションＵＩ（ユーザ・インターフェース）オブジェクトが生成される。他の実施形態では、様々な要素（オブジェクト以外）が各アプリケーションに対して生成される。工程１８２では、レイアウト・オブジェクトが生成される。レイアウト・オブジェクトはアプリケーションに関連するオブジェクトであり、アプリケーション内にすべての情報を表示する役割をする。したがって、埋込まれた他のアプリケーションを有するすべてのアプリケーションに対して、レイアウト・オブジェクトは、埋込まれたアプリケーションが親アプリケーションの中でどのように表示されるか記述する。例えば、図７の階層においては、アプリケーション２２は、アプリケーション３０、３２、３４がアプリケーション２２の中でどのように表示されるかを記述するレイアウト・オブジェクトを有している。本発明の他の実施形態ではレイアウト・オブジェクトを使用しない。工程１８４では、特定のアプリケーションに対するＵＩオブジェクトがアクセスされる。工程１８６では、工程１８４においてＵＩオブジェクトがアクセスされたアプリケーションの親アプリケーションが、アプリケーションＵＩオブジェクトにポインタを提供する。このポインタは、親アプリケーションに対するレイアウト・オブジェクトの機能を参照する。ポインタを受信したアプリケーションはこのポインタを保存する。アプリケーションがサイズまたは位置（または、他の表示特性）を変更されたときは、アプリケーションは受信したポインタにより参照される機能を呼び出す。ポインタにより参照された機能は、レイアウト・オブジェクト内にある。呼び出された機能は、生成されたイベントに関する情報を受信する。ポインタを受信したアプリケーションは、工程１８８において、親アプリケーションのためのユーザ・インターフェース内に置かれる。例えば、工程１８８は、アプリケーション４２をアプリケーション３０内に挿入する工程を含むことができる（図３参照）。工程１９０では、処理すべきアプリケーションが他に存在するか否かが判定される。１つの実施形態では、工程１８４〜１８８は、表示される各アプリケーションに対して実行される。処理すべきアプリケーションがさらにあれば、この方法が工程１８４において継続して行われる。処理すべきアプリケーションが存在しなければ、工程１９２においてアプリケーションはコンピュータ装置により実行される。
【００２３】
図１０Ａ〜１０Ｊは、アプリケーションの変更による他のアプリケーションへの影響、他のアプリケーションの応答的な変更の方法を決定する処理の様々な実施形態を説明するフローチャートを示している。図１０Ａ〜１０Ｊでは特定の例が提供されるが、ここで説明される概念は他のレイアウトに適用することができる。
【００２４】
例えば、図１０Ａは、単純なレイアウトに対する処理の１つの実施形態を説明するフローチャートを示している。単純なレイアウトは、横方向または縦方向に制約がない１組のアプリケーションを表示する表示領域を有している。いくつかの実施形態では、単純なレイアウトは、アプリケーション間に最小限の間隔の要求を有することができる。他の実施形態もまた、アプリケーションの最小限のサイズおよび／または最大限のサイズを含むことができる。図１１Ａは、単純なレイアウトの例を示している。図１１Ａは、６つのアプリケーション７０２、７０４、７０６、７０８、７１０、７１２を有する表示領域７００を示している。６つのアプリケーションのそれぞれは、縦方向または横方向にサイズを変更することができる。６つのアプリケーションのそれぞれは、横方向または縦方向へ移動することもできる。
【００２５】
図１０Ａの工程２００において、イニシエータ・アプリケーションの縦方向の配置（サイズ、または位置）が変更されたか否か（または、変更されることが要求されたか否か）が判定される。変更されている（または、変更が要求されている）アプリケーションに応答して、そのアプリケーションと縦方向の位置関係にある同じ階層レベルの兄弟アプリケーションは、工程２０２においてその縦方向の配置が自動的に調整される。縦方向の位置関係とは、互いに上下に隣接しているか、あるいは１つが縦方向のサイズを変更されると互いに影響を及ぼし合うアプリケーションを指す。例えば、図１１Ｃは、アプリケーション７０４の縦方向のサイズが拡大されると、工程２０２においてアプリケーション７０８と７１２が影響を受けることを示している。アプリケーション７０８は、縦方向においてアプリケーション７０４と隣接している。いくつかの実施形態では、アプリケーション７０４の拡大はアプリケーション７０８にのみ影響を与える。他の実施形態では、アプリケーション７０４の拡大はアプリケーション７０８と７１２に影響を与える。同じ階層レベルの他の兄弟アプリケーションに影響を与える様々な方法がある。１つの実施形態では、拡大されるアプリケーションに対応するために隣接するアプリケーションのみが縮小される。他の実施形態では、縦方向の位置関係にあるすべてのアプリケーションは、均等に比例配分的に縮小される。図１１Ｃの実施形態では、兄弟アプリケーション７０８と７１２は、サイズが変更されるのではなく、移動される。工程２０２の後か、あるいは工程２００の後で縦方向の配置が変更されなかった場合、システムは、イニシエータ・アプリケーションの横方向の配置（サイズまたは位置）が変更されているかどうかを判定する。変更されていなければ、図１０Ａの処理は完了する。変更されていれば、工程２０６において、イニシエータと横方向の位置関係にある兄弟アプリケーションは横方向の配置（サイズまたは位置）を変更する。イニシエータと横方向の位置関係を有する兄弟アプリケーションとは、横方向において隣接しているか、若しくはイニシエータの横方向のサイズの変更により影響を受けるかのいずれかの兄弟アプリケーションをいう。例えば、図１１Ｂは、アプリケーション７０２の横方向のサイズが拡大されると、その隣接するアプリケーション７０４が影響を受けることを示す。工程２０６は、そのサイズを変更せずに、アプリケーション７０４の位置を調整することを含んでいる。
【００２６】
図１０Ｂは、アプリケーションが複数の列で配列されるとともにその表示領域の高さ方向のサイズが固定されていないシステムを説明するフローチャートを示している。例えば、図１１Ｄは、２列に表示されたアプリケーション７３２、７３４、７３６、７３８、７４０、７４２を含む表示領域７３０を示している。１番目の列はアプリケーション７３２、７３４、７３６を含んでいる。２番目の列はアプリケーション７３８、７４０、７４２を含んでいる。特定の列のアプリケーションが高さ方向において拡大されると、図１１Ｃに示すように上下のアプリケーションは移動される。アプリケーションがその幅を増加、縮小させると、列全体の幅が増加、縮小され、それによって図１１Ｅに示すように、その列内のすべてのアプリケーションの幅が縮小、増加される。すなわち、図１１Ｅは、アプリケーション７３２が横方向に拡大されたことを示す。アプリケーション７３４と７３６も、アプリケーション７３２と同じ列にあるために、これに応答して拡大されている。１番目の列の拡大に応じて、２番目の列（アプリケーション７３８、７４０、７４２を含む）は幅が減少され、その列内のすべてのアプリケーションも幅が減少されている。
【００２７】
図１０Ｂの工程２４０では、イニシエータの高さが変更されたか否かが判定される。イニシエータは、図８の工程１０２において変更の要求を受信したアプリケーションである。イニシエータの高さを変更することが要求されると、工程２４２において、図１１Ｃに示すように、同じ列内のすべての兄弟アプリケーションの縦方向の位置が変更される。イニシエータの高さが変更されなかった場合は（すなわち、工程２４２後では）、工程２４４において、システムはイニシエータの幅が変更されたかどうかを判定する。変更されていなければ、図１０Ｂの処理は終了する。
【００２８】
イニシエータの幅が変更された場合、工程２４６において、アプリケーション間の最小限の間隔を保持するために、列の幅をどの程度にすべきかが決定される。工程２４８では、列の幅が許容範囲内にあるかどうかが判定される。すなわちいくつかの実施形態では、許容される最小限および最大限の列の幅がある。新たな列の幅が許容範囲内にない場合、イニシエータまたはその兄弟アプリケーションに対する変更の実行は許可されない（工程２５０）。新たな列の幅が許容範囲内にある場合、工程２５２において、システムは、隣接する列の幅に対してどのような変更をすべきかを決定する。すなわち、１番目の列の幅が拡大されると、隣接する列は縮小しなければならない。いくつかの実施形態では、表示領域（例えば表示領域７３０）はその幅が固定された表示領域である。したがって、１つの列が拡大されると、他の列は縮小されなければならない。同様に、いくつかの列が縮小されると、他の列は拡大されなければならない。工程２５４では、システムは、新たな隣接する列が許容範囲内（例えば、最小限の幅と最大限の幅の間）にあるかどうかを判定する。隣接する列の新たな幅が許容範囲内に無い場合、いずれの変更も許可されない（工程２５６）。隣接する列の新たな幅が許容範囲内にある場合、工程２５８において、隣接する列の幅は調整され、隣接する列内のすべてのアプリケーションはその幅を新たな列の幅に調整される。工程２６０では、イニシエータ・アプリケーションを含む列も調整される。兄弟アプリケーションだけでなくイニシエータ・アプリケーションも、工程２６０において、その幅を新たな列の幅に調整される。例えば、図１１Ｅは、アプリケーション７３８、７４０、７４２を有する２番目の列は幅が狭くなるが、アプリケーション７３２、７３４、７３６を有する１番目の列は幅が広くなることを示している。
【００２９】
図１０Ｃは、単一の列を有する表示領域の処理の１つの実施形態を説明するフローチャートであり、ここでは、表示領域のサイズは固定されている、または少なくとも縦方向のサイズ（高さ）は固定されている。例えば、図１１Ｆは、単一の列で配置された３つのアプリケーション７６２、７６４、７６６を有する表示領域７６０を示している。表示領域７６０のサイズは変更することができない。表示領域７６０も表示領域の端との間、および各アプリケーション間の最小限の間隔を有している。
【００３０】
工程３００では、イニシエータの幅が変更されたか否かが判定される。変更されていれば、工程３０２において、列の幅に対する変更が決定される。いくつかの実施形態では、列の幅は、列の中で最も幅の広いアプリケーションの幅に等しく（または、わずかに大きく）なければならない。工程３０４では、新たな列の幅が許容範囲内にあるか否かが判定される。そうでなければ、この変更は許可されない（工程３０６）。新たな列の幅が許容範囲内にあると、工程３０８において、列の幅は調整され、イニシエータ・アプリケーションの幅は調整され、その列のアプリケーションの幅は同様に調整される。例えば、図１１Ｇは、アプリケーション７６４の幅の拡大による影響を示している。アプリケーション７６４の拡大（または、拡大の要求）に応じて、列全体が拡大され、アプリケーション７６２と７６６も同様にその幅を拡大される。
【００３１】
工程３０８の後、あるいは工程３００において幅が変更されなかった場合、引き続き図１０Ｃの工程３１０の処理が行われる。工程３１０では、イニシエータの縦方向のサイズが変更されたか否かが判定される。変更されていなければ、図１０Ｃの処理は終了する。変更されていれば、システムは、その列における残りの領域を算出する。すなわち、システムは、列のどれだけがイニシエータ・アプリケーションにより占有されていないかを決定する。次に、工程３１４において、その残りの領域は兄弟アプリケーション間で均等に分配される。他の実施形態では、兄弟アプリケーションは、現在のサイズに比例させてその領域を分配することができる。工程３１６では、システムは、兄弟アプリケーションを、工程３１４で決定されたように調整できるか否かを判定する。調整できなければ、いずれの変更も許可されない（工程３２２）。兄弟アプリケーションが工程３１４の算出結果に従って調整することができれば、工程３１８においてイニシエータの縦方向の位置／サイズが調整され、工程３２０において兄弟アプリケーションの縦方向の位置／サイズが調整される。例えば、図１１Ｈは、縦方向に拡大されたアプリケーション７６２を示している。拡大するアプリケーション７６２に応じて、アプリケーション７６４と７６６は、自動的に（人間の介入なしで）その高さを縮小される。
【００３２】
図１０Ｄは、表示領域の高さが固定されており、複数の列を有する表示領域に対して実行される処理を説明するフローチャートである。すなわち、表示領域は縦方向に拡大できない。いくつかの実施形態では、表示領域は、横方向にも拡大できない。図１０Ｄの工程３６０では、イニシエータ・アプリケーションの幅が変更されたか否かが判定される。変更されなければ、引き続き工程３７８の処理が行われる。イニシエータの幅が変更された場合、工程３６２において、システムは列の幅がイニシエータの新たな幅と一致するように新たな列の幅を算出する。工程３６４では、新たな列の幅が許容範囲内にあるか否かが判定される。そうでなければ、変更は許可されない（工程３６６）。新たな列の幅が許容範囲内にあると、工程３６８において、システムは隣接する列の幅に対して行うべき変更を決定する。隣接するアプリケーションの新たな列の幅が許容範囲内にない場合（工程３７０）は、いかなる変更も許可されない（工程３７２）。隣接する列の新たな列の幅が許容範囲内にあると、工程３７４において、隣接する列の幅は調整され、隣接する列のすべてのアプリケーションは隣接する列の幅と一致するようにその幅を調整される。工程３７６では、イニシエータの列の幅は調整され、イニシエータのサイズは要求通りに調整され、そしてイニシエータの列のすべての兄弟アプリケーションは、その幅をその列の幅と同じ幅（または、所定の一連の規則により定義された列の幅より若干小さい、または若干大きい適切な幅）に調整される。
【００３３】
工程３７８では、イニシエータの縦方向のサイズが変更されたか否かが判定される。変更されていなければ、図１０Ｂの処理は終了する。イニシエータの縦方向のサイズが変更された場合、工程３８０において、システムは列における残りの領域を決定する。上述したのと同様に、工程３８２においては、残りの領域は兄弟アプリケーション間で分配される。工程３８４では、工程３８２において決定されたように兄弟アプリケーションを調整することができるかどうかが判定される。そうでなければ、縦方向のサイズの変更は許可されない（工程３８６）。兄弟アプリケーションが調整できれば（工程３８４）、イニシエータの縦方向のサイズが工程３８８において調整され、兄弟アプリケーションの縦方向のサイズ（または位置）が工程３９０において調整される。
【００３４】
いくつかの実施形態では、２つ以上のアプリケーションをグループ化できる。グループとは互いに所定の関係を有するアプリケーションの組である。この所定の関係は、グループ内のアプリケーションのサイズ変更、またはグループ内のアプリケーションの位置合わせに関する規則を有することができる。例えば、すべてのアプリケーションは同じサイズを有するという規則にしてもよい。したがって、１つのアプリケーションのサイズの変更は、すべてのアプリケーションのサイズを変更する。あるいは、グループの規則は、すべてのアプリケーションが一直線上に、曲線上に、対角線上に、または他の形状／関係上になければならないこと示していてもよい。サイズ変更、間隔設定、または他の表示パラメータに関するあらゆる規則を取り決めることができる。
【００３５】
図１０Ｅは、グループ・メンバの間で、サイズを調整、および／または位置を変更する処理を説明するフローチャートである。工程４００では、グループのあるメンバが変更される。工程４０２では、グループの他のメンバもまた、１つまたは複数のグループの規則により定義される関係を維持するように変更される。あるいは、変更を要求されたイニシエータ・アプリケーションはグループの一部でなくてもよい。しかしながら、イニシエータを変更することにより、イニシエータをグループの１つまたは複数のメンバと重なるように位置させることができる。したがって、システムは、イニシエータとの重なりを避けるために、グループのメンバを変更しようとする。工程４１０でグループのそのメンバを変更することにより、工程４０２では、システムはグループの規則に従ってグループの他のメンバを自動的に変更させる。例えば、図１１Ｉは、アプリケーション７８２、７８４、７８６のグループを示している。図１１Ｉに示されたこの特定のグループは、アプリケーションが同一のサイズであり、かつ対角線上に位置しなければならないという規則を有している。図１１Ｊは、アプリケーション７８４の移動、及びサイズの変更による影響を示している。これによって、システムに自動的に、グループの３つのメンバ全てが同じサイズを有し、対角線に沿って位置するように、アプリケーション７８２とアプリケーション７８６を移動させ、サイズの変更をさせる。
【００３６】
他の実施形態は、１組のアプリケーションをリール・レイアウトで表示する。例えば、図１１Ｋは、アプリケーション８００が他のアプリケーションより大きく表示され、アプリケーション８００が主要位置に表示されたリール・レイアウトを示している。他のアプリケーション８０２、８０４、８０６、８０８、８１０はアプリケーション８００の下部に横方向に直線状に並んで配置されており、各アプリケーションは同じサイズであり、アプリケーション８００より小さい。アプリケーション８０２〜８１０のいずれかを選択することで、選択されたアプリケーションは、より大きなサイズに変更されて、主要位置のアプリケーション８００と置き替えられる。次に、アプリケーション８００は他のアプリケーションと並んだ位置に移動され、他のアプリケーションと同じサイズに変更される。例えば、図１１Ｌは、アプリケーション８０６が選択されてアプリケーション８００と置き換えられたことを示している。したがって、アプリケーション８０６はサイズが変更されて主要位置に配置されている。アプリケーション８００はより小さいサイズに変更されて、アプリケーション８０６下部のアプリケーションの並びに配置されている。図１０Ｆには、図１１Ｋと１１Ｌとの間の変換を実行するためのフローチャートを示している。工程４３０では、選択されたアプリケーションが拡大され、主要位置に配置される。工程４３２では、未選択の兄弟アプリケーションが既存の領域内で等しいサイズとなるようにサイズ変更される。工程４３４では、兄弟アプリケーションは所定の関係に基づいて配置される。図１１Ｋと１１Ｌは、その所定の関係を主要なアプリケーションの下部の直線として示している。他の実施形態では、兄弟アプリケーションは、（例えば、円または他の形状を囲むような）曲線上に、様々な形状、様々なサイズ等で、そして横方向、縦方向、対角線上等に位置することができる。
【００３７】
上述の実施形態では、様々なアプリケーションの間における１つまたは複数の規則または相互関係について説明している。他の実施形態として、アプリケーションをどこにでも配置することが可能であり、任意の方法でサイズを変更することが可能であり、どこへでも移動可能であり、列またはグループを持たない表示領域を説明する。この自由型の実施形態について、図１０Ｇのフローチャートにより説明する。図１０Ｇの工程４６０では、イニシエータが要求通りに変更されたときに、どの兄弟アプリケーションがイニシエータと重なるかが割り出される。１つの実施形態では、システムは、何らかの重なりがあるかを確認する。別の実施形態では、システムは許可されない重なりがあるかを確認する。上述したように、いくつかの実施形態では、アプリケーションが所定の重なりを許可し、その他の重なりは許可しない。工程４６２では、重なりを避けるために重なる兄弟アプリケーションのサイズの変更が可能か否かが判定される。いくつかの兄弟アプリケーションは最小限のサイズを有する場合があり、これらは最小限のサイズより小さいサイズに変更することができない。すべての兄弟アプリケーションを、重なることなくサイズを変更できる場合、工程４６４において、アプリケーション間で必要な最小限の間隔を維持するように兄弟アプリケーションのサイズが変更される。例えば、図１１Ｍは、アプリケーション８３２、８３４、８３６、８４０、８４２を含む表示領域８３０を示している。図１１Ｎは、アプリケーション８３６が横方向（幅）に拡大されたときの状態を示している。工程４６０では、アプリケーション８４２がアプリケーション８３６と重なるということが確認される。したがって、工程４６４では、アプリケーション８４２はその幅を縮小される。
【００３８】
工程４６２において、重なりを避けるためにすべての兄弟アプリケーションのサイズを変更することができないと判定されると、工程４６６において、十分にサイズを変更できる兄弟アプリケーションのサイズが変更される。工程４６８では、十分にサイズを変更できない兄弟アプリケーションが、許容される限度内でサイズを変更される。工程４７０では、十分にサイズが変更されない兄弟アプリケーションの１つがアクセスされる。工程４７２では、イニシエータとの重なりを避けるために、アクセスされた兄弟アプリケーションを移動させることができるか否かが判定される。表示領域の境界がこれを許可しないために兄弟アプリケーションを移動させることができないときは、変更は工程４７４において拒否される。兄弟アプリケーションが他の兄弟アプリケーションのいずれとも重なることなく移動できるときは、その兄弟アプリケーションは工程４７６において移動され、引き続き工程４８２において処理が行われる。この移動により兄弟アプリケーションが他の兄弟アプリケーションと重なると、図１０Ｇの処理は、移動される兄弟アプリケーションをイニシエータとして、工程４７８において帰納的に呼び出される。この後退的機能は、兄弟アプリケーションの移動を適切に行うため、移動させるかサイズを変更させるかを判定している間に、兄弟アプリケーションに隣接するアプリケーションに与えられなければならない。工程４８０では、兄弟アプリケーションはそれに応じて移動及びサイズ変更される。工程４８２では、本処理は、考慮すべき兄弟アプリケーションがさらに存在するか否かを判定する。考慮すべき兄弟アプリケーションがさらに存在すれば、引き続き工程４７０の処理が行われるが、そうでなければ、イニシエータは工程４８４においてサイズを変更される。
【００３９】
図１１Ｏは、工程４６６〜４８４で実行される処理の例を示している。図１１Ｏの例では、アプリケーション８３２は、拡大するように要求されている。アプリケーション８３４は、アプリケーション８３２が適切にサイズ変更できる程度に十分にはサイズを変更することができない。したがって、アプリケーション８３４が限定的にサイズ変更及び移動できるように、アプリケーション８３６のサイズが変更される。
【００４０】
図１０Ｇが代替の実施形態を示していることに留意されたい（工程４６６Ａへの破線を参照）。この代替の実施形態では、すべての兄弟アプリケーションのサイズを変更できない場合（図１０Ｇの工程４６２参照）、イニシエータのサイズの変更は、重なる兄弟アプリケーションのすべてが適切にサイズ変更されるようにある程度制限される。したがって、イニシエータに許容されるサイズ変更量は、要求されたものより小さくなる。
【００４１】
別の代替の実施形態では、兄弟アプリケーションがその最小限のサイズより小さいサイズにサイズ変更されようとしていると、その兄弟アプリケーションはアイコンに変換される。例えば、図１１Ｐは、兄弟アプリケーション８３４がその縦方向の最小限のサイズ以下に縦方向にサイズ変更するよう要求される程度にまでアプリケーション８３２が拡大された状態を示している。このとき、アプリケーション８３４のサイズを変更するのではなく、アプリケーション８３４の表示はアイコンに変換され、表示領域８３０の隅（または他の場所）に配置される。
【００４２】
図１０Ｈは、表示領域からアプリケーションを削除する１つの実施形態の処理を説明するフローチャートである。例えば、図１１Ｑは、アプリケーション８６２、８６４、８６６、８６８を有する表示領域８６０を示している。これらのアプリケーションの１つが削除されると、他のアプリケーションは、表示内の利用可能な空き領域を利用するために自身のサイズを調整することができる。他の実施形態では、アプリケーションは、１つのアプリケーションが削除された後にサイズを変更しない。図１０Ｈの工程５００では、１つのアプリケーションが削除される。工程５０２では、システムは、残りのアプリケーションがグループの関係を有しているか否かを判定する。有していれば、残りのアプリケーションは、工程５０４において、そのグループの関係に基づいてそのサイズおよび／または位置を調整する。グループの関係がない場合、工程５０６において、削除されたアプリケーションに隣接するアプリケーションのサイズが、それらの隣接するアプリケーションのサイズに比例して調整される。すなわち、残りの隣接するアプリケーションは、当初のサイズに比例して拡大され、削除されたアプリケーションにより後に残された使用可能な領域を縮小する。例えば、図１１Ｒは、表示領域８６０からアプリケーション８６６を削除した影響を示している（図１１Ｑ参照）。この例では、アプリケーション８６６により後に残された空き領域を利用するため、アプリケーション８６２と８６４は均等に拡大される。
【００４３】
図１０Ｉは、アプリケーションが追加される場合に実行される処理の１つの実施形態を説明するフローチャートである。工程５４０では、新たなアプリケーションが、他のアプリケーションに影響することなく要求された配置に収まるかどうかが判定される。そうならば、そのアプリケーションは工程５４２において要求された配置で追加される。そうでなければ、工程５４４において、重なっている隣接するアプリケーションのいずれかを移動することができるか否かが判定される。重なっている隣接するアプリケーションを移動できる場合、工程５４６において重なっている隣接するアプリケーションがそれに応じて移動され、工程５４８において新たなアプリケーションが要求された位置に追加される。重なっている隣接するアプリケーションを移動できない場合、工程５６０において重なっている隣接するアプリケーションのサイズを変更することができるか否かが判定される。そうならば、工程５６２において重なっている隣接するアプリケーションは適切にサイズ変更され、工程５６４において新たなアプリケーションは要求された位置に追加される。重なっている隣接するアプリケーションのサイズを変更できない場合、工程５６６において重なっている隣接するアプリケーションと新たなアプリケーションのサイズを変更できるか否かが判定される。そうでなければ、変更（新たなアプリケーションの追加）は拒否される（工程５７４）。そうならば、工程５６８において重なっている隣接するアプリケーションのサイズが変更され、工程５７０において新たなアプリケーションのサイズが変更され、工程５７２において新たなアプリケーションが要求された配置で追加される。他の実施形態では、新たなアプリケーションの追加は、一部の重なっている隣接するアプリケーションのサイズ変更と、その他の重なっている隣接するアプリケーションの移動を組合せたものを含むことができる。図１１Ｓと図１１Ｔは、アプリケーションの追加の１例を提供している。図１１Ｓは、アプリケーション９０２、９０４、９０６、９０８、９１０を含む表示領域９００を示している。新しいアプリケーション９２０を図１１Ｓの表示領域９００の位置Ｘに追加することを考える。位置Ｘへのアプリケーション９２０の追加により、アプリケーション９２０はアプリケーション９０６と重なる。図１１Ｔは、アプリケーション９２０を追加するためにアプリケーション９０６のサイズを変更する例を示している。
【００４４】
図１０Ｊは、表示領域内のある場所から表示領域内の他の場所にアプリケーションを移動する処理の１つの実施形態を説明するフローチャートの例を提供している。工程６００では、アプリケーションを削除し、兄弟アプリケーションを調整する処理（図１０Ｈ）が実行される。工程６０２では、アプリケーションを追加し、兄弟アプリケーションを調整する処理（図１０Ｉ）が実行される。工程６０４では、両方の処理が正常に実行されたか否かが判定される。そうならば、その変更は工程６０６において許可される。そうでなければ、その変更は工程６０８において元に戻される。
【００４５】
図１０Ａ〜Ｊはいくつかのレイアウトの例を提供しているが、本発明により、他のレイアウトを使用することもできる。ここで説明した、アプリケーションの表示を適合させる種々の技術と概念は、いかなるタイプのレイアウト、グループ、またはユーザ・インターフェースの構成にも制限されない。
【００４６】
いくつかの実施形態では、アプリケーションは、アニメーションを使用して移動またはサイズ変更することができる。アニメーションが使用される場合、影響を受ける兄弟アプリケーションの移動および／またはサイズ変更は、イニシエータのアニメーションが終了した後に、実行することができる。あるいは、影響を受ける兄弟アプリケーションの移動および／またはサイズ変更は、イニシエータの各ピクセル変更の後に、またはイニシエータのアニメーションの各ステップの後に、またはイニシエータのアニメーションのステップのサブセットの後に実行することができる。
【００４７】
第１のアプリケーションのサイズの変更または移動が要求され、第１のアプリケーションの変更が完了する前に第２のアプリケーションの変更または移動が要求されることもある。１つの実施形態では、第２のアプリケーションの変更または移動が要求された場合、第１のアプリケーションに対する変更は中止される。他の実施形態では、第１のアプリケーションの変更と兄弟アプリケーションへの影響が完了し、続いて第２のアプリケーションの変更と兄弟アプリケーションへの影響が行われる。他の実施形態では、システムは、第１のアプリケーションの変更と兄弟アプリケーションへの影響を実行し、次にアニメーションによって第２のアプリケーションを変更する要求対してスムーズに変形させる。
【００４８】
本発明を実施することができるシステムの一例を図１２に示す。図１２のシステムは、ネットワークを介して（例えば、インターネットを介して）クライアントにコンテンツを提供するために使用できるプレゼンテーション・サーバ１４５０を有している。プレゼンテーション・サーバ１４５０は、ユーザ・インターフェースのマーク−アップ言語記述を受信し、そのマーク−アップ言語記述を実行可能なコードへ動的にコンパイルするように設計されている。ある環境においては、マーク−アップ言語記述は、ユーザ・インターフェースの種々のデータ・ソースおよび／またはウェブ・サービスへの接続と同様に、アプリケーションのユーザ・インターフェースを記述するように設計されたＸＭＬベースの言語である。それは、ユーザ・インターフェース・アイテムをバック−エンド・データ・ソースとサービスに自動的に接続するための構文法だけでなく、「ウィンドウ」、「ボタン」、「テキスト」、「スクロールバー」などの標準的なユーザ・インターフェースの基本要素を含んでいる。マーク−アップ言語は、Ｊａｖａ（登録商標）ｓｃｒｉｐｔのようなアプリケーションの動作手順を規格するためのスクリプト言語を含むこともできる。
【００４９】
１つの実施形態では、プレゼンテーション・サーバ１４５０は、所定のプレゼンテーション・レンダラのための高度に最適化／圧縮されたオブジェクト・コードを生成する。プレゼンテーション・レンダラは、画像を表示し音を再生することができるソフトウェア環境、ハードウェア、１つまたは複数のソフトウェア・プログラムのセットなどである。１つの実施形態では、プレゼンテーション・サーバ１４５０は、サーバに置かれたマーク−アップ言語を記述するファイルおよびデータをオブジェクト・コードにコンパイルするＪａｖａ（登録商標）  Ｓｅｒｖｌｅｔとして実行される。１つの実施形態では、プレゼンテーション・サーバ１４５０は、Ｍａｃｒｏｍｅｄｉａ  Ｆｌａｓｈ  Ｐｌａｙｅｒのためのオブジェクト・コードを生成する。プレゼンテーション・サーバ１４５０は、Ｊａｋａｒｔａ  Ｔｏｍｃａｔと、ＢＥＡ  ＷｅｂｌｏｇｉｃおよびＩＢＭ  ＷｅｂｓｐｈｅｒｅのようなＪ２ＥＥサーバを含む任意の標準的なＪａｖａ（登録商標）  Ｓｅｒｖｌｅｔの実行によりホストされることがある。図１２は、アプリケーション・サーバ１４５２でホストされるプレゼンテーション・サーバ１４５０を示している。アプリケーション・サーバ１４５２はデータベース管理サービス（ＤＢ  Ｍｇｍｔ）１４５４を含んでおり、これはリレーショナル・データベース１４５６と通信を行う。リレーショナル・データベース以外の形式のデータも使用できる。プレゼンテーション・サーバ１４５０は、ネットワークを介してクライアントと通信を行うウェブ・サーバ１４５８を介し、クライアントからコンテンツの要求を受信し、応答を送信する。ネットワークは、インターネット、ＬＡＮ、ＷＡＮなどを含む、周知の技術の標準的ないずれのネットワークであってもよい。例えば、図１２には、ウェブ・サーバ１４５８を介してプレゼンテーション・サーバ１４５０と通信するプラグ−イン１４６２（例えば、Ｆｌａｓｈ  Ｐｌａｙｅｒ）を備えたＨＴＴＰクライアント１４６０（例えば、ブラウザ）を示している。１つの実施形態では、クライアントはプラグ−インとしてウェブ・クライアント内に埋込まれたＭａｃｒｏｍｅｄｉａ  Ｆｌａｓｈ  Ｐｌａｙｅｒである。Ｆｌａｓｈ  Ｐｌａｙｅｒはプレゼンテーション・サーバ１４５０の適切な伝達手段であるが、他の多くのプレゼンテーション・レンダラも利用することができる。他の実施形態では、レンダラはプラグ−インである必要はない。
【００５０】
図１３は、図１２のシステムの動作の１つの典型的な実施形態について説明するフローチャートである。工程１５０２では、プレゼンテーション・サーバは、コンテンツに対する要求を受信する。コンテンツは、ウェブ・ページ、メディア、データ、アプリケーション、またはネットワークを介してアクセス可能な他のいかなるものであってもよい。工程１５０４では、プレゼンテーション・サーバは、受信した要求に応じて、コンテンツのマーク−アップ言語記述にアクセスする。いくつかの実施形態では、他の言語が使用される。工程１５０６では、プレゼンテーション・サーバは、要求に応じて、またはマーク−アップ言語記述に応じて、いずれかのデータおよび／またはメディアにアクセスする。場合によっては、この要求がいかなるデータまたはメディアも必要しないため、工程１５０６が省略されてもよい。工程１５０８では、マーク−アップ言語記述、データ、および／またはメディアはコンパイルされる。工程１５１０では、実行可能なコードがクライアントに送信される。工程１５１２では、実行可能なコードがクライアントで実行される。実行可能なコードは、上述したように表示領域のアプリケーションを管理する機能を含む。プレゼンテーション・サーバを使用するシステムに関するさらなる情報は、２００２年３月５日出願の米国特許出願第１０／０９２，０１０号“プレゼンテーション・サーバ”に記載されており、その全体を参照することによりここに援用する。
【００５１】
プレゼンテーション・サーバ１４５０内のコンパイラはさまざまなプログラミング言語によるコードを受信することができる。１つの実施形態では、コンパイラは例えばＸＭＬベースの言語記述のようなマーク−アップ言語記述を受信する。他のマーク−アップ言語も使用できる。さらに、マーク−アップ言語以外のプログラミング言語を使用できる。
【００５２】
１つの実施例では、ユーザ・インターフェースは一連のビューから構成されている。ビューは、表示可能なオブジェクト（例えば、ウィンドウ、ボタン、スライダ等）の表示／記述である。ビューはアトリビュート（ａｔｔｒｉｂｕｔｅ）およびアトリビュート修飾子を有している。アトリビュートは、例えばビューの外観、音、動作のようなビューの特性を定義する。アトリビュート修飾子は、そのビューまたは他のビューの他のアトリビュートに対するユーザの入力、または変更のようなイベントに応じてアトリビュートを変更する。アトリビュート修飾子の例としては、レイアウト、アニメータ、コンストレイントが挙げられる。１つの実施形態では、レイアウトはそのビューの下位のビューを変更するために使用される。アニメータはビューの外観をアニメ化するために使用される。コンストレイントは、値が変わった場合に、バウンドする特性が表現式の初期値ではなく現在値で維持されるように、繰り返し評価される表現式である。インタフェースの１つの例は、２００２年３月５日出願の米国特許出願第１０／０９２，３６０号「連続型ユーザ・インターフェースを提供するインタフェース・エンジン」に記載されており、その全体を参照することでここに援用する。
【００５３】
アトリビュートの書式は：（ａｔｔｒｉｂｕｔｅ  ｎａｍｅ）＝＄ｔｉｍｅ｛ｅｘｐｒｅｓｓｉｏｎ｝，であり、ここで、“ｅｘｐｒｅｓｓｉｏｎ”はアトリビュートの値を設定するために使用される所定の形式の表現式であり、“＄ｔｉｍｅ”は、表現式をいつ評価しなければならないかを示すマーカである。“ｔｉｍｅ”に対して使用できる様々な値が存在する。１つの実施形態では、“ｔｉｍｅ”は、“ｉｍｍｅｄｉａｔｅｌｙ”，“ｏｎｃｅ”，“ａｌｗａｙｓ”を示すことができる。
【００５４】
ＸＭＬベースのソース言語の１つの実施形態では、アプリケーションのエンクロージング・タグはｃａｎｖａｓ要素である。ｃａｎｖａｓ要素はビューである。例えば、
<canvas>
[application]
</canvas>
【００５５】
以下は、本発明の１つの実施形態と共に使用できる、ＸＭＬベースの言語の第１の例のソース・コードである。
<canvas>
<view bgcolor=“red”width=“20”height=“20”id=“refview”
onclick=“this.animate (‘width’, 10, 1000, true)”
/>
<view bgcolor=“blue”width=“10”height=“20”
x=“$immediately{refview.width}”/>
<view bgcolor=“yellow”width=“10”height=“20”
x=“$once{refview.width}”/>
<view bgcolor=“grey”width=“10”height=“$immediately{20}”
x=“$always{refview.width}”/>
</canvas>
【００５６】
上記のコードは、ユーザ・インターフェースのための４つのオブジェクトを生成する。各オブジェクトはビューである。したがって、コードは４つのビューを示す。第１のビューは、初期においては、幅が２０ピクセル、高さが２０ピクセルであり、“ｒｅｆｖｉｅｗ”のＩＤを有する赤い長方形である。長方形がマウスまたは他のポインティング・デバイスによりクリックされると、幅がアニメ化されて拡大される。第２のビューは、幅が１０ピクセル、高さが２０ピクセルの青い長方形である。長方形のｘ座標（アトリビュートｘ）は、“ｉｍｍｅｄｉａｔｅｌｙ”に等しいマーカを有する。したがって、エンクロージング要素が具体化されると、表現式“ｒｅｆｖｉｅｗ．ｗｉｄｔｈ”が評価される。その表現式は、ｘを、ｒｅｆｖｉｅｗとして認識されたオブジェクトの幅に等しくなるように定義している。第３のビューは、幅が１０ピクセル、高さが２０ピクセルの黄色の長方形である。長方形のｘ位置は、“ｏｎｃｅ”を示すマーカを伴うアトリビュートを有している。したがって、エンクロージング構文が初期化されると、アトリビュートは表現式の値に初期化される。その表現式は、ｘを、ｒｅｆｖｉｅｗとして認識されたビューの幅に等しくなるように定義されている。第４のオブジェクトは、幅が１０ピクセル、高さが２０ピクセルの灰色の長方形である。ｘアトリビュートにより定義されたｘ座標は“ａｌｗａｙｓ”に等しいマーカを有している。したがって、ｒｅｆｖｉｅｗ（赤い長方形）の幅が変化する場合は常に、ｘ座標も変化する。
【００５７】
上記のソース・コードが実行されると、４つのオブジェクトが最初に画面に表示される。赤い長方形が実行される前に表現式が評価されたので、青い長方形のｘ座標は０となる。黄色の長方形は、ｘ値が赤いウィンドウの初期の幅に等しくなり、その値は２０である。灰色の長方形は、初期のｘ位置が赤いウィンドウの初期の幅に等しくなり、その値は２０である。赤いウィンドウがクリックされると、赤いウィンドウはその幅を拡大し、これによって灰色の長方形のｘ位置が変更される。したがって、赤い長方形の幅が拡大するにしたがって、灰色の長方形のｘ位置は赤い長方形の幅に応じて継続的に変更される。
【００５８】
上記の典型的なＸＭＬベースの言語についてのより詳細な情報は、２００３年８月１５日出願の米国特許出願第１０／６４２，３６０号“ソフトウェア環境における表現式の評価”に記載されており、その全体を参照することによりここに援用する。上記ソース・コードの例は、本発明を実施するために使用できる多くのタイプのソース・コードとソフトウェア環境のうちの１つにすぎない。他の多くのタイプのソース・コードとソフトウェア環境も使用できる。例えば、本発明は、Ｊａｖａ（登録商標）、Ｃ＋＋、その他の多くのプログラミング言語を使用することにより実施することができる。本発明は、プレゼンテーション・サーバを使用することにより実施する必要はなく、ネットワーク環境において実施される必要もない。例えば、ネットワークに接続されていないコンピュータ装置を使用して本発明を実施することができる。あるいは、本発明は、ラップトップ型コンピュータ、電話、携帯型コンピュータ装置等のようなモバイル・コンピュータ装置で実施することができる。
【００５９】
上述した本発明の詳細な説明は、図解、説明の目的のために提示されたものである。包括的であること、あるいは本発明を開示したとおりの形式に限定することを意図していない。上記の説明を参照して多くの変形及び変更を行うことが可能である。上述した実施形態は、本発明の原理とその実用的なアプリケーションについて最良に説明するために選択されており、これによって当業者は、意図した所定の用途に適するように、種々の実施形態及び種々の変形によって、本発明を最適に利用することができる。本発明の範囲は明細書に添付した特許請求の範囲により規定される。
【図面の簡単な説明】
【００６０】
【図１】表示された１組のアプリケーションを示している。
【図２】変更後の、図１に示された１組のアプリケーションを示している。
【図３】表示された１組のアプリケーションを示している。
【図４】変更後の、図３に示された１組のアプリケーションを示している。
【図５】変更後の、図３に示された１組のアプリケーションを示している。
【図６】アプリケーションの階層を示している。
【図７】アプリケーションの階層を示している。
【図８】アプリケーションの表示を変更する処理の１つの実施形態を説明するフローチャートを示している。
【図９】アプリケーションを開始する処理の１つの実施形態を説明するフローチャートを示している。
【図１０Ａ】アプリケーションの変更が他アプリケーションにどのような影響を与えるかを決定する処理の種々の実施形態を説明するフローチャートを示している。
【図１０Ｂ】アプリケーションの変更が他アプリケーションにどのような影響を与えるかを決定する処理の種々の実施形態を説明するフローチャートを示している。
【図１０Ｃ】アプリケーションの変更が他アプリケーションにどのような影響を与えるかを決定する処理の種々の実施形態を説明するフローチャートを示している。
【図１０Ｄ−１】アプリケーションの変更が他アプリケーションにどのような影響を与えるかを決定する処理の種々の実施形態を説明するフローチャートを示している。
【図１０Ｄ−２】アプリケーションの変更が他アプリケーションにどのような影響を与えるかを決定する処理の種々の実施形態を説明するフローチャートを示している。
【図１０Ｅ】アプリケーションの変更が他アプリケーションにどのような影響を与えるかを決定する処理の種々の実施形態を説明するフローチャートを示している。
【図１０Ｆ】アプリケーションの変更が他アプリケーションにどのような影響を与えるかを決定する処理の種々の実施形態を説明するフローチャートを示している。
【図１０Ｇ】アプリケーションの変更が他アプリケーションにどのような影響を与えるかを決定する処理の種々の実施形態を説明するフローチャートを示している。
【図１０Ｈ】アプリケーションの変更が他アプリケーションにどのような影響を与えるかを決定する処理の種々の実施形態を説明するフローチャートを示している。
【図１０Ｉ】アプリケーションの変更が他アプリケーションにどのような影響を与えるかを決定する処理の種々の実施形態を説明するフローチャートを示している。
【図１０Ｊ】アプリケーションの変更が他アプリケーションにどのような影響を与えるかを決定する処理の種々の実施形態を説明するフローチャートを示している。
【図１１Ａ】アプリケーションの変更の前後におけるアプリケーションの種々の表示を示している。
【図１１Ｂ】アプリケーションの変更の前後におけるアプリケーションの種々の表示を示している。
【図１１Ｃ】アプリケーションの変更の前後におけるアプリケーションの種々の表示を示している。
【図１１Ｄ】アプリケーションの変更の前後におけるアプリケーションの種々の表示を示している。
【図１１Ｅ】アプリケーションの変更の前後におけるアプリケーションの種々の表示を示している。
【図１１Ｆ】アプリケーションの変更の前後におけるアプリケーションの種々の表示を示している。
【図１１Ｇ】アプリケーションの変更の前後におけるアプリケーションの種々の表示を示している。
【図１１Ｈ】アプリケーションの変更の前後におけるアプリケーションの種々の表示を示している。
【図１１Ｉ】アプリケーションの変更の前後におけるアプリケーションの種々の表示を示している。
【図１１Ｊ】アプリケーションの変更の前後におけるアプリケーションの種々の表示を示している。
【図１１Ｋ】アプリケーションの変更の前後におけるアプリケーションの種々の表示を示している。
【図１１Ｌ】アプリケーションの変更の前後におけるアプリケーションの種々の表示を示している。
【図１１Ｍ】アプリケーションの変更の前後におけるアプリケーションの種々の表示を示している。
【図１１Ｎ】アプリケーションの変更の前後におけるアプリケーションの種々の表示を示している。
【図１１Ｏ】アプリケーションの変更の前後におけるアプリケーションの種々の表示を示している。
【図１１Ｐ】アプリケーションの変更の前後におけるアプリケーションの種々の表示を示している。
【図１１Ｑ】アプリケーションの変更の前後におけるアプリケーションの種々の表示を示している。
【図１１Ｒ】アプリケーションの変更の前後におけるアプリケーションの種々の表示を示している。
【図１１Ｓ】アプリケーションの変更の前後におけるアプリケーションの種々の表示を示している。
【図１１Ｔ】アプリケーションの変更の前後におけるアプリケーションの種々の表示を示している。
【図１２】本発明を実施するために使用可能なシステムの１つの実施形態のブロック図である。
【図１３】図１２のシステムを動作させる処理の１つの実施形態を示すフローチャートである。
【図１】
2007511851.tif 000003
【図２】
2007511851.tif 000004
【図３】
2007511851.tif 000005
【図４】
2007511851.tif 000006
【図５】
2007511851.tif 000007
【図６】
2007511851.tif 000008
【図７】
2007511851.tif 000009
【図８】
2007511851.tif 000010
【図９】
2007511851.tif 000011
【図１０Ａ】
2007511851.tif 000012
【図１０Ｂ】
2007511851.tif 000013
【図１０Ｃ】
2007511851.tif 000014
【図１０Ｄ−１】
2007511851.tif 000015
【図１０Ｄ−２】
2007511851.tif 000016
【図１０Ｅ】
2007511851.tif 000017
【図１０Ｆ】
2007511851.tif 000018
【図１０Ｇ】
2007511851.tif 000019
【図１０Ｈ】
2007511851.tif 000020
【図１０Ｉ】
2007511851.tif 000021
【図１０Ｊ】
2007511851.tif 000022
【図１１Ａ】
2007511851.tif 000023
【図１１Ｂ】
2007511851.tif 000024
【図１１Ｃ】
2007511851.tif 000025
【図１１Ｄ】
2007511851.tif 000026
【図１１Ｅ】
2007511851.tif 000027
【図１１Ｆ】
2007511851.tif 000028
【図１１Ｇ】
2007511851.tif 000029
【図１１Ｈ】
2007511851.tif 000030
【図１１Ｉ】
2007511851.tif 000031
【図１１Ｊ】
2007511851.tif 000032
【図１１Ｋ】
2007511851.tif 000033
【図１１Ｌ】
2007511851.tif 000034
【図１１Ｍ】
2007511851.tif 000035
【図１１Ｎ】
2007511851.tif 000036
【図１１Ｏ】
2007511851.tif 000037
【図１１Ｐ】
2007511851.tif 000038
【図１１Ｑ】
2007511851.tif 000039
【図１１Ｒ】
2007511851.tif 000040
【図１１Ｓ】
2007511851.tif 000041
【図１１Ｔ】
2007511851.tif 000042
【図１２】
2007511851.tif 000043
【図１３】
2007511851.tif 000044
【国際調査報告】
2007511851.tif 000045