以下、添付図面を参照して、本発明の実施例を説明する。以下で説明される個別の実施例は、本発明の上位概念から下位概念までの種々の概念を理解するために役立つであろう。
なお、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施例によって限定されるわけではない。また、実施例の中で説明されている特徴の組み合わせ全てが、本発明に必須とは限らない。
本実施例では、本発明を情報処理装置(PC)がイベント検知アプリケーションプログラム(以下、「イベント検知アプリケーション」)に従って動作することにより実現する場合について説明する。本実施例によれば、オペレーティングシステム(OS)は、コンピュータ上でマルチウインドウシステムを実現する従来のOSをそのまま利用できるという利点がある。マルチウインドウシステムは、複数のウインドウを表示可能な表示画面を持つ。また、本実施例ではOSとしてWindows(登録商標)を利用するものとして説明を行うが、他のOSを利用してもよい。また、マルチウインドウシステムにおいては一般的に、PCはOSに従って各アプリケーションプログラムのウインドウの表示(描画)を制御する。例えばWindows(登録商標)の場合、PCはアプリケーションプログラムに従ってOSのAPI(Application Program Interface)を呼び出し、それに応じてOSに従いウインドウの表示を行う。
図1は、OSと各種アプリケーションとを実行する情報処理装置(PC100)の構成を示すブロック図である。PC100はパーソナルコンピュータなどにより実現される。図1に示すように、PC100は、CRT101、VRAM102、BMU103、キーボード104、PD105、CPU106、ROM107、RAM108、HDD109及びネットワークI/F111を有する。CRT101(Cathode Ray Tube)には、例えば編集中の文書、図形、画像、その他の編集情報、アイコン、メッセージ、メニュー、その他のユーザインタフェースなどの情報が表示される。VRAM102には、CRT101に表示するための画像が描画される。このVRAM102に描画された画像データは、所定の規定に従ってCRT101に転送され、これによりCRT101に画像が表示される。BMU103(ビットムーブユニット)は、例えば、メモリ間(例えば、VRAM102と他のメモリとの間)のデータ転送や、メモリと各I/Oデバイス(例えば、ネットワークI/F111)との間のデータ転送を制御する。キーボード104は、文書等を入力するための各種キーを有する。PD105(ポインティングデバイス105)は、例えば、CRT101に表示されたアイコン、メニュー、その他のコンテンツを指示するために使用される。CPU106は、ROM107、HDD109に格納された制御プログラムに基づいて、各デバイスを制御する。ROM107は、各種制御プログラムやデータを保存する。RAM108は、CPU106のワーク領域、エラー処理時のデータの退避領域、制御プログラムのロード領域等を有する。HDD109は、PC100内で実行される各制御プログラムやコンテンツを格納する。例えば、HDD109には、ブラウザプログラム、OS、イベント検知アプリケーション(本発明に係るプログラム)、画像ファイル、ドキュメントファイル、音楽ファイル、電子アルバムデータ、電子アルバム編集プログラムなどが格納される。ネットワークI/F111は、他のPCやプリンタ等とネットワークを介して通信を行う。CPUバス112は、アドレスバス、データバス、及びコントロールバスを含む。CPU106に対する制御プログラムの提供は、ROM107、HDD109から行うこともできるし、ネットワークI/F111を介してネットワーク経由で他のPC等から行うこともできる。
図2は、OSと各アプリケーションプログラムとの関係を示す概念図である。図2に示すように、PC100はOS202に従って動作することにより、キーボード104やPD105(例えば、マウス)などの操作に起因する全てのイベントを、入力I/F201を介して受け付ける。そして、PC100は受け付けたイベントを、各アプリケーションプログラムに従って動作したときに解釈できる形式に変換する。その後、PC100はOS202に従って動作することにより、アプリケーションプログラム204乃至206の中から、入力フォーカスなどを持つものを、処理を行うアプリケーションプログラムとして選択して、イベントを振り分ける。PC100は、各アプリケーションプログラムに従って動作するときに、振り分けられたイベントを取得して利用する。更に本実施例では、アプリケーションプログラム204が、イベント検知アプリケーションとして動作するものとする。従って、PC100はアプリケーションプログラム204(イベント検知アプリケーション)に従って動作するときに、他のアプリケーションプログラム205、206に振り分けられるイベントも取得し、使用する。なお、アプリケーションプログラム205、206もイベント検知アプリケーションとして動作しても構わない。なお、イベント検知アプリケーションは、イベント検知に特化したアプリケーションではなく、図3などを参照して以下に説明するイベント検知機能を含んだ任意のアプリケーションプログラムである。例えば、以下に説明するイベント検知機能をテキストエディタに追加すると、そのテキストエディタはイベント検知アプリケーションになる。
以下、PC100が複数のアプリケーションプログラムに従ってそれぞれの複数のウインドウを表示画面に表示している時に、ドラッグ操作に応答して、背面にあるイベント検知アプリケーションプログラムのウインドウの表示形式を切り替える処理を説明する。図3はこの切り替え処理の流れを示すフローチャートである。本フローチャートの各ステップの処理は、PC100のCPU106がOS202やイベント検知アプリケーションを実行し、それに従って動作することによって実現される。これは、以下の各フローチャートにおいても同様である。
S301でCPU106は、ユーザの指示などに従ってイベント検知アプリケーションを起動し、実行に必要な開始処理を行う。S302で、CPU106はイベント検知アプリケーションに従って動作し、すべてのイベントをイベント識別情報と共に通知するようにイベントの取得開始設定をOS202に対して行う。S302における処理の目的は、CPU106がイベント検知アプリケーション以外のアプリケーションに従って動作するときも、OS202でアプリケーションに振り分けられるイベントを取得して利用できるようにすることである。具体的には、例えばWindows(登録商標)の場合、SetWindowHookExプログラム関数を使用して、イベントの取得開始設定を行う。これにより、CPU106はOS202に従って動作し、他のアプリケーションにイベントを渡す前に、そのイベントを、イベントの取得をリクエストしたイベント検知アプリケーションに渡すこととなる。
CPU106がOS202に従って動作し、何らかのイベントが発生したことを検知すると、S303でCPU106はイベント検知アプリケーションに従って動作し、OS202からそのイベントの種類を示すイベント識別情報を取得し、S304へ進む。S304でCPU106はイベント検知アプリケーションに従って動作し、S303で取得したイベント識別情報がドラッグイベントであるか否かを判定する(ドラッグ検知)。ドラッグイベントであればS305に進み、そうでなければS306に進む。S305でCPU106はイベント検知アプリケーションに従って動作し、イベント検知アプリケーションのウインドウの表示形式を切り替えるための処理(表示制御)を実行する。詳細は図4以降を参照して後述するが、例えば、S305の処理により、イベント検知アプリケーションのウインドウがマルチウインドウシステムの表示画面の最前面へと移動される。次いで、S303に戻り、次のイベントを取得するまで待つ。
一方、S306でCPU106はイベント検知アプリケーションに従って動作し、S303で取得したイベントがドロップイベント又はドラッグ中止イベントであるか否かを判定する(ドロップ検知)。判定結果が「Yes」であればS307に進み、「No」であればS303に戻る。S307でCPU106はイベント検知アプリケーションに従って動作し、イベント検知アプリケーションのウインドウの表示形式を、S305で切り替えられる前の形式に戻す。
これにより、ドロップ操作が終わればウインドウの表示形式が元に戻るため、ユーザは更に別のオブジェクトを移動させたい場合など、新たな操作を引き続き円滑に行えるようになり、操作性が向上する。
S308でCPU106はイベント検知アプリケーションに従って動作し、イベント取得処理の終了又はイベント検知アプリケーション自身の終了が指示されたか否かを判定する。判定結果が「Yes」であればS309に進み、「No」であればS303に戻る。S309でCPU106はイベント検知アプリケーションに従って動作し、イベントの取得開始設定の解除を、OS202に対して行う。具体的には、例えばWindows(登録商標)の場合、UnhookWindowHookExプログラム関数を使用して、イベントの取得設定の解除を行う。S310でCPU106はイベント検知アプリケーションを終了するために必要な終了処理を行う。
このように、CPU106はイベント検知アプリケーションに従って動作し、OS202がイベントを他のアプリケーションに振り分ける前にそのイベントに関する情報をイベント検知アプリケーションに渡すようにするかどうかを設定する。これにより、CPU106は入力I/F201からのイベントがあると、OS202の割り込み処理を実行する。そして、OS202に従って、設定されているイベント検知アプリケーションのメソッドを呼び出して取得処理を実行した後、OS202に従って他のアプリケーションにイベントを振り分ける。
なお、イベント検知アプリケーションの表示形式の切り替え処理の実行可否をユーザが設定できるようにしてもよい。これにより、CPU106はユーザが所望するアプリケーションだけに従ってそのウインドウの表示形式を切り替えるので、複数のアプリケーションが同じように表示切り替え処理を行って競合するのを防ぐことができる。すなわち、ユーザが所望するアプリケーションのウインドウだけが最前面に表示され、ドロップ先として選択し易くなり、使い勝手が更に向上する。
また、本実施例ではCPU106はイベント検知アプリケーションを起動したときにイベントの取得開始設定をOS202に対して行う場合について説明した。しかし、この代わりに、CPU106はOS202に従って動作し、イベント検知アプリケーションのウインドウが他のアプリケーションのウインドウの背面に表示されているか否かをOS202からのイベント通知で検知してもよい。そして、CPU106はイベント検知アプリケーションのウインドウが他のアプリケーションのウインドウの背面に表示されていると検知されると、イベントの取得開始設定をOS202に対して行うようにしてもよい。これにより、イベント検知アプリケーションのウインドウが他のアプリケーションのウインドウに隠れているときだけ表示形式の切り替えに関わる処理を実行すればよくなる。
次に、S305でCPU106がイベント検知アプリケーションに従ってウインドウの表示形式の切り替え処理を実行した結果、表示画面に表示されるウインドウについて説明する。図4はウインドウの表示状態の一例を示す図である。図4(a)はS305でCPU106が切り替え処理を実行する前の状態を示し、図4(b)はS305でCPU106が切り替え処理を実行した後の状態を示す。400はユーザが操作を行っているPC100の表示画面である。401は他のアプリケーション(第1のアプリケーションプログラム)のウインドウ(第1のウインドウ)であり、オブジェクトの一覧が配置されている。402はイベント検知アプリケーション(第2のアプリケーションプログラム)のウインドウ(第2のウインドウ)である。図4(a)では、ウインドウ401上にマウスポインタ403が存在してアクティブな状態にあり、ウインドウ402はウインドウ401よりも下層に表示され、隠れている。ウインドウ401でオブジェクトがドラッグされると(S304でYes)、S305でCPU106がウインドウ402の表示階層を背面から最前面に切り替える処理を実行する。なお、ここではウインドウ402の表示画面の平面上での位置は変えず、ウインドウ402の原点424の位置は、切り替え前後で維持しておくものとする。そして、CPU106はOS202に従って動作し、図4(b)に示すようにウインドウ402を最前面に表示するよう制御する。これによって、ユーザはドラッグ対象のオブジェクトのドロップ先となるウインドウ402を認識し易くなる。この時、図3などを参照して説明した、操作の邪魔になることを防ぐことができ、ユーザの操作性が向上する。
更に、S305でCPU106はウインドウ402内のメニューバー421やツールバー422など、ドロップエリア423以外のドロップ操作に不要な項目のエリアをウインドウ402から省き、非表示にする処理も実行するようにしてもよい。これにより、ウインドウ402全体の表示サイズがメニューバー421やツールバー422のエリアの分だけ小さくなり、ウインドウ401と重なる面積も小さくなる。したがって、ユーザがドラッグ元のウインドウ401が見づらくなるという問題が軽減され、ユーザの操作性が一層、向上する。
また、S305でCPU106はウインドウ402の表示サイズを縮小する処理も実行するようにしてもよい。これにより、ウインドウ402全体の表示サイズが小さくなり、ウインドウ401と重なる面積も小さくなるので、ユーザはドラッグ元のウインドウ401が見づらくなるという問題が軽減され、ユーザの操作性が向上する。なお、縮小率は予め設定された固定値でもよいし、ウインドウ401と402の表示サイズに基づいて算出される値でもよい。反対に、S305でCPU106はウインドウ402の表示サイズを大きくしてもよい。これにより、ユーザによるドロップ操作が容易になる。また、縮小されたウインドウ402にはスクロールバーが設けられ、これを移動することでウインドウ402内に表示される位置が更新される。更に、CPU106は元のウインドウ402にキャレットや入力フォーカスなどの入力ポインタが表示されていた場合には、ドロップエリア423に入力ポインタの位置が表示されるよう、スクロールバーの位置を決定する。
また、CPU106は入力ポインタを擬似的に表示するように制御し、その後、S305の実行前と同様に表示するようにしてもよい。このように、擬似的に入力ポインタを表示することで、イベント検知アプリケーションがアクティブではない状態でも、最前面に表示されたイベント検知アプリケーションのウインドウにおけるドロップ入力の基準をユーザに明示できる。
また、S305でCPU106はウインドウ402全体に対するドロップエリア423のズーム表示の表示倍率(拡大の倍率)を変更する処理も実行するようにしてもよい。これにより、ウインドウ402の表示サイズを縮小してもドロップエリア423をその中で大きく確保できるようになる。従って、ドロップエリアに表示される内容の量を小さくせずに済む。なお、ここで表示倍率は予め定められた表示倍率であってもよいし、元のウインドウ402の表示サイズとドロップエリア423の表示倍率と、切り替え処理後のウインドウの表示サイズと表示倍率とに基づき算出されてもよい。
また、S305でCPU106はウインドウ402を非表示にし、ドロップ処理専用のアイコンの表示に切り替える処理を実行するようにしてもよい。ドロップ処理専用アイコンは、オブジェクトのドロップを受け付けるだけであるので、通常のウインドウ402の表示サイズに比べて非常に小さくすることができる。そのため、ウインドウ402に比べて、ドロップ処理専用アイコンがウインドウ401に重なる面積が小さくなるので、ユーザはウインドウ401が見づらくなるという問題が軽減され、ユーザの操作性が向上する。なお、アイコンはオブジェクトのドロップを受け付けることを表すマークやメッセージとともに表示されることが望ましい。また、ドロップ処理専用アイコン自体もユーザのドロップ操作に応答して移動可能にしてもよい。これにより、ユーザはドロップ専用アイコンをドラッグ対象のオブジェクトの近傍に表示することも可能となるため、オブジェクトをドロップ専用アイコンまでドラッグする距離を短縮し、作業にかかる時間や手間を軽減することができる。また、CPU106はドロップ専用アイコンの移動位置(アイコンの原点)を記憶しておき、S305でドロップ処理専用アイコンに切り替えるときに初期位置として読み出すようにしてもよい。これによりドロップ処理専用アイコンが以前に設定されたユーザの所望の位置に表示されることとなるので、ユーザの操作性が向上する。また、初期位置を記憶されたドロップ専用アイコンの移動位置をとするか、所定の位置(ウインドウ402の原点)とするかをユーザが選択できるようにしてもよい。
なお、S305でCPU106は切替処理の実行前の図4(a)の状態のウインドウ401及び402の表示階層や表示画面の平面上での位置(原点424、425)、表示サイズ(縦と横方向の長さ)、表示項目などの表示履歴情報をRAM108に一時保存する。その後、上述の切り替え処理を実行する。そして、S307でCPU106はイベント検知アプリケーションに従って動作し、RAM108からS305で一時保存された表示履歴情報を読み出し、これに従い、ウインドウ401及び402の表示形式を元に戻す。そして、CPU106はOS202に従って動作し、図4(a)に示すように元に戻された表示形式でウインドウ401及び402を表示画面に表示する。なお、表示項目には、所定の文字列が反転表示されていたことや、入力キャレットなどの入力ポインタの表示形状や表示位置も含み、これらも上述の切り替え処理の実行前と同様に表示される。
また、CPU106はS306でドロップ操作を検知してS307の処理を実行する際には、ドロップ操作に応答して行なわれる処理、例えばオブジェクトと対応するファイルの移動やコピーなどが完了したことを検出した後、S307の処理を実行する。これにより、CPU106がS306でイベントを検出した直後にS307の処理を行って、OS202からイベント検知アプリケーションにイベントが振り分けられる前にイベント検知アプリケーションが非アクティブになるのを防ぐことができる。また、ドロップ操作に応答して行われる処理の進捗や変化を表示し、その後に表示が切り替わるので、ユーザは処理の実行を確認できる。
なお、OSの種類によっては、これらのイベントを直接的に示すイベント識別情報を取得可能なAPIが用意されていない場合もある。そのような場合、CPU106はOS202に従って動作し、PD105の動作状態を示すイベントを検知する。そして、CPU106はイベント検知アプリケーションに従って動作するときに、この動作状態を示すイベントに基づいてドラッグイベント、ドロップイベント、及びドラッグ中止イベントを判断するようにしてもよい。例えば、CPU106はイベント検知アプリケーションに従って動作し、OSに従って検知したイベントがマウスダウンであれば、その位置が存在するウインドウを取得する。そして、CPU106は、ウインドウとマウスダウン位置からウインドウの領域区分を取得する。領域区分は、例えば、Windows(登録商標)での処理では、WM_NCHITTESTメッセージの結果で取得できるものである。ここでは、オブジェクトの一覧表示領域や、メニュー、水平スクロールバー、垂直スクロールバーなどが区分されている。また、ここで使用する区分では、ウインドウそのものの表示スタイルで、水平スクロールバー、垂直スクロールバーなどがある。その場合には、位置からだけではオブジェクトの一覧表示領域と判断してしまうので、スタイルやウインドウの親子関係を加味する。もちろん、OSの種類が異なれば、判断方法もそれに応じて変化する。そして、取得された領域区分がオブジェクトの一覧表示領域であれば、タイマーの計測を開始し、マウスダウンの位置を保存する。その後、CPU106はOSに従って検知されたイベントがマウス移動であれば、マウスダウンの位置と現在のマウスの位置を比較し、所定値以上の距離があれば、ドラッグ操作と判断する。あるいは、CPU106は更に、現在のマウスの位置が存在するウインドウの領域区分を取得し、領域区分がオブジェクトの一覧表示領域であれば、ドラッグ操作と判断するようにしてもよい。また、CPU106はOSに従って検知されたイベントがマウスアップであれば、ドロップ操作と判断し、タイマーの計測を停止する。あるいは、CPU106は更に、マウスの位置が存在するウインドウの領域区分を取得し、領域区分がイベント検知アプリケーションのドロップエリア423であればドロップ操作があったと判断するようにしてもよい。また、CPU106はタイマーの計測時間が所定時間を経過しても何のイベントも検知しなかったときは、ドラッグ操作が中止されたと判断する。以上のようにして、CPU106はマウスの動作状態を示すイベントに基づいて、ドラッグイベント、ドロップイベント、及びドラッグ操作の中止イベントを検知することができる。
また、CPU106はイベント検知アプリケーションに従って動作し、ドラッグ元のウインドウのアプリケーションの種類によって切り替え処理を実行するようにしてもよい。この場合、CPU106はイベント検知アプリケーションに従って動作し、マウスダウンのイベントとともにマウスダウン位置のウインドウを持つプロセスに関する情報を取得する。プロセスに関する情報は、例えば、アプリケーションの実行ファイル名や、稼働時間などである。そして、CPU106はイベント検知アプリケーションに従って動作し、予め実行対象として登録しているアプリケーション情報と、取得したマウスダウン位置のアプリケーション情報とを比較して合致する場合に、切り替え処理を実行する。一方、これらが合致しない場合は切り替え処理を実行しない。これにより、イベント検知アプリケーションが扱えないオブジェクトがそのウインドウにドロップされるのを防ぐことができる。例えば、イベント検知アプリケーションが文書ファイルを扱うアプリケーションであり、エクスプローラなどの所定のファイル管理アプリケーションのアプリケーション情報が予め登録されているとする。このとき、ファイル管理アプリケーションのウインドウからのドラッグと判断された場合はイベント検知アプリケーションのウインドウが最前面に表示される。一方、メモ帳などのファイルをオブジェクトとして扱わないテキスト編集アプリケーションからのドラッグと判断されたときは、イベント検知アプリケーションのウインドウの表示は何も変えずそのままの状態にする。以上のようにして、不要なウインドウの表示切り替えを防ぐことができるとともに、ユーザに対しても誤ったドロップ操作へ誘導することを防ぐことができる。
また、CPU106はイベント検知アプリケーションに従って動作し、取得したマウスダウン位置のアプリケーション情報に基づき、ドラッグ元のアプリケーション自身がドロップ操作を受け付け可能であれば直ちに切り替え処理を実行しないようにしてもよい。CPU106は取得したマウスダウン位置のアプリケーション情報に基づいて、ドラッグ元のアプリケーション自身がドロップ操作を受け付け可能であると判断すると、タイマーでの計測を開始する。その後、タイマーでの計測時間が所定時間を超えると、切り替え処理を実行し、イベント検知アプリケーションのウインドウを最前面に表示する。なお、CPU106はタイマーでの計測時間が所定時間を超える前にドロップイベント又はドラッグ中止イベントを検知した場合は、切り替え処理を実行しない。これにより、ユーザがドラッグ元のアプリケーションのウインドウ上でオブジェクトをドロップしたい場合に、イベント検知アプリケーションのウインドウが操作の邪魔にならないようにすることができる。
また、CPU106はドラッグ開始とドラッグ中のマウス位置を元に移動方向を求め、移動方向を中心として所定の範囲にイベント検知アプリケーションのウインドウがあれば切り替え処理を実行し、それ以外は切り替え処理を中止するようにしてもよい。これにより、不要な切り替え処理を抑制し、処理にかかる負担を軽減することができる。
また、本実施例ではオブジェクトが配置されたウインドウのアプリケーションと、イベント検知アプリケーションは異なるアプリケーションプログラムである場合について説明したが、同じであってもよい。1つのウインドウ検知アプリケーションが複数のウインドウを表示し、一方のウインドウでオブジェクトのドラッグが開始されたときに他方のウインドウの表示を制御するのにも同様に適用できる。
以上説明したように、本実施例によれば、前面のウインドウに配置されたオブジェクトへのドラッグ操作すると、その背面にある、OSにイベント検知リクエストを設定しているアプリケーションのウインドウを最前面に表示する。これにより、ユーザが所望のアプリケーションのウインドウは最前面に表示され、かつ、不要なアプリケーションのウインドウは背面に表示されるので、ユーザの操作を邪魔することを防げる。また、本実施例によれば、前面のウインドウに配置されたオブジェクトがドラッグ操作されると、その背面にあるウインドウを、そのサイズを縮小したり、アイコン化してから最前面に表示する。これにより、背面にあったウインドウが最前面に表示されても、ドラッグ元のウインドウと重なる面積が小さくなるので、ユーザの操作を邪魔することを防げる。
本実施例では、オブジェクトのドロップを受け付けるウインドウが背面から前面に切り替えて表示されたときに、オブジェクトのドラッグ元のウインドウの視認性が低下することを抑制する。なお、本実施例では上述の実施例1と同様の構成については説明を省略し、本実施例に特有の構成について詳細に説明する。
PC100が複数のアプリケーションプログラムに従ってそれぞれの複数のウインドウを表示画面に表示している時に、ドラッグ操作に応答して、背面にあるイベント検知アプリケーションのウインドウの表示形式を切り替える処理を説明する。図5は、PC100のCPU106がOS202に従って動作し、ドラッグイベントを検知してウインドウの表示形式を切り替える処理を示すフローチャートである。
S501でCPUはイベントを検知すると、これがドラッグイベントであるか否かを判定する。ドラッグイベントであればS502に進み、そうでなければ処理を終了する。S502でCPU106はドラッグ元アプリケーション(ドラッグ開始アプリケーション)の情報を取得する。S503でCPU106は実行中のアプリケーションの情報の一覧を取得し、オブジェクトのドロップ対象となるアプリケーションの情報を抽出する。S504でCPU106は、S502にて取得したドラッグ元アプリケーションの情報と、S503にて抽出したドロップ対象のアプリケーションの情報の一覧とに基づき、各ウインドウの表示形式を決定する。また、各ウインドウの現在の表示に関する情報を表示履歴情報としてメモリ(例えば、RAM108)に記録する。S505でCPU106は、S504にて決定した表示形式に従って、各アプリケーションのウインドウの表示形式を切り替える。その後、S506でCPU106は、ドロップ又はドラッグ中止イベントを検知すると、S507に進み、そうでない場合は処理を終了する。S507でCPU106は、S504にて記録した表示履歴情報に基づき、S505で行ったウインドウ表示の切り替えを実行する前の元の状態で各ウインドウを表示し、処理を終了する。
図6は、図5のS504における処理の詳細を示すフローチャートである。S601でCPU106は、S502にて取得したドラッグ元アプリケーションの情報を解析し、ドラッグ元アプリケーション自身がオブジェクトのドロップを受け付けることが可能かどうかを判断する。ドロップを受け付けることが不可能な場合はS602に進み、可能な場合はS603に進む。S602でCPU106は、オブジェクトのドラッグ開始時のマウス位置を取得し、マウス位置から所定距離に配置されるように、ドロップ対象アプリケーションのウインドウの移動位置を求める。位置を求める処理を行っている最中もドラッグは行われ、オブジェクトは移動しているので、マウスの移動方向と移動速度を考慮し、且つ、マウスのカーソルサイズ考慮して、ドロップ対象アプリケーションのウインドウの位置を求めてもよい。例えば、図7(a)に示したように表示画面700において、ドラッグ元アプリケーションのウインドウ701上で、マウスカーソル703の位置でオブジェクト「10」のドラッグが開始された場合を考える。この場合、図7(b)に示したように、ドラッグ元アプリケーションのウインドウ701の背面に隠れていたドロップ対象アプリケーションのウインドウ702の移動位置はマウスカーソル703の近傍となる。
一方、S603でCPU106は、ドラッグ元アプリケーションのウインドウの近傍の位置に配置されるように、ドロップ対象アプリケーションのウインドウの移動位置を求める。ドラッグ元アプリケーションのウインドウの近傍とは、例えば、移動前のドロップ対象アプリケーションのウインドウの位置から上下左右のいずれかへ平行移動して最も移動距離の短い位置である。これにより、ユーザに対し、できるだけ移動による違和感を少なくすることができる。例えば、図7(a)に示した状態から、図7(c)に示したようにドラッグ元アプリケーションのウインドウ701の背面に隠れていたドロップ対象アプリケーションのウインドウ702の移動位置はドラッグ元アプリケーションのウインドウ701の近傍となる。
S604でCPU106は、画面表示領域と、ドロップ対象アプリケーションのウインドウの移動位置及びウインドウの表示サイズとに基づき、ドロップ対象アプリケーションのウインドウが表示画面に表示される領域を取得する。この表示領域サイズは図7(b)や図7(c)のウインドウ702のうち斜線704以外の領域のことである。斜線704で示される部分は表示画面700の表示範囲にはないため、表示されない。S605でCPU106は、S604で取得したドロップ対象アプリケーションのウインドウが画面に表示される領域のサイズが所定サイズ未満かどうかを判断する。表示領域サイズが所定サイズ未満の場合にはS606に進み、そうでない場合、S607に進む。S606でCPU106は、表示領域サイズが所定サイズになるように、ドロップ対象アプリケーションのウインドウの移動位置を更新する。なお、S604でCPU106は表示領域サイズの代わりに、表示画面全体のサイズに対する表示領域サイズの割合を用いても良い。また、移動位置は、移動前のドロップ対象アプリケーションのウインドウの位置から上下左右のいずれかで平行移動して最も移動距離の短い位置を求めることで、ユーザにできるだけ移動による違和感を少なくすることができる。例えば、図7(d)に示したようにドロップ対象アプリケーションのウインドウ702の移動位置は表示画面内となる。なお、図7(d)では移動位置をウインドウ702が完全に表示される位置としたが、ウインドウ702の一部が表示されない位置であってもよい。例えば、ドロップ操作に関係する領域が表示画面内にあれば、関係ない領域が表示画面外になる位置であっても問題ない。
次にS607でCPU106は、マウス位置と、ドロップ対象アプリケーションのウインドウの移動位置及び表示サイズとに基づき、移動後のドロップ対象アプリケーションのウインドウにマウス位置が重なるかどうか判断する。重なる場合はS608に進み、そうでない場合はS609に進む。なお、判断の処理を行っている最中もドラッグは行われている。そのため、S607にて使用するマウス位置に加えて、マウスの移動方向と移動速度を考慮し、且つ、マウスのアイコンサイズ考慮して、ドロップ対象アプリケーションのウインドウの位置を求めてもよい。また、移動開始マウス位置を使用してもよい。S608でCPU106は、表示画面を縦横それぞれに2等分で4つに分割し、マウス位置を含む分割画面と線対称、又は点対称となる分割画面にドロップ対象アプリケーションのウインドウの画面を移動するように位置を求める。ここで、分割画面は、右上から反時計回りに順に第1象限、第2象限、第3象限、第4象限として説明する。第4象限にマウス位置があると仮定すると、第4象限と線対称になる第1象限又は第3象限にドロップ対象アプリケーションのウインドウの移動位置を求める。このとき、最も移動距離の短い位置を求めることで、ユーザにできるだけ移動による違和感を少なくすることができる。なお、点対称である第2象限にドロップ対象アプリケーションのウインドウの移動位置を求めてもよい。また、マウス位置が表示画面の中央近辺であり、どの象限に移動させてもマウス位置と重なる場合には、マウスのカーソルサイズ考慮して、マウス位置の近傍をドロップ対象アプリケーションのウインドウの位置として求めてもよい。これにより、図7(d)で示したような、ドロップ対象アプリケーションのウインドウ702とマウスカーソル703が重なる状態が回避される。そして、図7(e)に示したようにドロップ対象アプリケーションのウインドウ702の移動位置はマウスカーソル703と重ならない位置となる。
次にS609で、CPU106はドラッグ元アプリケーションのウインドウの位置及び表示サイズと、ドロップ対象アプリケーションのウインドウの移動位置及び表示サイズとに基づき、2つのウインドウが重なる領域を取得する。S610でCPU106は、S609にて取得した重なり領域のサイズが所定サイズ以上であるか否かを判断する。ここで、所定サイズはドラッグ操作が開始されたときのドラッグ元アプリケーションのウインドウとドロップ対象アプリケーションのウインドウの重なり領域の面積である。重なり領域のサイズが所定サイズ以上の場合にはS611に進み、そうでない場合は処理を終了する。S611でCPU106は、ドラッグ元アプリケーションのウインドウが表示画面の四辺のいずれか、又は、複数箇所と重なるように、ドラッグ元アプリケーションのウインドウの移動位置も求める。このとき、ドラッグ元アプリケーションのウインドウの移動位置は、最も移動距離の短い位置を求めることで、ユーザにできるだけ移動による違和感を少なくすることができる。これにより、図7(f)に示したようにドラッグ元アプリケーションのウインドウ701の移動位置は、ドロップ対象アプリケーションのウインドウ702と重ならない位置となる。なお、S610では重なり領域のサイズの代わりに、ドラッグ元アプリケーションのウインドウのサイズに対する重なり領域の割合を用いてもよい。また、この移動位置では、ドラッグ元アプリケーションのウインドウ701とドロップ対象アプリケーションのウインドウ702が重ならないので、マウスカーソルの重なりを考慮しなくてもよい。
次にS612でCPU106は、ドラッグ元アプリケーションのウインドウとドロップ対象アプリケーションのウインドウの、移動位置とウインドウのサイズとに基づき、2つののウインドウが重なる領域を取得する。S613でCPU106は、S612にて取得した重なり領域のサイズが所定サイズ以上かどうかを判断する。ここで、所定サイズはドラッグ操作が開始されたときのドラッグ元アプリケーションのウインドウとドロップ対象アプリケーションのウインドウの重なり領域の面積である。重なり領域のサイズが所定サイズ以上の場合にはS614に進み、そうでない場合は処理を終了する。S614でCPU106は、ドラッグ元アプリケーションのウインドウとドロップ対象アプリケーションのウインドウのリサイズ率と移動位置を求める。このとき、ドラッグ元アプリケーションのウインドウ及びドロップ対象アプリケーションのウインドウとも、同じリサイズ率で最も移動距離の短い位置を求めることで、ユーザにできるだけリサイズと移動による違和感を少なくすることができる。図10(a)に示したように、表示画面1000と同じくらいのサイズでドラッグ元アプリケーションのウインドウ1001が表示され、その背面にドロップ対象アプリケーションのウインドウ1002が隠されているときにドラッグが開始された場合を考える。この場合、図10(b)で示したように、ドラッグ元アプリケーションのウインドウ1001とドロップ対象アプリケーションのウインドウ1002がリサイズされ、移動する。なお、S613でCPU106は重なり領域のサイズの代わりに、ドラッグ元アプリケーションのウインドウのサイズに対する重なり領域の割合を用いてもよい。S615でCPU106は、S614にて求めたリサイズ率が所定値以上であるか否かを判定し、所定値以上の場合にはS616に進み、そうでない場合は処理を終了する。S616で、CPU106は、ドラッグ元アプリケーションのウインドウをアイコン化するように求め、ドロップ対象アプリケーションのウインドウの移動位置を取得する。これにより、ドラッグ元アプリケーションのウインドウのリサイズを極端に行わなければならない場合にはアイコン化することでドロップ対象アプリケーションのウインドウに対するドロップ操作をしやすくすることができる。
なお、CPU106はS501でドラッグを検知すると、ドラッグ元アプリケーションのウインドウの状態を検知し、最大化表示されている場合には、ウインドウのサイズを最大サイズから元のサイズに戻す。また、S501でドラッグを検知した後は常に、ドラッグ元アプリケーション及びドロップ先アプリケーションのウインドウの状態を検知し、最大化表示されている場合には、ウインドウのサイズを最大サイズから元のサイズに戻すようにしてもよい。
また、CPU106はS503で、実行中のアプリケーションが複数ある場合は、ドラッグ元アプリケーションや、ウインドウが最小化されているアプリケーション、ユーザが予めドロップ対象としない設定をしているアプリケーションはドロップ対象から除く。あるいは、CPU106はウインドウの重なり順や、アプリケーションの起動時間やアイドル時間に基づいて実行中のアプリケーションに優先順位を付与し、優先順位の最も高いアプリケーションをドロップ対象のアプリケーションとして抽出する。あるいは、CPU106はドラッグの移動方向を検知し、その移動方向と重なる距離が最も長いウインドウをドロップ対象として抽出するようにしてもよい。
次に、ドロップ対象となるアプリケーションが複数ある場合について説明する。図11はPC100のCPU106がOS202に従って動作し、ドラッグイベントを検知して複数のウインドウの表示形式を切り替える処理を示すフローチャートである。
S1101でCPU106は、実行中のアプリケーションの数を取得し、数が1つの場合はS1102に進み、2つ以上の場合はS1103に進み、存在しない場合は処理を終了する。S1102では、CPU106は図6で説明したような処理を実行する。S1103でCPU106は、表示画面のうちドラッグ元アプリケーションのウインドウを除いた領域を取得し、この領域に含まれる最大の矩形のサイズが所定値未満かどうか判断する。この最大の矩形のサイズが所定値未満の場合はS1104に進み、そうでない場合はS1110に進む。S1104でCPU106は、ドラッグ元アプリケーションのウインドウの隅のうち表示画面の隅に最も近い隅が表示画面の隅に重なる位置を、ドラッグ元アプリケーションのウインドウの移動位置として取得する。S1105で、CPU106は、S1104にて取得した移動位置にドラッグ元アプリケーションのウインドウが移動した場合にこのウインドウを除いた領域を取得し、この領域に含まれる最大の矩形のサイズが所定値未満かどうかを判断する。この最大の矩形のサイズが所定値未満の場合はS1106に進み、そうでない場合はS1110に進む。S1106でCPU106は、ドラッグ元アプリケーションのウインドウを除いた領域に含まれる最大の矩形のサイズが所定値以上で最小になるように、ドラッグ元アプリケーションのウインドウのサイズを取得する。S1107でCPU106は、S1106にて取得したサイズでドラッグ元アプリケーションのウインドウのリサイズ倍率を取得し、リサイズ倍率が所定値以上かどうか判断する。所定値以上の場合にはS1109に進み、そうでない場合はS1110に進む。S1109でCPU106はドラッグ元アプリケーションのウインドウをアイコン化する。S1110でCPU106は、S1104にて取得した移動位置に、S1106にて取得したサイズでドラッグ元アプリケーションのウインドウを表示した場合に、このウインドウを除いた領域に含まれる最大の矩形のサイズを取得する。S1111でCPU106は、S1110にて取得した最大の矩形のサイズに合わせて、ドロップ対象となるアプリケーションのウインドウの移動位置とサイズを取得する。例えば、最大の矩形がS1101にて取得されたドロップ対象のアプリケーションの数に基づいて分割され、各ウインドウが各分割領域に割り当てられることにより、ドロップ対象となるアプリケーションのウインドウの移動位置とサイズが決まる。また、ウインドウの重なり順や、アプリケーションの起動時間やアイドル時間に基づいてドロップ対象アプリケーションに優先順位を付与し、その順番に従ってアプリケーションのウインドウを並べるようにしてもよい。そして、S1112でCPU106は、ドロップ対象アプリケーションのウインドウのリサイズ倍率を取得し、所定値以上かどうか判断する。リサイズ倍率が所定値以上の場合にはS1113に進み、そうでない場合には処理を終了する。S1113でCPU106は、各ウインドウのリサイズ倍率が所定値になるように、切り替え処理の対象となるドロップ対象アプリケーションを優先順位の低いものから順に外し、残ったドロップ対象アプリケーションで各ウインドウの位置とサイズを取得する。これにより、図12(a)に示したように、表示画面1200にドラッグ元アプリケーションのウインドウ1201、ドロップ対象アプリケーションの複数のウインドウ1202を並べることができる。また、1203はS1113で切り替える処理の対象から外されたドロップ対象アプリケーションのウインドウである。なお、図12(b)に示したように優先順位の高さに応じてドロップ対象アプリケーションのウインドウに割り当てる位置やサイズを変えるようにしてもよい。優先順位の高いドロップ対象アプリケーションのウインドウ1202は、優先順位の低いドロップ対象アプリケーションのウインドウ1203に比べて大きく表示される。このようにするには、S1112及びS1113でCPU106がアプリケーションの優先順位に従ってリサイズ倍率を段階的に割り当てるようにすればよい。あるいは、S1111でCPU106がアプリケーションの優先順位に従った位置や大きさを各ウインドウに割り当てるようにしてもよい。
本実施例によれば、前面のウインドウに配置されたオブジェクトを背面のウインドウに移動させる際に、背面のウインドウだけでなく、前面のウインドウの位置を移動したり、サイズを縮小したりする。従って、これらのウインドウが互いに邪魔をすることがなくなり、ウインドウの視認性が高まり、ユーザの操作性が向上する。
以下、実施例3について説明する。なお、本実施例では上述の実施例1と同様の構成については説明を省略し、本実施例に特有の構成について詳細に説明する。
図13(a)から(c)は、本実施例に係るPC100において、ペースト位置が指定され、オブジェクトのドロップ先にオブジェクトと対応するデータがペーストされるまでに表示画面に表示されるウインドウの一例を示したものである。
ユーザの操作に応答してPC100のCPU106は文書編集アプリケーションを起動し、文書ファイルを編集しているものとする。そして、ユーザの操作に応答して、文書編集アプリケーションによって作成される文書ファイル上で、オブジェクトと対応するデータをペーストしたい位置を指定する。この指定のタイミングは文書ファイルの編集過程であってもよいし、文書ファイルの編集後であってもよい。図13(a)は、ペースト位置が指定された後、文書編集アプリケーションのウインドウ1300に文書ファイルが表示されている状態を示している。文書編集アプリケーションのウインドウ1300には指定されたペースト位置1301と1302とにそれぞれマーク又はアイコンを表示する。これにより、ユーザはペースト位置を確認しやすくなる。
その後、ユーザの操作に応答してCPU106はファイル管理アプリケーションを起動し、HDD109に記憶されたデータと対応するアイコンが配置されたウインドウを表示画面に表示する。図13(b)では、ファイル管理アプリケーションのウインドウ1311が文書編集アプリケーションのウインドウ1300より前面に表示されている。そしてファイル管理アプリケーションのウインドウ1311にあるデータアイコン1312を選択したときに、メニュー1313が表示される様子を示している。また、ユーザの操作に応答して、メニュー1313の中から、メニュー1314及びメニュー1315が順に表示され、項目1316が選択された様子を示している。なお、データアイコン1312上での右クリック、ショートカットコードでの指示などに応答してメニュー1313を表示することも可能である。また、本説明では指定されているペースト位置を選択可能なメニューを表示しているが、これに限定されない。例えば、位置を表す行数と列数、座標、又はアイコンを表示してもよい。或いは、位置が範囲を示す場合はその範囲内のオブジェクト、オブジェクト名、代表となる文字のいずれか、又は、これらの組み合わせを表示してもよい。
項目1316が選択されたことに応答して、データアイコン1312と対応するデータは「位置1」と対応する場所にペーストされる。図13(c)は「位置1」が文書ファイルのペースト位置1301(図13(a)参照)であったときに、データアイコン1312と対応するデータがペーストされている状態を示している。
このように、ユーザはデータアイコンの一覧が表示されたファイル管理アプリケーションのウインドウ1311上で、文書編集アプリケーションで作成された文書ファイルの指定位置にデータアイコンと対応するデータをペーストできる。このため、オブジェクトのドラッグ操作を必要とせず、ユーザの操作の手間が軽減する。また、ユーザがペーストしたい位置を見失ってしまうという問題もなくなる。
図14は、本実施例に係るPC100が、ユーザの指示に応答して、文書編集アプリケーションを用いて文書ファイルにペースト位置を設定するフローを示したものである。
S1401にて、CPU106は文書編集アプリケーションの指示に従いユーザのペースト位置の指定がPD105で行われたかPD105以外で行われたかを判断する。ユーザのペースト位置の指定がPD105で行われた場合はCPU106はS1403の処理を行い、ユーザのペースト位置の指定がPD105以外で行われた場合はCPU106はS1402の処理を行う。S1402ではCPU106は文書編集アプリケーションの指示に従い編集領域のフォーカスの位置、例えばカーソルの位置や範囲指定されている場合は範囲指定されている領域などを取得する。なお、PD105を利用しない例として、ユーザが他に矢印キーなどで仮想表示されたPD105を操作できるモードとなり、ユーザがキー操作のみで位置や範囲の指定を行う方法で指定した位置や領域を取得してもよい。S1403ではCPU106は文書編集アプリケーションの指示に従いPD105の位置、例えばユーザがPD105でクリックした位置やユーザがPD105で範囲指定した場合は範囲指定されている領域などを取得する。なお、文書編集アプリケーションなどの場合、CPU106は文書編集アプリケーションの指示に従いユーザがPD105でクリックした位置の近傍で適切な位置にカーソルが移動される。、ここで取得する位置は同様にユーザがPD105で指定した位置の近傍で適切な位置に変換を行ってもよい。S1404にて、CPU106は文書編集アプリケーションの指示に従いS1402又はS1403で取得を行ったペースト位置がペースト可能位置かどうかを判断する。ペースト可能位置として不適切な場合はCPU106は処理を終了し、ペースト位置が可能な位置の場合はCPU106はS1405の処理を行う。
S1405にて、CPU106は文書編集アプリケーションの指示に従いユーザが指定したペースト位置を文書編集アプリケーションのメモリに保存する。このとき、CPU106は文書編集アプリケーションの指示に従いすでに保持しているペースト位置と指定されたペースト位置が重なる場合は、すでに保持しているペーストと指定されたペースト位置を置き換えてもよい。また、CPU106は文書編集アプリケーションの指示に従いペースト位置にペーストできるオブジェクトに制限がある場合、ペースト種別としてあわせて保存してもよい。S1406にて、CPU106は文書編集アプリケーションの指示に従いS1405にて保存したペースト位置をOS202に対して登録を行う。S1407にて、CPU106はOS202の指示に従いS1406で登録されたペースト位置の登録を行った文書編集アプリケーションと関連付けてOS202のメモリに保存し処理を終了する。なお、CPU106は文書編集アプリケーションの指示に従い編集領域のユーザがペースト位置指定を行った位置に対応するマークを表示する処理を行ってもよいことは言うまでもない。
図15(a)は、本実施例に係るPC100においてCPU106がS1405、S1407において文書編集アプリケーションとOS202に従ってメモリに保存したペースト位置の管理形態の一例を示したものである。1500は、CPU106がS1405の処理において文書編集アプリケーションに割り当てたメモリイメージを示したものである。1501は、CPU106がS1407の処理においてOS202に割り当てたメモリイメージを示したものである。1502は、CPU106が文書編集アプリケーションの指示に従い管理を行っている編集対象の文字データとコントロールデータのメモリのイメージを示したものである。文書などでは、このように管理しているデータと使用するフレームデータを組み合わせてフレームにデータを順に詰めていくことで文書を形成していることが多い。1503は、CPU106が文書編集アプリケーションの指示に従い管理を行っているペースト位置の配列を示したものである。1504は、オブジェクトがペーストされたかどうかなどのペースト状態を示している。1505は、ペーストを受け付けられるオブジェクトの種類を示している。一例を示すと、図14のS1405にて、CPU106は文書編集アプリケーションの指示に従いユーザが指定したペースト位置でペーストできるオブジェクトの種類を取得し、その種類のオブジェクトのみがペーストを許されるように設定を行う。また、ペースト位置の指定時だけでなくダイアログを利用した設定画面を用意してユーザがオブジェクトの種類を設定、解除できるようにしてもよい。1506は、関連するペースト位置管理番号を示しペースト位置を複数まとめて処理の対象とする場合に利用する。一例を示すと、ペースト位置の配列1503で管理されているペースト位置管理番号Bを示す1509は、関連するペースト位置管理番号に関連位置管理番号としてペースト位置管理番号Aを示す1511が設定されている。このことから、ペースト位置管理番号Bを示す1509はペースト位置管理番号Aを示す1510と関連付けられていることがわかる。なお、ペースト位置の関連の設定、解除はユーザが設定画面で設定、解除できる。1507は、範囲指定でない場合のペースト位置をコントロールデータとして文字データと一緒に保持している状態を示し、ペースト位置管理の配列1503の1510で管理されているドロップ位置管理番号Aと関連付けられている。1508は、範囲指定の場合のペースト位置をコントロールとして文字データと一緒に保持している状態を示し、ペースト位置管理の配列1503の1509で管理されているドロップ位置管理番号Bと関連付けられている。一例を示すと、1508により「ABCDEFG」の文字が範囲指定されていることがわかる。なお、本発明ではアプリケーションによって管理しやすい形態でペースト位置管理がされればよく、本発明おいてペースト位置管理の形態が限定されるものではない。
1512は、CPU106がOS202の指示に従い管理を行っているペースト位置の配列を示したものである。1513は、CPU106がOS202の指示に従い登録されているアプリケーションに対して問い合わせ及びペースト指示を行うための通知関数を保持している。1514は、CPU106がOS202の指示に従い1513で保持している通知関数に対して問い合わせ及びペースト指示を行う際に、データ識別子として渡す管理番号を示している。一例を示すと、CPU106はOS202の指示に従いS1407の処理を行う場合に登録要求を行った文書編集アプリケーションの識別子を取得し、1515に示すように識別子を設定する。このとき、CPU106はOS202の指示に従い登録を要求した文書編集アプリケーションへの問い合わせ及びペースト指示を行うための通知関数とデータ識別子を、それぞれ1516と1517に示すように設定する。
図16は、本実施例に係るPC100が、ユーザにオブジェクトのペースト位置を選択させるためのメニューを一例としてファイル管理アプリケーションで表示するフローを示したものである。
S1601にて、CPU106はファイル管理アプリケーションの指示に従いOS202に対して登録されているペースト位置情報数を問い合わせる。S1602にて、CPU106はOS202の指示に従い管理しているペースト位置情報数を返す。一例を示すと図15(a)で示したペースト位置の配列1512の数を取得して、ファイル管理アプリケーションに返す。S1603にて、CPU106はファイル管理アプリケーションの指示に従い取得したペースト位置情報数を変数Tに設定し、変数Iを0に初期化する。S1604にて、CPU106はファイル管理アプリケーションの指示に従い変数Tと変数Iを比較する。変数Iが変数Tより小さい場合は、CPU106はS1605の処理を行い、変数Iが変数Tと等しい場合はCPU106はS1612の処理を行う。S1605にて、CPU106はファイル管理アプリケーションの指示に従いOS202に対して登録されているI番目のペースト位置情報の表示情報取得を行う。S1606にて、CPU106はOS202の指示に従い、ペースト位置情報を登録した文書編集アプリケーションに対して表示情報取得要求を行う。一例を示すと図15(a)で示したペースト位置の配列1512から問い合わせのあったI番目のペースト位置情報を参照する。そして、通知関数1513を利用して、ペースト位置情報を登録した文書編集アプリケーションに対して、位置管理番号1514を伴って表示情報取得要求を行う。S1607にて、CPU106は文書編集アプリケーションの指示に従いペースト位置情報を特定して表示情報をOS202へ返す。一例を示すと図15(a)で示した文書編集アプリケーションが管理を行っているペースト位置の配列1503から通知関数1513で通知された位置管理番号1514にてペースト位置情報を特定して表示情報をOS202へ返す。なお、図15(a)において関連するペースト位置管理番号1506が設定されていた場合、関連するペースト位置を一つの表示情報になるようにS1607にて調整を行ってもよいことは言うまでもない。S1608にて、CPU106はOS202の指示に従いS1605にて文書編集アプリケーションより返信された表示情報に、アプリケーション情報を付加してファイル管理アプリケーションに返す。一例を示すと図15(a)で示したペースト位置の配列1512のアプリケーション情報を付加してファイル管理アプリケーションに返す。S1609にて、CPU106はファイル管理アプリケーションの指示に従いOS202より返信された表示情報からペースト対象オブジェクトがペースト可能かどうかを判断する。一例を示すと判断は、S1607にて文書編集アプリケーションより表示情報として返された図15(a)で示したペーストを受け付けられるオブジェクトの種類1505を使用する。ペースト対象オブジェクトがペースト可能な場合は、CPU106はS1610の処理を行い、ペースト対象オブジェクトがペーストできない場合はCPU106はS1611の処理を行う。このようにすることでペースト対象のオブジェクトの種類に合わせてペースト候補を表示することができる。S1610にて、CPU106はファイル管理アプリケーションの指示に従いOS202より返信された表示情報からペースト位置を指定する表示情報を生成する。一例を示すと、S1608にて付加された図15(a)で示される1512のアプリケーション情報を使用してアプリケーションごとに分類して表示情報を生成する。このようにすることでペースト位置情報が複数アプリケーションである場合に、図13(b)に示したメニュー1314のようにアプリケーションごとに分類して表示することができる。S1611にて、CPU106はファイル管理アプリケーションの指示に従い変数Iをインクリメントして処理をS1604に戻す。S1612にて、CPU106はファイル管理アプリケーションの指示に従い生成したペースト位置を指定する表示情報を表示する。本実施例では表示情報としてペースト位置を指定する表示情報のみを説明したが、新規作成や保存など他の動作を指定する情報を付加しても問題ないことは言うまでもない。また、本実施例ではS1609にてペースト対象オブジェクトがペースト可能かどうかを判断したが、S1605にてペースト対象オブジェクトの種別を表示情報取得に付加することでS1607にて判断をさせてもよいことは言うまでもない。このようにすることで図13(b)に示した指定位置へのメニュー1313を表示し、メニュー1314及びメニュー1315を表示させることができる。また、S1601にてペースト位置情報数を問い合わせて処理することで、図13(b)に示したメニュー1315のようにペースト位置を並べて表示することができる。
図17は、本実施例に係るPC100が、ユーザの操作に応答して、ペースト位置の選択を一例としてファイル管理アプリケーションで受け付けるフローを示したものである。
S1701にて、CPU106はファイル管理アプリケーションの指示に従い選択されたペースト位置情報を示す変数Iを設定する。ここで、変数Iは図16のS1610で生成した表示情報とユーザが指定した情報とから取得することができる。S1702にて、CPU106はファイル管理アプリケーションの指示に従いOS202に対して登録されているI番目のペースト位置情報にペースト対象のオブジェクト情報を付加してペースト処理を行うように依頼する。S1703にて、CPU106はOS202の指示に従い、ペースト対象のオブジェクト情報を伴うペースト要求を、ペースト位置情報を登録した文書編集アプリケーションに対して行う。一例を示すと図15(a)で示したペースト位置の配列1512から問い合わせのあったI番目のペースト位置情報を参照する。そして、通知関数1513を利用して、位置管理番号1514と付加されているペースト対象のオブジェクト情報を伴うペースト要求を、ペースト位置情報を登録した文書編集アプリケーションに対して行う。S1704にて、CPU106は文書編集アプリケーションの指示に従いペースト対象のオブジェクト情報を利用してペースト処理を行う。一例を示すと図15(a)で示した文書編集アプリケーションが管理を行っているペースト位置の配列1503から通知関数1513で通知された位置管理番号1514とペースト対象のオブジェクト情報を利用してペースト処理を行う。なお、図15(a)で示した文書編集アプリケーションが管理を行っているペースト位置の配列1503において関連するペースト位置管理番号1506が設定されていた場合、関連するペースト位置すべてにペースト処理を行ってもよいことは言うまでもない。S1705にて、CPU106は文書編集アプリケーションの指示に従い処理を行ったペースト位置情報を削除するようにOS202に依頼する。一例を示すと図15(a)で示したOS202が管理を行っているペースト位置の配列1512から処理を行ったペースト位置情報を削除するように処理を行った位置管理番号1514を利用してOS202に依頼する。S1706にて、CPU106はOS202の指示に従い指示されたペースト位置情報の削除を行う。一例を示すと図15(a)で示したOS202が管理を行っているペースト位置の配列1512から指示された位置管理番号1514と削除要求を行った文書編集アプリケーションの識別子を利用してペースト位置情報の削除を行う。
S1707にて、CPU106は文書編集アプリケーションの指示に従いペースト位置情報の削除を行う。一例を示すと図15(a)で示したアプリケーションが管理を行っているペースト位置の配列1503と編集対象の文字データとコントロールデータのメモリ1502からペースト位置情報の削除を行う。このようにS1705からS1707でペーストを行ったペースト位置情報の削除を行うことで不要にペースト位置情報が残ることを防ぐことができる。なお、ユーザがペースト操作時にペーストを行ったペースト位置情報の削除を処理しないように指示を行いペースト位置情報を明示的に残すことでペーストを行った位置に再度ペーストが可能となるのは言うまでもない。S1708にて、CPU106は文書編集アプリケーションの指示に従いS1704にて処理を行ったペースト位置を表示するように表示位置などを変更する。このようにすることで、ユーザが文書編集アプリケーションを選択して前面にアプリケーションのウインドウが移動した際にペーストによって変更のあった箇所を確認することができる。S1709にて、CPU106は文書編集アプリケーションの指示に従いアプリケーションが管理を行っているペースト位置情報が残っているかどうかを確認する。一例を示すと図15(a)で示したアプリケーションが管理を行っているペースト位置の配列1503が残っているかどうかを確認する。
ペースト位置情報が残っている場合は、CPU106はS1711の処理を行い、ペースト位置情報が残っていない場合はCPU106はS1710の処理を行う。
S1710にて、CPU106は文書編集アプリケーションの指示に従い、そのウインドウを最前面に移動させる。このようにすることで、ユーザが文書編集アプリケーションで指定したすべてのペースト位置にペーストが行われるとウインドウが最前面に移動されるので、ユーザは文書編集アプリケーションを選択することなくペースト内容を確認することができる。S1711にて、CPU106は文書編集アプリケーションの指示に従いOS202にペースト処理結果を戻す。
S1712にて、CPU106はOS202の指示に従いファイル管理アプリケーションにペースト処理結果を戻す。このようにすることで図13(b)に示した項目1316をユーザが選択すると、図13(a)に示すペースト位置1301に、図13(c)に示すようにデータアイコン1312に対応するデータがペーストされている状態となる。
図18は、本実施例に係るPC100が、アプリケーションにおいて編集が行われた際の選択されたペースト位置を補正するフローを示したものである。
S1801にて、CPU106は文書編集アプリケーションの指示に従い編集内容を判断する。
CPU106は編集内容が挿入の場合は処理を終了し通常の挿入処理を行う。CPU106は編集内容が削除の場合はS1802の処理を行う。なお、置換の場合は、削除と挿入が行われたものとして削除処理を行った後挿入処理を行う。挿入の場合に補正を必要としない一例を示す。図15(a)に示したCPU106が文書編集アプリケーションの指示に従い管理を行っている編集対象の文字データとコントロールデータのメモリ1502における挿入では、コントロールデータ1507,1508は挿入に合わせてメモリ内で移動する。したがって、補正を必要としない。
S1802にて、CPU106は文書編集アプリケーションの指示に従い削除対象の範囲を取得する。S1803にて、CPU106は文書編集アプリケーションの指示に従い削除対象の範囲に完全に含まれるペースト位置コントロールに対応したペースト位置情報を削除する。また、削除したペースト位置情報に関連付けられているペースト位置情報があればそれを補正する。一例を示すと図15(a)に示したCPU106が文書編集アプリケーションの指示に従い管理を行っている編集対象の文字データとコントロールデータのメモリ1502のような場合には、削除範囲内にコントロールデータが存在しないかどうかを確認する。コントロールデータが存在する場合は、コントロールデータと組になっているペースト位置の配列1503から削除するペースト位置情報を特定する。特定した削除するペースト位置情報が他のペースト位置情報の1506に関連付けられたまま残らないように調整を行う。特定したペースト位置情報を削除し、メモリ1502の削除範囲のデータを削除する。このとき削除範囲内のコントロールデータの判断は削除対象の範囲にコントロールデータが完全に含まれる場合だけでなく、削除範囲内とコントロールデータの開始終了で示される範囲の一部が重なる場合にそのコントロールデータを削除対象としてもよい。S1804にて、CPU106は文書編集アプリケーションの指示に従い削除対象のペースト位置情報を削除するようにOS202に依頼する。
一例を示すと図15(a)で示したOS202が管理を行っているペースト位置の配列1512から削除対象のペースト位置情報を削除するように位置管理番号1514を利用してOS202に依頼する。S1805にて、CPU106はOS202の指示に従い指示されたペースト位置情報の削除を行う。一例を示すと図15(a)で示したOS202が管理を行っているペースト位置の配列1512から指示された位置管理番号1514と削除要求を行った文書編集アプリケーションの識別子を利用してペースト位置情報の削除を行う。このようにすることでユーザがペースト位置の指定を行った文書編集アプリケーションにおける編集時のペースト位置の補正を行うことができる。
図19は、本実施例に係るPC100においてファイル管理アプリケーションのウインドウ上でペースト位置を表示するメニューの一例を示している。図19(a)の1900は、ユーザがファイル管理アプリケーションにおいてペースト位置をショートカットや右クリックなどでフローティングメニューを表示させた例を示している。1901は、ペースト対象のアプリケーション名を示し、1902はペースト位置を示している。例では、ペースト対象のアプリケーション名とペースト位置を階層化しているが、図19(b)の1904のようにペースト対象のアプリケーション名とペースト位置をまとめてもよい。なお、図19(b)の1903は、一例としてファイル管理アプリケーションのメニューにペースト位置を指定するメニューがある場合の例を示している。
なお、本実施例に係るPC100のCPU106はOS202にしたがって、アプリケーションの終了を検知すると、当該アプリケーションに関係するペースト位置情報を削除する。
一例を示すと図15(a)で示したOS202が管理を行っているペースト位置の配列1512からアプリケーションの終了を特定したアプリケーションに関係づけられているペースト位置情報を削除する。このようにすることでアプリケーションが強制終了されたりした場合でもOS202が管理を行っているペースト位置の配列1512からペースト位置情報を削除できるため、ユーザのペースト位置選択で不要なペースト位置を表示することを防ぐことができる。
なお、上記では文書編集アプリケーションを例にあげて説明したが、画像編集アプリケーションでも同様に本発明を実現できる。ユーザが文書ファイルにペースト位置を指定するのと同様に、画像ファイルにペースト位置を指定すればよい。ここで、文書編集アプリケーションの代わりに画像編集アプリケーションを用いた場合の画像編集アプリケーションとOS202のメモリに保存したペースト位置の管理形態の一例を図15(b)に示す。1520は、CPU106が図14のS1405の処理において画像編集アプリケーションに割り当てたメモリイメージを示したものである。1521は、CPU106がS1407の処理においてOS202に割り当てたメモリイメージを示したものである。1521に示される1531から1536は、図15(a)で示したCPU106がS1407の処理においてOS202に割り当てたメモリイメージと同じであるので説明を省略する。1522は、CPU106が画像編集アプリケーションの指示に従い管理を行っているペースト位置の配列を示したものである。1523は、ペーストの開始位置を示し編集領域の左上からのピクセルでのX軸、Y軸を示している。1524は、ペーストの終了位置を示し編集領域の左上からのピクセルでのX軸、Y軸を示している。1525は、オブジェクトがペーストされたかどうかなどのペースト状態を示している。1526は、ペーストを受け付けられるオブジェクトの種類を示している。一例を示すと、図14のS1405にて、CPU106は画像編集アプリケーションの指示に従いユーザが指定したペースト位置でペーストできるオブジェクトの種類を取得し、その種類のオブジェクトのみがペーストを許されるように設定を行う。また、ペースト位置の指定時だけでなくダイアログを利用した設定画面を用意してユーザがオブジェクトの種類を設定、解除できるようにしてもよい。1527は、関連するペースト位置管理番号を示しペースト位置を複数まとめて処理の対象とする場合に利用する。一例を示すと、ペースト位置の配列1522で管理されているペースト位置管理番号Fを示す1530は、関連するペースト位置管理番号に関連位置管理番号としてペースト位置管理番号Eを示す1528が設定されている。このことから、ペースト位置管理番号Fを示す1530はペースト位置管理番号Eを示す1529と関連付けられていることがわかる。なお、ペースト位置の関連の設定、解除はユーザが設定画面で設定、解除できる。
また、図19(c)の1905は、ペースト位置が画像編集アプリケーションによって生成された画像ファイルである場合に、ファイル管理アプリケーションのウインドウにおいてペースト位置の選択ウインドウを表示させた例を示している。1906は、アプリケーションを示すアイコンを表示させた例を示している。1907は、ペースト位置を示すマークを表示させた例を示している。マークは、ユーザがペースト位置の指定を行った画像編集アプリケーション上で表示しているペースト位置と同じものを表示していてもよい。1908は、ペースト位置を示すマークのチップヘルプを表示させた例を示している。
1909は、ペースト位置のオブジェクトを表示させた例を示している。オブジェクトは、ユーザがペースト位置の指定を行った画像編集アプリケーション上でペースト位置に位置指定した図形を示している。1910は、ペースト位置を示すオブジェクトのチップヘルプを表示させた例を示している。なお、例にあるようにチップヘルプは1908、1910にあるようにペースト位置の指定を行った画像編集アプリケーションに合わせて内容を変えてもよいことは言うまでもない。1911は、選択ウインドウをクローズさせるボタンを表示している。例では、選択ウインドウとしたがメニュー内にアイコンやマーク、オブジェクトを表示するようにしてもよいことは言うまでもない。
また、上記では文書編集アプリケーションと画像編集アプリケーションを例にあげて説明したが、ファイル管理アプリケーションでも同様に本発明を実現できる。ユーザが文書ファイルにペースト位置を指定するのと同様に、ファイル管理アプリケーションにペースト位置を指定すればよい。ここで、文書編集アプリケーションの代わりにファイル管理アプリケーションを用いた場合のファイル管理アプリケーションとOS202のメモリに保存したペースト位置の管理形態の一例を図15(c)に示す。
1540は、CPU106が図14のS1405の処理においてファイル管理アプリケーションに割り当てたメモリイメージを示したものである。1541は、CPU106がS1407の処理においてOS202に割り当てたメモリイメージを示したものである。1541に示される1552から1557は、図15(a)で示したCPU106がS1407の処理においてOS202に割り当てたメモリイメージと同じであるので説明を省略する。1542は、CPU106がファイル管理アプリケーションの指示に従い管理を行っているペースト位置の配列を示したものである。1543は、ペーストを行いたいフォルダを示している。1544は、ペーストの開始位置を示しフォルダ表示領域の左上からのピクセルでのX軸、Y軸を示している。1545は、ペーストの終了位置を示しフォルダ表示領域の左上からのピクセルでのX軸、Y軸を示している。1546は、ペーストに利用したかどうかなどのペースト状態を示している。1547は、ペーストを受け付けられるオブジェクトの種類を示している。一例を示すと、図14のS1405にて、CPU106はファイル管理アプリケーションの指示に従いユーザが指定したペースト位置でペーストできるオブジェクトの種類を取得し、その種類のオブジェクトのみがペーストを許されるように設定を行う。また、ペースト位置の指定時だけでなくダイアログを利用した設定画面を用意してユーザがオブジェクトの種類を設定、解除できるようにしてもよい。1548は、関連するペースト位置管理番号を示しペースト位置を複数まとめて処理の対象とする場合に利用する。一例を示すと、ペースト位置の配列1542で管理されているペースト位置管理番号Kを示す1551は、関連するペースト位置管理番号に関連位置管理番号としてペースト位置管理番号Jを示す1549が設定されている。このことから、ペースト位置管理番号Kを示す1551はペースト位置管理番号Jを示す1550と関連付けられていることがわかる。なお、ペースト位置の関連の設定、解除はユーザが設定画面で設定、解除できる。
本実施例に示したように、ファイル管理アプリケーションのように文書編集アプリケーションや画像編集アプリケーションだけでなくペースト処理を扱うことができるアプリケーションすべてで行えることは言うまでもない。
本実施例によれば、ユーザはウインドウに配置されたオブジェクトを他のウインドウの所望の位置に移動したいときに、オブジェクトのドラッグ操作を所望の位置まで継続せずに済むので、操作にかかる手間を軽減できる。また、ユーザがオブジェクトのドラッグ中に所望の位置を見失ってしまい、操作をやり直す事態を防ぐことができる。すなわち、ウインドウに配置されたオブジェクトを簡単な操作で、他のウインドウの所望の位置に移動できる。
実施例3のフローティングメニューの代わりに、オブジェクトのドロップ操作を受け付けるフローティングウインドウを表示するようにしてもよい。フローティングウインドウはペースト位置と対応付けられており、ペースト位置の数だけ存在し、マウスカーソルの近傍に表示される。そして、ユーザがオブジェクトのドロップ操作をしたフローティングウインドウと対応するペースト位置に、オブジェクトと対応するデータがペーストされる。
なお、本実施例では上述の実施例1と同様の構成については説明を省略し、本実施例に特有の構成について詳細に説明する。
図13(d)は、本実施例に係るPC100において、ドラッグされたオブジェクトのドロップ先が指定された様子の一例を示す。ペースト位置が指定された後、ペースト位置と関連付けられたフローティンウインドウ1323をファイル管理アプリケーションのウインドウに表示する。
図8は、実施例4に係る情報提供システムでドロップを行いたい位置の指定が行われた場合の処理を示すフローチャートである。S801にて、ドロップを行いたい位置の指定がポインティングデバイスで行われたかポインティングデバイス以外で行われたかを判断する。ドロップを行いたい位置の指定がポインティングデバイスで行われた場合はS803に進み、ドロップを行いたい位置の指定がポインティングデバイス以外で行われた場合はS802に進む。S802では、編集領域のフォーカスの位置、例えばカーソルの位置や範囲指定されている場合は範囲指定されている領域などを取得する。なお、不図示ではあるが、ポインティングデバイスを利用しない例として、他に矢印キーなどで仮想表示されたポインティングデバイスを操作できるモードとなり、キー操作のみで位置や範囲の指定を行う方法で指定された位置や領域を取得してもよい。S803では、ポインティングデバイスの位置、例えばポインティングデバイスがクリックされた位置やポインティングデバイスで範囲指定された場合は範囲指定されている領域などを取得する。なお、文書の編集アプリケーションなどのアプリケーションではポインティングデバイスがクリックされた位置の近傍で適切な位置にカーソルが移動するが、ここで取得する位置は同様にポインティングデバイスがクリックされた位置の近傍で適切な位置に変換を行ってもよい。S804にて、S802、S803で取得を行ったドロップを行いたい位置がドロップ可能位置かどうかを判断する。ドロップ可能位置として不適切な場合は処理を終了し、ドロップが可能な位置の場合はS805へ進む。S805にて、指定されたドロップを行いたい位置を保存する。このとき、すでに保持しているドロップを行いたい位置と指定されたドロップを行いたい位置が重なる場合は、すでに保持しているドロップと指定されたドロップを行いたい位置を置き換えてもよい。また、ドロップを行いたい位置にドロップできるオブジェクトに制限がある場合、ドロップ種別としてあわせて保存してもよい。S806にて、保存しているドロップを行いたい位置情報からドロップ位置表示を行い処理を終了する。不図示ではあるが、編集領域のドロップ位置表示を行った位置に対応するマークを表示する処理を行ってもよいことは言うまでもない。
図9は、実施例4に係る情報提供システムでドロップを行いたい位置の管理形態の一例を示す。900は、文字データとコントロールデータの管理を行っているメモリのイメージを示したものである。文書などでは、このように管理しているデータと使用するフレームデータを組み合わせてフレームにデータを順に詰めていくことで文書を形成していることが多い。901は、管理するドロップを行いたい位置の配列を示したものである。902は、範囲指定でない場合のドロップ位置をコントロールデータとして文字データと一緒に保持している状態を示し、配列901の908で管理されているドロップ位置管理番号Aと関連付けられている。903は、範囲指定の場合のドロップ位置をコントロールとして文字データと一緒に保持している状態を示し、配列901の909で管理されているドロップ位置管理番号Bと関連付けられている。一例を示すと、903により「ABCDEFG」の文字が範囲指定されていることがわかる。904は、ドロップに利用したかどうかなどのドラッグ状態を示している。905は、ドロップを受け付けられるオブジェクトの種類を示している。一例を示すと、図8のS805にて指定したドロップを行いたい位置に、ドロップできるオブジェクトとして画像と図形のオブジェクトのみが許されるような場合に設定を行う。また、不図示ではあるが、ドロップ位置の指定時だけでなくダイアログを利用した設定画面を用意してオブジェクトの種類を設定、解除できるようにしてもよい。906は、関連するドロップ位置管理番号を示しドロップ位置を複数まとめて処理の対象とする場合に利用する。一例を示すと、907により配列901の909で管理されているドロップ位置管理番号Bは、908で管理されているドロップ位置管理番号Aと関連付けられていることがわかる。なお、本発明ではアプリケーションによって管理しやすい形態でドロップ位置管理がされればよく、本発明おいてドロップ位置管理の形態が限定されるものではない。
図20は、実施例4に係る情報提供システムにおけるドロップ位置表示の処理を示すフローチャートである。S2001にて、管理しているドロップ位置から関連するドロップ位置が設定されていないドロップ位置の数を判断する。図9を例にすると909で管理されているドロップ位置管理番号Bは908で管理されているドロップ位置管理番号Aと関連付けられている。したがって、関連するドロップ位置が設定されていないドロップ位置は908で管理されているドロップ位置管理番号Aだけとなる。関連するドロップ位置が設定されていないドロップ位置がない場合はS2006へ進み、関連するドロップ位置が設定されていないドロップ位置がある場合はS2002へ進む。S2002にて、ドロップ位置表示ウインドウの状態を確認する。ドロップ位置表示ウインドウがあればS2004に進み、ドロップ位置表示ウインドウがなければS2003に進む。S2003にて、ドロップ位置表示ウインドウを生成する。生成したドロップ位置表示ウインドウを最前面に固定表示してもよい。このようにすることで、ドロップ位置表示ウインドウを前面にしてもドロップ位置表示ウインドウが隠されることがなくなりドラッグ&ドロップを行いやすくなる。S2004にて、関連するドロップ位置が設定されていないドロップ位置の数からドロップ位置の表示に必要な領域サイズを求めドロップ位置表示ウインドウをリサイズする。ドロップ位置の数あるいはドロップ位置の表示に必要な領域サイズが一定数を超えた場合、ドロップ位置表示ウインドウ内でドロップ位置の表示でスクロールを行うことを前提にして必要な領域サイズを求めてもよい。あるいは、ドロップ位置の数あるいはドロップ位置の表示に必要な領域サイズが一定数を超えた場合、ドロップ位置の表示方法を小さいサイズに切り替えるようにS2005のドロップ位置の表示をコントロールしてもよい。なお、ドロップ位置表示ウインドウ内でドロップ位置がスクロールされても、ドロップ位置表示ウインドウ内にはドロップ位置しかなく、他のデータと混在しているウインドウの中からドロップ位置を探すより容易に見つけることが出来る。また、ドロップ位置表示ウインドウ内でドロップ位置がスクロールされても、ドロップ位置表示ウインドウの大きさが小さいため、大きな領域を持つウインドウの中をドロップ位置までドラッグするより容易に操作できる。
S2005にて、ドロップ位置表示ウインドウに関連するドロップ位置が設定されていないドロップ位置の表示を行い処理を終了する。他のドロップ位置から関連付けをされているドロップ位置の表示では、まとめられていることを示すアイコンやマークを付けるなど他のドロップ位置から関連付けをされていないドロップ位置の表示と区別がつくように表示を行ってもよい。図9を例にすると908で管理されているドロップ位置管理番号Aは、他のドロップ位置909で管理されているドロップ位置管理番号Bから関連付けをされているためまとめられていることを示すアイコンやマークを付けて表示を行う。また、一度ドロップ処理を行ったドロップ位置の表示では、ドロップ処理を行ったことを示すアイコンやマークを付けるなど区別がつくように表示を行ってもよい。S2006にて、ドロップ位置表示ウインドウの削除を行う。このように、S2006にてドロップ位置表示ウインドウの削除することで管理しているドロップ位置がなくなった場合にドロップ位置表示ウインドウを表示しないようにできる。S2003およびS2006にて、アプリケーション実行時にウインドウを生成しておき生成時に表示状態、削除時に非表示状態にウインドウの状態を変えるようにしてもよい。アプリケーション実行時にウインドウを生成しておく場合、生成したドロップ位置表示ウインドウを最前面に固定表示してもよい。
このようにすることで、ドロップ位置表示ウインドウを前面にしても表示状態のドロップ位置表示ウインドウが隠されることがなくなりドラッグドロップを行いやすくなる。S2007にて、ドロップを行いたい位置の指定を行ったウインドウが他のウインドウの下であった場合そのウインドウを前面に移動する。これにより、ドロップが行われた場合に対象のドロップ位置を表示しない場合に、すべてのドロップ位置にドロップが行われるとドロップ位置表示ウインドウを表示しない。さらにそれだけでなくドロップを行いたい位置の指定を行ったウインドウが前面に移動するのでドロップ結果を容易に見ることができる。
また、S2007を省略するとドロップを行いたい位置の指定を行ったウインドウが前面に移動しなくなるが、他のウインドウの操作を継続して行いやすいので設定で処理を制御してもよい。
このように、S2004およびS2005、S2006にて表示するドロップ位置に合わせてドロップ位置表示ウインドウの表示を変えることで、指定されたドロップ位置の追加や削除、まとめに合わせて表示を行うことができる。以上の説明は、関連が設定されているドロップ位置の表示を例に説明を行ったが、関連の設定を持たないドロップ位置の管理であっても処理が変わらないことは言うまでもない。また、ドロップ位置表示ウインドウを独立したウインドウとして説明を行ったが、ドロップ位置表示ウインドウの代りにツールバーなど他のコマンド表示などで利用しているウインドウ内にドロップ位置表示領域を設けるようにしてもよい。また、一つのドロップ位置表示ウインドウ内に表示するドロップ位置をすべて表示するとして説明を行ったが、ドロップ位置一つ一つにドロップ位置表示ウインドウを使用してもよい。
図21は、実施例4に係る情報提供システムにおいてドロップ位置表示ウインドウにドロップが行われた場合の処理を示すフローチャートである。
S2101にて、ドロップ位置の確認を行う。ドロップ位置がドロップ位置表示の位置でなければ、処理を終了する。ドロップ位置がドロップ位置表示の位置であれば、S2102へ進む。
S2102にて、ドロップ位置に表示していたドロップ位置情報を取得する。ドロップ位置に表示していたドロップ位置情報が他のドロップ位置から関連付けをされている場合は、関連が設定されているドロップ位置情報もすべて取得する。図9を例にすると908で管理されているドロップ位置管理番号Aがドロップ位置に表示していたドロップ位置情報であった場合、ドロップ位置909で管理されているドロップ位置管理番号Bから関連付けをされている。したがって、908で管理されているドロップ位置管理番号Aとドロップ位置909で管理されているドロップ位置管理番号Bが取得対象となる。
S2103にて、ドロップされたオブジェクト情報を取得する。S2104にて、S2103にて取得したドロップされたオブジェクト情報で示される種別とS2102にて取得したすべてのドロップ位置情報で示される種別を判断する。ドロップされたオブジェクトがドロップ位置情報を示していた場合はS2109へ進み、ドロップされたオブジェクトを処理できる場合はS2105へ進む。ドロップされたオブジェクトをS2102にて取得したすべてのドロップ位置で処理できない場合は処理を終了する。このとき、処理できないことをユーザに通知するウインドウを表示して処理を終了するようにしてもよい。S2105にて、S2102にて取得したドロップ位置情報のうちドロップされたオブジェクトを処理できるドロップ位置情報は編集により削除が行われたものとして削除する。ドロップ位置情報削除の処理の詳細は後述する。S2106にて、S2102にて取得したドロップ位置情報のうちドロップされたオブジェクトを処理できるドロップ位置にオブジェクトがドロップがされたこととして処理を行う。このように、関連が設定されているドロップ位置に対してドラッグが行われた場合には関連が設定されているドロップ位置にまとめてドロップを行うことができる。S2107にて、ドロップ処理が行われた位置が編集画面の外であった場合ドロップを行ったオブジェクトを表示するようにスクロールを行う。このようにドロップを行ったオブジェクトを表示するようにスクロールすることでドロップ結果を容易に見ることができる。スクロールは、関連が設定されているドロップ位置情報の最もドロップ位置管理番号の大きいドロップ位置情報または最もドロップ位置の大きいドロップ位置情報のドロップ位置を利用して行ってもよい。S2107を省略することで、スクロールにより処理に時間がかかる場合などスクロールを停止させることもできる。この場合不図示ではあるが、ドロップを行いたい位置の指定を行ったウインドウを前面に移動する場合に最後にドロップを行った位置を表示するようにスクロールするようにしてもよい。S2108にて、S2106にて行ったドロップ処理でドロップを行ったオブジェクトがドロップを行いたい位置として指定されたものとしてドロップ位置指定を行い処理を終了する。このとき、S2102にて取得したすべてのドロップ位置情報に対して関連するドロップ位置情報の再構成を行う。
このようにS2106にて行ったドロップ処理のオブジェクトを再度ドロップ位置に指定することでドロップを繰り返して同じ位置に行うことが容易となる。S2108を省略することで、ドロップに使用した位置をドロップ位置表示から削除しドロップを行っていないドロップ位置を容易に判別するようにすることもできる。
このように、S2108を省略するとドロップを繰り返して同じ位置に行うことができなくなるが、ドロップを行っていないドロップ位置を容易に判別できるので設定またはドロップ時のキーの押下状態で処理を制御してもよい。S2109にて、ドロップデータの判断を行う。ドロップデータが、ドロップ位置の情報と異なる場合はS2110に進み、ドロップ位置の情報と同じである場合は処理を終了する。S2110にて、ドロップされたドロップ位置情報をドロップ位置のドロップ位置情報と関連付ける。
S2111にて、ドロップ位置表示を図20を使用して説明を行ったように関連が設定されているドロップ位置を考慮して処理を行い処理を終了する。このように、ドロップ位置がドロップされるとドロップ位置を関連付けることができる。関連の設定を持つドロップ位置の管理においてドロップ位置表示ウインドウにドロップが行われた場合を例に説明を行ったが、関連の設定を持たないドロップ位置の管理であっても処理が変わらないことは言うまでもない。
不図示ではあるが、ドロップ位置の関連付けは説明を行ったドラッグだけでなくダイアログを利用した設定画面を用意して関連付けを設定、解除できるようにしてもよい。
図22は、実施例4に係る情報提供システムにおけるドロップ位置表示ウインドウの一例を示している。ウインドウ2201では、ドロップ位置を2202に示すようなアイコンとして表示を行う。アイコンへのポインティングデバイスオーバ時には2203に示すようにアイコンに対応したチップヘルプとして、行数、列数に代表される位置情報を示す。チップヘルプとして行数、列数に代表される位置情報以外に、範囲指定されている場合はその文字列やオブジェクト名、ドロップ位置指定を行った時間や指定順序の情報、ドロップ状態の情報を組み合わせて表示してもよい。ウインドウ2204では、ドロップ位置を2205に示すような行数、列数に代表される位置情報を示す。位置情報として行数、列数に代表される位置情報以外に、範囲指定されている場合はその文字列やオブジェクト名、ドロップ位置指定を行った時間や指定順序の情報、ドロップ状態の情報を組み合わせて表示してもよい。ウインドウ2206では、ドロップ位置を2207に示すような範囲指定されているオブジェクトで描画されるもの、あるいは、それらを縮小したものの表示を行う。ポインティングデバイスオーバ時には、2208に示すように対応したチップヘルプとして、行数、列数に代表される位置情報を示す。チップヘルプとして行数、列数に代表される位置情報以外に、範囲指定されている場合はその文字列やオブジェクト名、ドロップ位置指定を行った時間や指定順序の情報、ドロップ状態の情報を組み合わせて表示してもよい。このようにすることで、複数ドロップ位置が指定されても容易に区別がつくようにすることができる。
図23は、実施例4に係る情報提供システムにおいてドラッグ開始時にドラッグオブジェクトの種別に合わせてドロップ位置表示ウインドウのコントロールとドロップ位置の表示を行う処理のフローチャートである。S2301にて、イベントの取得を行いイベントの判断を行う。イベントがドラッグ開始の場合はS2302へ進み、ドロップまたはドラッグ中止の場合はS2310へ進む。S2302にて、管理しているドロップ位置の数を判断する。
管理しているドロップ位置がない場合は処理を終了し、管理しているドロップ位置がある場合は、S2303へ進む。S2303にて、ドラッグ中のオブジェクトの種類を取得して管理しているドロップ位置をドロップ種別でフィルタリングする。図9を例にするとフィルタリングは、905のドロップを受け付けられるオブジェクトの種類を利用しドラッグ中のオブジェクトの種類と同じ種類を示すドロップ位置を抽出する。S2304にて、フィルタリング結果の判断を行う。フィルタリング結果、対象となるドロップ位置がない場合はS2309へ進み、対象となるドロップ位置情報がある場合はS2305へ進む。S2305にて、ドロップ位置表示ウインドウの状態を確認する。ドロップ位置表示ウインドウがあればS2307に進み、ドロップ位置表示ウインドウがなければS2306に進む。S2306にて、ドロップ位置表示ウインドウを生成する。生成したドロップ位置表示ウインドウを最前面に固定表示してもよい。このようにすることで、ドロップ位置表示ウインドウを前面にしてもドロップ位置表示ウインドウが隠されることがなくなりドラッグドロップを行いやすくなる。S2307にて、フィルタリングしたドロップ位置の数からドロップ位置の表示に必要な領域サイズを求めドロップ位置表示ウインドウをリサイズする。ドロップ位置の数あるいは、ドロップ位置の表示に必要な領域サイズが一定数を超えた場合、ドロップ位置表示ウインドウ内でドロップ位置の表示でスクロールを行うことを前提にして必要な領域サイズを求めてもよい。あるいは、ドロップ位置の数あるいはドロップ位置の表示に必要な領域サイズが一定数を超えた場合、ドロップ位置の表示方法を小さいサイズに切り替えるようにS2308のドロップ位置の表示をコントロールしてもよい。S2308にて、ドロップ位置表示ウインドウにフィルタリングしたドロップ位置の表示を行い処理を終了する。S2309にて、ドロップ位置表示ウインドウの削除を行う。このように、S2309にてドロップ位置表示ウインドウの削除することで、フィルタリング結果ドロップ位置がなくなった場合にドロップ位置表示ウインドウを表示しないようにできる。S2306およびS2309にて、アプリケーション実行時にウインドウを生成しておき、生成時に表示状態、削除時に非表示状態にウインドウの状態を変えるようにしてもよい。アプリケーション実行時にウインドウを生成しておく場合、生成したドロップ位置表示ウインドウを最前面に固定表示してもよい。このようにすることで、ドロップ位置表示ウインドウを前面にしても表示状態のドロップ位置表示ウインドウが隠されることがなくなりドラッグドロップを行いやすくなる。S2310にて、ドロップ位置表示を図20に示したようなフローにて処理を行う。このようにすることで、ドラッグを行っているオブジェクトに対応したドロップ位置のみ表示することができる。
このように、メニューの代わりにフローティングウインドウを用いてオブジェクトのペースト位置を指定することができ、ユーザの使い勝手が向上する。
[その他の実施例]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。