以下、本発明の実施形態について図面に基づき詳細に説明する。
図1は、本実施形態に係る情報処理装置10のハードウェア構成を示す図である。
情報処理装置10は、制御部12、記憶部14、ユーザインタフェース(UI)部16を含んで構成される。制御部12、記憶部14、ユーザインタフェース(UI)部16は、バス18を介して接続される。
制御部12はCPU等のプログラム制御デバイスであり、情報処理装置10にインストールされるプログラムに従って動作する。なお、プログラムは、例えば、CD−ROM、DVD−ROMなどのコンピュータ可読な情報伝達媒体に格納することができ、情報伝達媒体を介して、あるいは、インターネットなどの通信ネットワークを介して情報処理装置10に供給される。
制御部12は、本発明に係るプログラムだけではなく、例えば、ワードプロセッサ、Webブラウザ、メーラなどといったいくつかのアプリケーションプログラムなどに従っても動作する。
記憶部14は、RAM等の記憶素子やハードディスクなどである。記憶部14には、制御部12によって実行される、本発明に係るプログラムや、アプリケーションプログラムなどが格納される。また、記憶部14は、制御部12のワークメモリとしても動作する。
UI部16は、液晶タッチパネルや、ディスプレイ、テンキーなどのキーパッド、マウスなどであり、利用者が行った操作の内容を制御部12に出力する。また、このUI部16は、制御部12から入力される指示に従って情報を表示出力する。
次に、情報処理装置10で実現される機能について説明する。情報処理装置10は、機能的には、図2の機能ブロック図に示すように、ウィンドウ情報記憶部20、ウィンドウ画像出力部22、ウィンドウ情報取得部24、取得情報記憶部26、ウィンドウ変化情報関連付け部28、イベント情報通知部30、イベント情報受付部32、ウィンドウ情報変更部34、ウィンドウ情報関連付け部36、追加画像出力部38、情報保存部40、情報復元部42、を含むものとして機能する。
ウィンドウ情報記憶部20は、記憶部14を主として実現される。ウィンドウ情報記憶部20は、図3に示すような、ウィンドウ情報44を複数記憶している。ウィンドウ情報44は、図5に示すような、アプリケーションプログラムに関連付けられるウィンドウ46(第1ウィンドウ46−1や第2ウィンドウ46−2)に対応している。ウィンドウ情報44がどのような情報であるかについては後述する。また、図3や図5の詳細についても後述する。
ウィンドウ画像出力部22は、制御部12を主として実現される。ウィンドウ情報記憶部20に記憶されているウィンドウ情報44に従って、ウィンドウ46を示す画像をディスプレイなどのUI部16に出力させる。それぞれのウィンドウ46は、アプリケーションプログラムと関連付けられている。
ウィンドウ情報取得部24は、制御部12を主として実現される。ウィンドウ情報取得部24は、ウィンドウ情報記憶部20からウィンドウ情報44を取得する。なお、例えば、ウィンドウ情報記憶部20に対する入出力がオペレーティングシステムによって管理されているような場合に、ウィンドウ情報取得部24が、オペレーティングシステムに対するシステムコールを行うことで、オペレーティングシステム経由でウィンドウ情報44を取得するようにしてももちろん構わない。また、ウィンドウ情報取得部24は、予め定められた間隔でウィンドウ情報44を取得するようにしても構わない。
取得情報記憶部26は、記憶部14を主として実現される。取得情報記憶部26は、ウィンドウ情報取得部24が取得したウィンドウ情報44などを記憶する。なお、先述したウィンドウ情報取得部24が、取得情報記憶部26に記憶されている個々のウィンドウ情報44に対応するウィンドウ情報44をウィンドウ情報記憶部20から取得するようにしてもよい。
ウィンドウ変化情報関連付け部28は、制御部12を主として実現される。ウィンドウ変化情報関連付け部28は、ウィンドウ情報取得部24が複数回取得した、ウィンドウ情報44の差分に基づいて、図3に示すような、ウィンドウ情報44の変化を示すウィンドウ変化情報48を生成する。そして、ウィンドウ変化情報関連付け部28は、ウィンドウ変化情報48をウィンドウ情報44に関連付ける。このとき、ウィンドウ変化情報関連付け部28は、ウィンドウ情報取得部24が取得するウィンドウ情報44と、取得情報記憶部26に記憶されているウィンドウ情報44との差分に基づいて、ウィンドウ変化情報48を生成するようにしても構わない。ここで、ウィンドウ変化情報関連付け部28は、生成されたウィンドウ変化情報48をウィンドウ情報44に関連付けて取得情報記憶部26に記憶しても構わない。
図3は、ウィンドウ情報取得部24がウィンドウ情報記憶部20から取得し、取得情報記憶部26に記憶されるウィンドウ情報44、及び、ウィンドウ変化情報48のデータ構造の一例である変化情報テーブル50を示す図である。なお、図3に示す、ウィンドウ情報44、及び、ウィンドウ変化情報48のデータ構造は表構造であるが、ウィンドウ情報44、及び、ウィンドウ変化情報48のデータ構造は表構造にもちろん限られない。
図3に示すように、変化情報テーブル50は、ウィンドウ情報44とウィンドウ変化情報48とを含んでいる。
ウィンドウ情報44は、具体的には、例えば、ウィンドウ識別子(ウィンドウID)52、位置情報54、サイズ情報56などを含んでいる。ウィンドウID52は、ウィンドウ46を識別するための識別子である。ウィンドウ46が生成されるたびに、制御部12によって、異なるウィンドウID52が生成され、そのウィンドウID52が、生成されたウィンドウ46に対して付与される。位置情報54は、ウィンドウ画像出力部22がウィンドウ46を示す画像をディスプレイなどのUI部16に出力させる位置(例えば、ウィンドウ46の左上の座標)を示す情報である。サイズ情報56は、ウィンドウ画像出力部22がウィンドウ46を示す画像をディスプレイなどのUI部16に出力させる際のウィンドウの大きさ(例えば、ウィンドウ46の幅と高さ)を示す情報である。なお、これらのウィンドウ情報44はあくまでも一例であり、例えば、ウィンドウ情報44がウィンドウID52だけを含んでいても構わない。
ウィンドウ変化情報48は、ウィンドウ変化情報関連付け部28によって生成される情報であり、ウィンドウ46に生じた変化に対応する状態を示す情報が示している。具体的には、例えば、ウィンドウ46が利用者に操作可能な状態になったことを示す「Activate」状態、ウィンドウ46が移動中となったことを示す「Move」状態、ウィンドウ46が「Move」の状態から止まったことを示す「Drop」状態、ウィンドウ46の大きさが変化したことを示す「Resize」状態などを示す情報がウィンドウ変化情報48として挙げられる。
なお、本実施形態においては、「Activate」の状態を示す情報は、アクティブフラグ58として、アクティブフラグ58に対応する変化情報テーブル50内の列に表現されている。すなわち、アクティブなウィンドウ46に対応するアクティブフラグ58の値が「1」となっている。一方、「Activate」以外の状態を示す情報は、ウィンドウ変化情報48の値が、ウィンドウ変化情報48に対応する変化情報テーブル50内の列(変化列48a)に示されている。
そして、変化情報テーブル50内の、アクティブフラグ58やウィンドウ変化情報48には、アクティブなウィンドウ46に対して直前に発生した変化が示される。なお、本実施形態のように、ウィンドウ変化情報48のうち、「Activate」の状態を示す情報をアクティブフラグ58によって表現しなくてももちろん構わない。
イベント情報通知部30は、制御部12を主として実現される。イベント情報通知部30は、ウィンドウの状態の変化を示すイベント情報60を通知する。具体的には、例えば、後述するイベント情報受付部32などにイベント情報60を通知する。このイベント情報通知部30は、具体的には、例えば、ウィンドウ46に関連付けられるアプリケーションプログラムを修正することによって実現される。
イベント情報受付部32は、制御部12を主として実現される。イベント情報受付部32は、イベント情報通知部30からイベント情報60を受け付ける。ここで、イベント情報受付部32は、ウィンドウ情報取得部24が取得するウィンドウ情報44の差分に基づいては検出されないウィンドウ46の状態の変化を示すイベント情報60を受け付けてもよい。
図4(a)、及び、図4(b)は、イベント情報受付部32が受け付けるイベント情報60のデータ構造の一例を示す図である。図4(a)に示すように、イベント情報60は、ウィンドウID52と、イベント種類情報62とを含んでいる。ウィンドウID52は、先述したように、ウィンドウ46を識別するための識別子である。そして、このウィンドウID52は、ウィンドウ情報44に含まれるウィンドウID52と対応する。
イベント種類情報62は、イベント情報通知部30から通知されるイベントの種類を示す情報である。イベント種類情報62の値としては、具体的には、例えば、新たなウィンドウ46が画面に表示されることを示す「Execute」、画面に表示されるウィンドウ46が画面に表示されなくなることを示す「Exit」、ウィンドウ46内に文書情報が表示されることを示す「OpenDoc」、ウィンドウ46内に表示されている文書情報が表示されなくなることを示す「CloseDoc」などが挙げられる。もちろん、これらの値以外の値をイベント種類情報62がとってもよい。また、上記以外の情報をイベント情報60が含んでいても構わない。例えば、図4(b)に示すように、イベント情報60は、文書情報のパスやURLを示す文書所在情報64を含んでいてもよい。
例えば、図4(a)に示すイベント情報60は、ウィンドウID52が「W001」のウィンドウ46が新たに画面に表示されることを示しており、図4(b)は、ウィンドウID52が「W001」のウィンドウ46内に「C:\work\paper.txt」で示されるパス(文書所在情報64)によって指定される文書情報が表示されることを示している。このように、イベント情報受付部32は、文書の所在を示す文書所在情報64を含む、ウィンドウ46内に文書情報が表示されることを示すイベント情報を受け付けてもよい。
ウィンドウ情報関連付け部36は、制御部12を主として実現される。ウィンドウ情報関連付け部36は、ウィンドウ情報取得部24が取得する複数のウィンドウ情報44の関係が、予め定められた条件を満たす場合に、これら複数のウィンドウ情報44を関連付ける関連ウィンドウ情報を生成し、これら複数のウィンドウ情報44に関連ウィンドウ情報を関連付ける。また、ウィンドウ情報関連付け部36が、複数のウィンドウ情報44の関連付けの解除もしてもよい。すなわち、ウィンドウ情報関連付け部36が、関連ウィンドウ情報を削除してもよい。
ここで、ウィンドウ情報関連付け部36によって関連付けられたウィンドウ46を示す画像がドッキングされて、ウィンドウ画像出力部22によって、UI部16に表示されるようにしてもよい。具体的には、例えば、図5に示すように、複数の独立したウィンドウ46(第1ウィンドウ46−1及び第2ウィンドウ46−2)を示す画像が、ウィンドウ画像出力部22によってディスプレイなどのUI部16に表示出力されている状況で、これらのウィンドウ46が予め定められた条件を満たす場合には、図6に示すように、ウィンドウ画像出力部22が、これらのウィンドウ46が結合されたドッキングウィンドウ66をディスプレイなどのUI部16に表示出力するようにしてもよい。
図7は、ウィンドウ情報44の関連を示す関連ウィンドウ情報のデータ構造の一例であるウィンドウテーブル68を示す図である。関連ウィンドウ情報は、例えば、取得情報記憶部26に記憶されている。図7に示すように、ウィンドウテーブル68は、ウィンドウID52、位置情報54、サイズ情報56、ドッキングウィンドウ識別子(ドッキングウィンドウID)70、文書所在情報64、文書内位置情報72を含んでいる。
ウィンドウID52、位置情報54、サイズ情報56は、ウィンドウ情報44に含まれるウィンドウID52、位置情報54、サイズ情報56にそれぞれ対応している。ドッキングウィンドウID70は、ウィンドウ情報関連付け部36による関連付け(本実施形態では、ドッキング)が行われる際に、ウィンドウ情報関連付け部36によって、異なるドッキングウィンドウID70が生成される。そして、生成されたドッキングウィンドウID70は、ウィンドウ情報関連付け部36によって関連付けられた複数のウィンドウ46に対して付与される。なお、ドッキングされていないウィンドウ46については、ドッキングウィンドウID70の値は空白となっている。
図7の例では、7つのウィンドウ46が現在UI部16上に表示されており、そのうち、「W003」、及び、「W004」のウィンドウ46がドッキングされており、「W005」、「W006」、及び、「W007」のウィンドウ46もドッキングされている。
なお、イベント情報受付部32が、文書の所在を示す文書所在情報64を含む、ウィンドウ46内に文書情報が表示されることを示すイベント情報60を受け付ける際に、図7に示すように、イベント情報受付部32が受け付けた文書所在情報64を、ウィンドウ情報関連付け部36がウィンドウ情報44と関連付けてもよい。例えば、イベント情報受付部32が、値が「OpenDoc」であるイベント種類情報62と、文書の所在を示す文書所在情報64とを含むイベント情報60を受け付けた際に、ウィンドウ情報関連付け部36が、受け付けたイベント情報60に含まれる文書所在情報64の値を、ウィンドウテーブル68に追加してもよい。
なお、イベント情報受付部32が、値が「CloseDoc」であるイベント種類情報62を含むイベント情報60を受け付けた際に、ウィンドウ情報関連付け部36が、ウィンドウテーブル68内の文書所在情報64を削除するようにしても構わない。
また、イベント情報受付部32が、文書情報がUI部16に表示される位置をスクロール位置やカーソル位置などによって示した文書内位置情報72を含むイベント情報60を受け付ける際に、図7に示すように、イベント情報受付部32が受け付けた文書内位置情報72を、ウィンドウ情報関連付け部36がウィンドウ情報44と関連付けてもよい。すなわち、イベント情報受付部32が受け付けたイベント情報60に含まれる文書内位置情報72の値を、ウィンドウテーブル68に追加してもよい。
図8は、ドッキングウィンドウ情報のデータ構造の一例であるドッキングウィンドウテーブル74を示す図である。ドッキングウィンドウテーブル74は、ドッキングウィンドウID70、位置情報54、サイズ情報56、ドッキング集合情報76を含んでいる。ドッキングウィンドウID70は、ウィンドウテーブル68内のドッキングウィンドウID70に対応している。位置情報54は、ウィンドウ画像出力部22がドッキングウィンドウ66を示す画像をディスプレイなどのUI部16に出力させる位置(例えば、ドッキングウィンドウ66の左上の座標)を示す情報である。サイズ情報56は、ウィンドウ画像出力部22がドッキングウィンドウ66を示す画像をディスプレイなどのUI部16に出力させる際のドッキングウィンドウの大きさ(例えば、ドッキングウィンドウ66の幅と高さ)を示す情報である。ドッキング集合情報76は、ドッキングウィンドウ66を構成するウィンドウ46のウィンドウID52を示している。
図8の例では、現在UI部16に表示されているドッキングウィンドウ66が2つあり、一方は2つのウィンドウ46から、他方は3つのウィンドウ46から構成される。
なお、図7に示す、関連ウィンドウ情報の一例であるウィンドウテーブル68、及び、図8に示す、ドッキングウィンドウ情報の一例であるドッキングウィンドウテーブル74のデータ構造は表構造であるが、関連ウィンドウ情報、及び、ドッキングウィンドウ情報のデータ構造は表構造にもちろん限られない。
また、関連ウィンドウ情報は、取得情報記憶部26やウィンドウ情報記憶部20に記憶されていても構わない。ドッキングウィンドウ情報は、取得情報記憶部26やウィンドウ情報記憶部20に記憶されていても構わない。
ウィンドウ情報変更部34は、制御部12を主として実現される。ウィンドウ情報変更部34は、ウィンドウ変化情報、又は、イベント情報に基づいて、ウィンドウ情報記憶部20に記憶されている少なくとも1つの前記ウィンドウ情報を変更する。このとき、オペレーティングシステムに対するシステムコールを行うことで、オペレーティングシステムにウィンドウ情報記憶部20に記憶されている少なくとも1つの前記ウィンドウ情報を変更させてももちろん構わない。
また、ウィンドウ情報変更部34は、関連ウィンドウ情報によって、ウィンドウ変化情報48に関連付けられるウィンドウ情報44、又は、イベント情報60によって状態の変化を示されるウィンドウ46に対応するウィンドウ情報44と関連付けられるウィンドウ情報44を変更するようにしてもよい。このとき、関連ウィンドウ情報によって関連付けられるウィンドウ情報44のすべてを変更するようにしてもよいし、一部を変更するようにしてもよい。また、このとき、ウィンドウ情報変更部34は、関連ウィンドウ情報によって関連付けられるウィンドウ情報44に関連付けられるアクティブフラグ58などのウィンドウ変化情報48を変更するようにしてもよい。
追加画像出力部38は、制御部12を主として実現される。追加画像出力部38は、ウィンドウ変化情報48、又は、イベント情報60に基づいて、追加画像をディスプレイなどのUI部16に出力させる。追加画像出力部38による処理の詳細については後述する。
情報保存部40は、制御部12を主として実現される。情報保存部40は、記憶部14に記憶されている情報を要求に応じて保存する。具体的には、例えば、取得情報記憶部26に記憶されている関連ウィンドウ情報やドッキングウィンドウ情報を利用者の要求に応じて保存する。例えば、ドッキングウィンドウID70が「D001」であるドッキングウィンドウ66に関する情報を保存する指示を利用者から受け付けた際に、図9に示すように、ウィンドウテーブル68に示されている情報のうち、ドッキングウィンドウID70が「D001」である行を抜き出した保存対象情報78を情報保存部40が保存する。
情報復元部42は、制御部12を主として実現される。情報復元部42は、情報保存部40に保存されている情報を要求に応じて記憶部14に復元する。具体的には、例えば、ドッキングウィンドウID70が「D001」であるドッキングウィンドウ66に関する情報を復元する指示を、例えば、利用者から受け付けた際に、情報復元部42が、図9に示す関連ウィンドウ情報を、取得情報記憶部26に復元する。図9に示すように、文書所在情報64や、スクロール位置やカーソル位置を示す文書内位置情報72を復元しても構わない。また、このとき、ウィンドウ情報変更部34が、情報復元部42によって復元された情報に基づいて、ウィンドウ情報記憶部20に記憶されている少なくとも1つのウィンドウ情報44を変更するようにしてもよい。例えば、ドッキングウィンドウID70が「D001」であるドッキングウィンドウ情報をウィンドウ情報記憶部20に記憶するようにしてもよい。また、このとき、情報復元部42は、ウィンドウ画像出力部22に、ウィンドウ情報記憶部20に記憶されたドッキングウィンドウ情報に基づいて、ドッキングウィンドウ66を示す画像をディスプレイなどのUI部16に表示させるようにしても構わない。
また、情報保存部40が要求に応じて文書所在情報64を保存し、情報復元部42が、情報保存部40が保存した文書所在情報64を復元し、情報復元部42が、ウィンドウ画像出力部22に、取得情報記憶部26に復元された文書所在情報64や、スクロール位置やカーソル位置を示す文書内位置情報72によって特定される文書情報の画像を、UI部16に出力するウィンドウ46の画像内などに表示させるようにしても構わない。
次に、ウィンドウ変化情報48を生成する処理の一具体例について、図10に示すフロー図を参照しながら説明する。
まず、ウィンドウ情報取得部24は、アクティブなウィンドウのウィンドウID52、位置情報54、サイズ情報56を含むウィンドウ情報44をウィンドウ情報記憶部20から取得する(S101)。
そして、変化情報テーブル50内の、取得したウィンドウID52が示されている行を参照する(S102)。なお、このとき該当する行が存在しないときは、処理を終了する。
そして、ウィンドウ変化情報関連付け部28は、S102に示す処理において、参照する行のアクティブフラグ58の値が「1」であるか否かを確認する(S103)。
そして、アクティブフラグ58の値が「1」でない場合は(S103:N)、ウィンドウ変化情報関連付け部28は、値が「Activate」であるウィンドウ変化情報48を生成する(S104)。
一方、アクティブフラグ58の値が「1」である場合は(S103:Y)、ウィンドウ変化情報関連付け部28は、S101に示す処理においてウィンドウ情報記憶部20から取得したウィンドウ情報44に含まれるサイズ情報56の値と、S102に示す処理において取得した変化情報テーブル50内の行のサイズ情報56の値とを比較して、ウィンドウ46のサイズが変更されているか否かを確認する(S105)。
ここで、ウィンドウ46のサイズが変更されている場合は(S105:Y)、ウィンドウ変化情報関連付け部28は、値が「Resize」であるウィンドウ変化情報48を生成する。(S106)。
一方、ウィンドウのサイズが変更されていない場合は(S105:N)、ウィンドウ変化情報関連付け部28は、S101に示す処理においてウィンドウ情報記憶部20から取得したウィンドウ情報44に含まれる位置情報54と、S102に示す処理において取得した変化情報テーブル50内の行の位置情報54の値とを比較して、ウィンドウの位置が変更されているか否かを確認する(S107)。
ここで、ウィンドウの位置が変更されている場合は(S107:Y)、ウィンドウ変化情報関連付け部28は、値が「Move」であるウィンドウ変化情報48を生成する(S108)。
一方、ウィンドウの位置が変更されていない場合は(S107:N)、S102に示す処理において、取得した変化情報テーブル50内の行のウィンドウ変化情報48の値が、「Move」であるか否かを確認する(S109)。
ここで、ウィンドウ変化情報48の値が「Move」である場合は(S109:Y)、ウィンドウ変化情報関連付け部28は、UI部16に含まれるマウスから、マウスが有するボタンの状態を取得する(S110)。そして、マウスが押されている状態であるか否かを確認する(S111)。このとき、マウスが押されていない状態である場合は(S111:N)、ウィンドウ変化情報関連付け部28は、値が「Drop」であるウィンドウ変化情報48を生成する(S112)。マウスが押されている状態である場合は(S111:Y)、処理を終了する。このことからわかるように、値が「Drop」のウィンドウ変化情報48は、値が「Move」のウィンドウ変化情報48が取得情報記憶部26に一旦記憶された後には一度だけ生成されることとなる。このことにより、値が「Move」のウィンドウ変化情報48が取得情報記憶部26に一旦記憶された後には、単にマウスをクリックしただけでは、値が「Drop」のウィンドウ変化情報48は生成されないこととなる。
また、S109に示す処理において、ウィンドウ変化情報48の値が「Move」でない場合は(S109:N)、処理を終了する。
そして、ウィンドウ変化情報関連付け部28は、S104,S106,S108,又はS112に示す処理においてウィンドウ変化情報48が生成された際には、変化情報テーブル50を書き換える(S113)。具体的には、まず、ウィンドウ変化情報関連付け部28は、変化情報テーブル50内の全てのアクティブフラグ58及びウィンドウ変化情報48の値を削除する。そして、「Activate」の状態を示すウィンドウ変化情報48が生成された場合は、ウィンドウ変化情報関連付け部28は、S102に示す処理において取得した変化情報テーブル50内の行のアクティブフラグ58の列に「1」を設定する。また、その他の状態を示すウィンドウ変化情報48が生成された場合は、ウィンドウ変化情報関連付け部28は、S102に示す処理において取得した変化情報テーブル50内の行のウィンドウ変化情報48の列に、生成されたウィンドウ変化情報48の値を設定する。
このように、取得情報記憶部26に記憶されているウィンドウ変化情報48を、ウィンドウ変化情報関連付け部28が生成したウィンドウ変化情報48に置換するようにしても構わない。
次に、イベント情報受付部32が、Executeのイベントを示すイベント情報60を受け付けた際の処理の流れについて、図11に示すフロー図を参照しながら説明する。
まず、ウィンドウ情報変更部34は、イベント情報受付部32が受け付けたイベント情報60に含まれるウィンドウID52がドッキングウィンドウID70であるか否かを確認する(S201)。
受け付けたイベント情報60に含まれるウィンドウID52がドッキングウィンドウID70である場合は(S201:Y)、ウィンドウ情報変更部34は、イベント情報受付部32が受け付けたイベント情報60に含まれるドッキングウィンドウID70に対応するドッキングウィンドウ情報をウィンドウ情報記憶部20から取得する(S202)。
そして、ウィンドウ情報変更部34は、取得情報記憶部26に記憶されているドッキングウィンドウテーブル74に、S202に示す処理で取得したドッキングウィンドウID70、位置情報54、サイズ情報56を追加する(S203)。
そして、ウィンドウ情報取得部24は、ドッキングウィンドウ66を構成するウィンドウ46のウィンドウ情報44をウィンドウ情報記憶部20から取得する(S204)。
そして、ウィンドウ情報変更部34は、取得したウィンドウ情報44を、取得情報記憶部26に記憶されているウィンドウテーブル68に追加して(S205)、処理を終了する。
一方、イベント情報受付部32が受け付けたイベント情報60に含まれるウィンドウID52がドッキングウィンドウ66でない場合は(S201:N)、ウィンドウ情報取得部24は、イベント情報受付部32が受け付けたイベント情報60に含まれるウィンドウID52に対応するウィンドウ情報44をウィンドウ情報記憶部20から取得する(S206)。
そして、ウィンドウ情報変更部34は、取得したウィンドウ情報44を、取得情報記憶部26に記憶されているウィンドウテーブル68に追加して(S207)、処理を終了する。
なお、上述の通り、イベント情報受付部32は、ドッキングウィンドウID70を含むイベント情報60を取得してもよい。
次に、イベント情報受付部32が、Exitのイベントを示すイベント情報60を受け付けた際の処理の流れについて、図12に示すフロー図を参照しながら説明する。
まず、イベント情報受付部32が受け付けたイベント情報60に含まれるウィンドウID52がドッキングウィンドウID70であるか否かを確認する(S301)。
イベント情報受付部32が受け付けたイベント情報60に含まれるウィンドウID52がドッキングウィンドウID70である場合は(S301:Y)、ウィンドウ情報変更部34は、イベント情報受付部32が受け付けたイベント情報60に含まれるドッキングウィンドウID70に対応するドッキングウィンドウ66を構成するウィンドウ46のウィンドウ情報44を、取得情報記憶部26に記憶されているウィンドウテーブル68から削除する(S302)。なお、このとき、ウィンドウ情報記憶部20に記憶されているウィンドウ情報44を併せて削除してもよい。
そして、ウィンドウ情報変更部34は、イベント情報受付部32が受け付けたドッキングウィンドウID70に対応するドッキングウィンドウ情報を、取得情報記憶部26に記憶されているドッキングウィンドウテーブル74から削除して(S303)、処理を終了する。なお、このとき、ウィンドウ情報記憶部20に記憶されているドッキングウィンドウ情報を併せて削除してもよい。
イベント情報受付部32が受け付けたイベント情報60に含まれるウィンドウID52がドッキングウィンドウID70でない場合は(S301:N)、ウィンドウ情報変更部34は、イベント情報受付部32が受け付けたイベント情報60に含まれるウィンドウID52に対応するウィンドウ情報44を、取得情報記憶部26に記憶されているウィンドウテーブル68から削除して(S304)、処理を終了する。このとき、ウィンドウ情報記憶部20に記憶されているウィンドウ情報44を削除してもよい。
次に、ウィンドウ変化情報関連付け部28が、「Activate」という状態を示すウィンドウ変化情報48を生成して、変化情報テーブル50のアクティブフラグ58の値に「1」を設定した際の処理の流れについて、図13に示すフロー図を参照しながら説明する。
まず、ウィンドウ情報変更部34が、取得情報記憶部26に記憶されている変化情報テーブル50を参照し、アクティブフラグ58の値が「1」であるウィンドウID52を取得して、ウィンドウテーブル68を参照してこのウィンドウID52のウィンドウ46がドッキングウィンドウ66を構成しているか否かを確認する(S401)。そして、このウィンドウ46がドッキングウィンドウ66を構成している場合は(S401:Y)、ウィンドウ画像出力部22は、このウィンドウ46にドッキングされているウィンドウ46を示す画像を前面化してUI部16に出力する(S402)。
一方、このウィンドウ46がドッキングウィンドウ66を構成していない場合は(S401:N)、処理を終了する。
次に、ウィンドウ変化情報関連付け部28が、「Move」という状態を示すウィンドウ変化情報を生成した際の処理の流れについて、図14に示すフロー図を参照しながら説明する。
まず、ウィンドウ情報取得部24が、変化情報テーブル50を参照し、ウィンドウ変化情報48の値が「Move」であるウィンドウID52を取得して、このウィンドウID52のウィンドウ46の位置情報54を、ウィンドウ情報記憶部20から取得する(S501)。
そして、ウィンドウ情報変更部34は、取得情報記憶部26に記憶されているウィンドウテーブル68の、S501に示す処理において取得したウィンドウID52に対応する行の、位置情報54の列の値を、S501に示す処理においてウィンドウ情報取得部24がウィンドウ情報記憶部20から取得した位置情報54の値に変更する(S502)。
そして、ウィンドウ情報変更部34は、変化情報テーブル50を参照し、ウィンドウ変化情報48の値が「Move」であるウィンドウID52を取得して、ウィンドウテーブルを参照して、このウィンドウID52のウィンドウ46がドッキングウィンドウ66を構成しているか否かを確認する(S503)。そして、このウィンドウ46がドッキングウィンドウ66を構成している場合は(S503:Y)、ウィンドウ情報変更部34は、ドッキングウィンドウ66を構成している他のウィンドウ46について、ドッキングウィンドウ66を構成するウィンドウ46が連結して表示されるよう、位置情報54を算出し、算出された位置情報54に基づいて、ウィンドウ情報記憶部20に記憶されているウィンドウ情報44に含まれる位置情報54を変更する(S504)。このように、ウィンドウ情報変更部34は、関連ウィンドウ情報によって関連付けられる複数のウィンドウ情報44に対応するウィンドウ46が連結して表示出力されるよう、複数のウィンドウ情報44のうちの少なくとも1つを変更してもよい。このことによって、ウィンドウ画像出力部22は、変更されたウィンドウ情報44に基づいてウィンドウ46を示す画像をUI部16に出力する。
そして、ウィンドウ情報変更部34は、算出された位置情報54に基づいて、取得情報記憶部26に記憶されているウィンドウテーブル68内の位置情報54を変更する(S505)。
このように、ウィンドウ情報変更部34が、関連ウィンドウ情報によって関連付けられる複数のウィンドウ情報44に対応するウィンドウ46が連結して画面に表示されるよう、複数のウィンドウ情報44のうちの少なくとも1つを変更するようにしてもよい。
S503に示す処理において、ウィンドウ変化情報48の値が「Move」であるウィンドウID52のウィンドウ46がドッキングウィンドウ66を構成していない場合は(S503:N)、ウィンドウ情報関連付け部36は、関連付けの対象となるウィンドウ46を探す(S506)。また、S505に示す処理が終了した場合も、ウィンドウ情報関連付け部36は、関連付けの対象となるウィンドウ46を探す(S506)。S506に示す処理の詳細は後述する。
そして、S506に示す処理において関連付けの対象となるウィンドウ46が検出された場合は(S506:Y)、追加画像出力部38が、図5に示すのりしろ画像80をUI部16に表示する(S507)。一方、関連付けの対象となるウィンドウ46が検出されなかった場合は(S506:N)、追加画像出力部38が、追加画像をUI部16に表示している際には、のりしろ画像80を画面上に表示しないようにする(S508)。なお、図5に表示されているのりしろ画像80の詳細については後述する。
次に、ウィンドウ変化情報関連付け部28が、Dropという状態を示すウィンドウ変化情報を生成した際の処理の流れについて、図15に示すフロー図を参照しながら説明する。
まず、ウィンドウ情報取得部24が、変化情報テーブル50を参照し、ウィンドウ変化情報48の値が「Drop」であるウィンドウID52を取得して、このウィンドウID52のウィンドウ46の位置情報54とサイズ情報56とを、ウィンドウ情報記憶部20から取得する(S601)。
そして、ウィンドウ情報関連付け部36が、関連付けの対象となるウィンドウ46を探す(S602)。S602に示す処理の詳細については後述する。
ここで、関連付けの対象となるウィンドウ46が検出されない場合は(S602:N)、処理を終了する。関連付けの対象となるウィンドウ46が検出された場合は(S602:Y)、ウィンドウ情報関連付け部36が、ウィンドウ変化情報48の値が「Drop」であるウィンドウID52に対応するウィンドウ46と、S602の処理において検出されたウィンドウ46とを、ドッキングする(S603)。このとき、ウィンドウ情報変更部34が、ウィンドウ情報記憶部20に記憶されているウィンドウ情報44やドッキングウィンドウ情報を変更してもよい。ドッキング処理の詳細については後述する。
そして、ウィンドウ情報関連付け部36が、新たなドッキングウィンドウID70を生成し、ウィンドウテーブル68内の、ウィンドウ変化情報48の値が「Drop」であるウィンドウID52のウィンドウ46と、S602の処理において検出されたウィンドウ46それぞれについて、取得情報記憶部26に記憶されているウィンドウテーブル68内のドッキングウィンドウID70を変更し、ウィンドウ情報変更部34が、ドッキングウィンドウID70を変更したウィンドウ46の位置情報54、及び、サイズ情報56を変更する(S604)。
そして、ウィンドウ情報関連付け部36は、ドッキングされる各ウィンドウ46のウィンドウ情報44に基づいて、ドッキングウィンドウID70、ドッキングウィンドウ66の位置情報54、ドッキングウィンドウ66のサイズ情報56、ドッキング集合情報76を含むドッキングウィンドウ情報を生成して、ドッキングウィンドウテーブル74を変更する(S605)。このときのドッキングウィンドウID70も、ウィンドウ情報関連付け部36が生成した値となる。
次に、ウィンドウ変化情報関連付け部28が、Resizeという状態を示すウィンドウ変化情報を生成した際の処理の流れについて、図16に示すフロー図を参照しながら説明する。
まず、ウィンドウ情報取得部24が、変化情報テーブル50を参照し、ウィンドウ変化情報48の値が「Resize」であるウィンドウID52を取得して、このウィンドウID52のウィンドウ46のサイズ情報56を、ウィンドウ情報記憶部20から取得する(S701)。
そして、ウィンドウ情報変更部34は、ウィンドウ情報記憶部20から取得したウィンドウ情報44に基づいて、取得情報記憶部26に記憶されているウィンドウテーブル68のサイズ情報56を変更する(S702)。
そして、ウィンドウ情報変更部34は、変化情報テーブル50を参照し、ウィンドウ変化情報48の値が「Resize」であるウィンドウID52を取得して、ウィンドウテーブル68を参照して、このウィンドウID52のウィンドウ46がドッキングウィンドウ66を構成しているか否かを確認する(S703)。そして、このウィンドウ46がドッキングウィンドウ66を構成している場合は(S703:Y)、ウィンドウ情報変更部34は、ドッキングウィンドウ66を構成している他のウィンドウ46について、ウィンドウテーブル68に基づいて、ドッキングウィンドウ66を構成するウィンドウ46が連動してサイズ変更されるよう、位置情報54及びサイズ情報56を算出する。そして、ウィンドウ情報変更部34は、算出された位置情報54に基づいて、ウィンドウ情報記憶部20に記憶されているウィンドウ情報44に含まれる位置情報54及びサイズ情報56を変更する(S704)。このことによって、ウィンドウ画像出力部22は、変更されたウィンドウ情報44に基づいてウィンドウ46を示す画像をUI部16に出力する。
そして、ウィンドウ情報変更部34は、取得情報記憶部26に記憶されているウィンドウテーブル68内の、位置情報54及びサイズ情報56の値も変更する(S705)。
また、ウィンドウ情報変更部34は、取得情報記憶部26に記憶されているドッキングウィンドウテーブル74内の、位置情報54及びサイズ情報56の値も変更する(S706)。
S703に示す処理において、ウィンドウ変化情報48の値が「Resize」であるウィンドウID52のウィンドウ46がドッキングウィンドウ66を構成していない場合は(S703:N)、処理を終了する。
次に、関連付けの対象となるウィンドウ46を検出する一連の処理について説明する。
ここでは、UI部16に表示出力されているウィンドウ46の各辺について、図17に示すように、上辺を「Top」、下辺を「Bottom」、左辺を「Left」、右辺を「Right」と呼ぶこととする。
図5に示すように、本実施形態では、第1ウィンドウ46−1と第2ウィンドウ46−2が、ディスプレイ等のUI部16上に表示されていることとする。
そして、この場合、第1ウィンドウ46−1と第2ウィンドウ46−2との対応する辺がドッキングされる候補となる。具体的には、例えば、第1ウィンドウ46−1の「Right」と、第2ウィンドウ46−2の「Left」、第1ウィンドウ46−1の「Left」と第2ウィンドウ46−2の「Right」、第1ウィンドウ46−1の「Top」と第2ウィンドウ46−2の「Bottom」、第1ウィンドウ46−1の「Bottom」と第2ウィンドウ46−2の「Top」とがドッキングされる候補となる。
そして、第1ウィンドウ46−1と第2ウィンドウ46−2との対応する辺間の距離が、ある一定の閾値より小さい第2ウィンドウ46−2を、第1ウィンドウ46−1の関連付け対象ウィンドウ46と呼ぶ。
ここで、第1ウィンドウ46−1の関連付け対象ウィンドウ46を探す処理(S506及びS602)の流れの一例を、図18に示すフロー図を参照しながら説明する。
まず、ウィンドウ情報関連付け部36は、ドッキングウィンドウテーブル74を参照して、ドッキングウィンドウ66のうちから第1ウィンドウ46−1と第2ウィンドウ46−2との対応する辺間の距離が、所定の閾値より小さい第2ウィンドウ46−2を探す。そして、このとき、上記の第2ウィンドウ46−2が見つかった場合は(S801:Y)、ウィンドウ情報関連付け部36は、そのウィンドウ46を関連付け対象ウィンドウ46とする(S802)。一方、第1ウィンドウ46−1の関連付け対象ウィンドウ46が見つからなかった場合は(S801:N)、ウィンドウ情報関連付け部36は、ウィンドウテーブル68を参照して、ドッキングされていないウィンドウ46のうちから、第1ウィンドウ46−1と第2ウィンドウ46−2との対応する辺間の距離が、所定の閾値より小さい第2ウィンドウ46−2を探す(S803)。このとき、上記の第2ウィンドウ46−2が見つかった場合は(S803:Y)、ウィンドウ情報関連付け部36は、そのウィンドウ46を関連付け対象ウィンドウ46とする(S804)。このようにして、ウィンドウ情報関連付け部36は、ドッキングウィンドウ66またはドッキングされていない単独のウィンドウ46に対して、第1ウィンドウ46−1の関連付け対象ウィンドウ46を探す。
次に、ウィンドウ46をドッキングする処理(S603)について説明する。上述の通り、本実施形態では、ウィンドウ情報44が関連付けられたウィンドウ46は、ドッキングされることとなる。
ドッキング処理は、第1ウィンドウ46−1のどの辺がドッキング対象となるかによって、以下のように処理の内容が異なる。
第1ウィンドウ46−1のドッキング対象となる辺が「Left」である場合は、第1ウィンドウ46−1の高さを第2ウィンドウ46−2の高さと同じにし、第2ウィンドウ46−2の左に第1ウィンドウ46−1が連結されるよう、ウィンドウ情報変更部34は、ウィンドウ情報記憶部20に記憶されているウィンドウ情報44に含まれる位置情報54及びサイズ情報56を変更する。
第1ウィンドウ46−1のドッキング対象となる辺が「Right」である場合は、第1ウィンドウ46−1の高さを第2ウィンドウ46−2の高さと同じにし、第2ウィンドウ46−2の右に第1ウィンドウ46−1が連結されるよう、ウィンドウ情報変更部34は、ウィンドウ情報記憶部20に記憶されているウィンドウ情報44に含まれる位置情報54及びサイズ情報56を変更する。
第1ウィンドウ46−1のドッキング対象となる辺が「Top」である場合は、第1ウィンドウ46−1の幅を第2ウィンドウ46−2の幅と同じにし、第2ウィンドウ46−2の下に第1ウィンドウ46−1が連結されるよう、ウィンドウ情報変更部34は、ウィンドウ情報記憶部20に記憶されているウィンドウ情報44に含まれる位置情報54及びサイズ情報56を変更する。
第1ウィンドウ46−1のドッキング対象となる辺が「Bottom」である場合は、第1ウィンドウ46−1の幅を第2ウィンドウ46−2の幅と同じにし、第2ウィンドウ46−2の上に第1ウィンドウ46−1が連結されるよう、ウィンドウ情報変更部34は、ウィンドウ情報記憶部20に記憶されているウィンドウ情報44に含まれる位置情報54及びサイズ情報56を変更する。
そして、ウィンドウ画像出力部22は、変更されたウィンドウ情報44に基づいて、第1ウィンドウ46−1を示す画像をUI部16に出力する。このとき、ウィンドウ画像出力部22は、変更後のウィンドウ情報44と変更前のウィンドウ情報44とに基づいて、ウィンドウが移動しているようなアニメーションとして、UI部16は第1ウィンドウ46−1を示す画像を出力してもよい。
もちろん、上記の場合において、第2ウィンドウ46−2が第1ウィンドウ46−1と連結されるよう、ウィンドウ情報変更部34が、ウィンドウ情報記憶部20に記憶されているウィンドウ情報44に含まれる位置情報54及びサイズ情報56を変更するようにしてもよい。
このように、ウィンドウ情報関連付け部36が、ウィンドウ情報取得部24が取得する複数のウィンドウ情報44に含まれる位置情報54が示す位置間の長さが、予め定められた長さの条件を満たす(例えば、予め定められた長さ以下、又は、予め定められた長さより短い)場合に、これらの複数のウィンドウ情報44を関連付けるようにしてもよい。
なお、本発明は上記実施形態に限定されるものではない。
例えば、ウィンドウ変化情報関連付け部28によってウィンドウ変化情報48が生成される対象となるウィンドウ46の状態の変化と、イベント情報受付部32が受け付けることによって検出される対象となるウィンドウ46の状態の変化との分担を、予め定めた基準に従って決定するようにしてもよい。具体的には、例えば、個別のウィンドウ情報44の比較により検出ができるウィンドウ46の状態の変化は、ウィンドウ変化情報関連付け部28によるウィンドウ変化情報48の生成対象とし、個別のウィンドウ情報44の比較によっては検出ができないウィンドウ46の状態の変化は、イベント情報受付部32の受付対象とするなどのようにしてもよい。
また、情報処理装置10は、ウィンドウ情報関連付け部36や、追加画像出力部38を備えない構成であってもよい。また、情報保存部40や、情報復元部42を備えない構成であってもよい。
また、ウィンドウ情報記憶部20や、ウィンドウ画像出力部22や、取得情報記憶部26や、イベント情報通知部30を情報処理装置10外の別のコンピュータに設け、情報処理装置10と通信部を介して通信する構成とした、分散型情報処理システムに本発明を適用してもよい。
また、情報処理装置10は、一つの筐体により構成されていても、複数の筐体により構成されていてもよい。
また、情報処理装置10の役割のうちのいくつかを、オペレーションシステムの機能を利用して実現するようにしてもよい。
なお、本明細書及び図面中の具体的な数値はあくまでも例示であり、これらの数値に限定されない。
10 情報処理装置、12 制御部、14 記憶部、16 ユーザインタフェース(UI)部、18 バス、20 ウィンドウ情報記憶部、22 ウィンドウ画像出力部、24 ウィンドウ情報取得部、26 取得情報記憶部、28 ウィンドウ変化情報関連付け部、30 イベント情報通知部、32 イベント情報受付部、34 ウィンドウ情報変更部、36 ウィンドウ情報関連付け部、38 追加画像出力部、40 情報保存部、42 情報復元部、44 ウィンドウ情報、46 ウィンドウ、48 ウィンドウ変化情報、48a 変化列、50 変化情報テーブル、52 ウィンドウ識別子(ウィンドウID)、54 位置情報、56 サイズ情報、58 アクティブフラグ、60 イベント情報、62 イベント種類情報、64 文書所在情報、66 ドッキングウィンドウ、68 ウィンドウテーブル、70 ドッキングウィンドウ識別子(ドッキングウィンドウID)、72 文書内位置情報、74 ドッキングウィンドウテーブル、76 ドッキング集合情報、78 保存対象情報、80 のりしろ画像。