以下、図面を参照して、本願発明の実施の形態の一例を説明する。
図1は本願発明の情報処理装置のハードウェア構成の一例を示す図である。
図1において、101はCPUで、システムバス104に接続される各デバイスやコントローラを統括的に制御する。また、ROM103あるいは外部メモリ111には、CPU101の制御プログラムであるBIOS(Basic Input / Output System)やオペレーティングシステムプログラム(以下、OS)や、各サーバ或いは各PCの実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。
102はRAMで、CPU101の主メモリ、ワークエリア等として機能する。CPU101は、処理の実行に際して必要なプログラム等をROM103あるいは外部メモリ111からRAM102にロードして、該ロードしたプログラムを実行することで各種動作を実現するものである。
また、105は入力コントローラで、キーボードやマウス等のポインティングデバイス等で構成される入力部109からの入力を制御する。106はビデオコントローラで、ディスプレイ装置110等の表示器への表示を制御する。
107はメモリコントローラで、ブートプログラム,各種のアプリケーション,フォントデータ,ユーザファイル,編集ファイル,各種データ等を記憶するハードディスク(HD)や、フレキシブルディスク(FD)、或いはPCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュ(登録商標)メモリ等の外部メモリ111へのアクセスを制御する。
108は通信I/Fコントローラで、ネットワーク(例えば、LAN(ローカルエリアネットワーク))を介して外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いた通信等が可能である。
なお、CPU101は、例えばRAM102内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ装置110上での表示を可能としている。また、CPU101は、ディスプレイ装置110上の不図示のマウスカーソル等でのユーザ指示を可能とする。
本願発明を実現するための後述する各種プログラムは、外部メモリ111に記録されており、必要に応じてRAM102にロードされることによりCPU101によって実行されるものである。さらに、上記プログラムの実行時に用いられる定義ファイル及び各種情報テーブル等も、外部メモリ111に格納されており、これらについての詳細な説明も後述する。
図2は、本願発明の情報処理装置100の機能構成の一例を示すブロック図である。
図中、201はツリー初期表示処理部であって、ユーザのログイン後、ツリーコントロールの初期表示を行う機能部である。このツリー初期表示処理部201によって行われる処理の一例については、図3を参照して後述する。
202はノード展開処理部であって、ツリーコントロールのノードの展開処理を行う機能部である。このノード展開処理部202によって行われる処理の一例については、図4を参照して後述する。
203はノード選択処理部であって、ノードの選択変更に伴い実行される処理を行う機能部である。このノード選択処理部によって行われる処理の一例については、図5を参照して後述することにする。
204はスライダー設定処理部であって、スライダーコントロールの設定変更に伴い実行される処理を行う機能部である。このスライダー設定処理部204によって行われる処理の一例については、図6を参照して後述する。
205はスライダー操作時処理部であって、スライダーコントロールが入力部109からの指示により操作された際のツリーコントロールの制御を行うための機能部である。このスライダー操作時処理部205によって行われる処理の一例については、図7を参照して後述する。
206はノード削除処理部であって、ツリーコントロール上のノードの削除処理を行うための機能部である。このノード削除処理部206によって行われる処理の一例については、図8を参照して後述する。
207はノード追加処理部であって、ツリーコントロールにノードを追加する処理を行うための機能部である。このノード追加処理部207によって行われる処理の一例については、図9を参照して後述する。
208はノード格納処理部であって、ツリーコントロール中の展開されているノードの格納処理を行うための機能部である。このノード格納処理部208によって行われる処理の一例については、図10を参照して後述する。
209はツリー再表示処理部であって、ツリーコントロールのルートノードの変更に応じて行われるツリーコントロールの再表示を行うための機能部である。このツリー再表示処理部209によって行われる処理の一例については、図11を参照して後述することにする。
210は子ノード再表示処理部であって、ツリーコントロールの再表示に応じて行われる、子ノードの再表示を行うための機能部である。この子ノード再表示処理部210によって行われる処理の一例については、図12を参照して後述する。
次に、図17から図20を参照して、情報処理装置100によって行われるツリーコントロールの表示制御処理の概要について説明する。尚、これら図で、同一のコントロール、ノード等については同一の符号を付すものとする。
図17に示すように本願発明では、ツリーコントロール1707の表示を行う際に、スライダーコントロール1708をあわせて表示することになる。スライダーコントロール1708は、ツリーコントロールの表示上のルートノードの階層レベルを指定するために用いられる。
この説明では、小分類2ノード1714が現在選択されているフォーカスノードであるものとして説明する。尚、フォーカスノードについては、そのノードがフォーカスノードであることを認識可能なように、ノードを示すアイコンを他のものと異ならせたり、名称部分1705を図に示すように強調表示したりする。フォーカスノード1714のルートノードからのパス情報は、商品/大分類2/中分類3/小分類2と表記できる。
図17ではスライダーコントロールの現在値1706が第一階層指定部1701に設定されている。よって、ツリーコントロール1707には上記パス情報の第一階層である「商品」ノード(ルートノード)1701以下の全てのノード(展開されている部分のみ)が表示されることになる。
ここで、スライダーコントロール1706の現在値1706の設定を第二階層指定部1702に変更すると、情報処理装置100はツリーコントロール1707の表示を図18のように変更する。
図18ではスライダーコントロールの現在値1706が第二階層指定部1702に設定されているので、図17の第一階層である「商品」ノード1711の表示は行わず、第二階層の「大分類2」ノード1712を表示上のルートノードとしてツリーコントロールの表示を行っている。
スライダーコントロールの現在値1706を第三階層指定部1703に設定した場合には図19のように、第四階層指定部1704に設定した場合には図20のようにツリーコントロールを表示制御する。
このような表示制御をさせることで、部分階層を選択して表示する操作を容易に行うことが可能となり、ユーザは注目したい情報を閲覧できるため、情報の視認性が向上する。また、スライダーコントロールの現在値により、どの階層のノードがツリーコントロールの表示上のルートノードとして設定されているかについても、ユーザは容易に確認することができる。
以上が、本願発明における情報処理装置100が行うツリーコントロール表示制御処理の概要である。
図3は、本願発明において情報処理装置100のCPU101によって行われる第1の制御処理の一例を示すフローチャートであり、図2のツリー初期表示処理部201によって行われる処理の一例を示すものである。本処理を行う際に、CPU101は、ツリー初期表示処理部201として情報処理装置100を機能させるためのプログラムを外部メモリ111からRAM102にロードし、そのプログラムの制御に基づいて以下に示す処理を行うこととなる。
まずCPU101は、外部メモリ111に設定されているノードデータ登録部(図13)に登録されているノードデータの中から、最上位階層となる(階層レベルが「0」の)ノードデータを取得する(ステップS301)。
その後、CPU101は最上位階層のノードデータをRAM102上に作成した図14に示すノード情報1400に格納し、図15に示すノード情報マップ1501にそのIDとノード情報の対応を登録する(ステップS302)。
ここで、図13に示すノードデータ登録部のデータ構成について説明する。ノードデータ登録部1300には、ID1301、親ID1302、階層レベル1303、名称1304、及び属性1から属性Nまでの属性情報1305が登録されている。
ID1301には、当該ノードデータを一意に示すID情報が登録されている。親ID1302には、当該ノードデータの親ノードデータであるノードデータのID情報が登録されている。尚、親ノードIDが「0」である場合には、そのノードデータは親ノードデータを有さないことを意味する。階層レベル1300には、当該ノードデータの階層レベルを示すデータが登録されている。階層レベルが「0」の場合には最上位階層のデータであることを示している。階層レベル「0」のノードデータのIDが親ID1302に設定されているノードデータの階層レベルは「1」に、階層レベル「1」のノードデータのIDが親ID1302に設定されているノードデータの階層レベルは「2」が設定されることになる。
名称1304には、当該ノードデータがツリーコントロール上に表示される際にそのノードの名称として使用される文字列が登録されている。属性1305には、当該ノードデータに設定する各種データの属性情報が登録される。
次に、図14を参照して、RAM102上に作成されるノード情報1400のデータ構成の一例を説明する。ノード情報1400は、ID1401、親ID1402、階層レベル1403、名称1404、属性1405、子ノードロード済みフラグ1405、子ノード展開フラグ1407、子ノードIDリスト1408で構成されている。
ID1401〜属性1405には、それぞれ、ノードデータ登録部1300に登録されている当該ノードデータの情報が設定されることになる。子ノードロード済みフラグ1406は、このノード情報で示されるノードデータの子ノードであるノードデータについて既にノード情報1400が生成されているかを示す情報であり、「Y」が設定されている場合には、すでに子ノードがロード済みである(ノード情報1400が作成されている)ことを示している。「N」が設定されている場合には、まだ子ノードがロードされていないことを示している。
子ノード展開フラグ1407、このノードデータが展開状態であるか否かを示すフラグ情報であり、「Y」が設定されている場合には当該ノード情報1400で示されるノードが展開状態であることを示している。「N」が設定されている場合には、子ノードが格納状態であることを示している。
子ノードIDリスト1408には、当該ノード情報1400で示されるノードデータの子ノードであるノードデータのID情報が設定されることになる。
以上が図14に示すノード情報の説明である。
図3の説明に戻る。ステップS302の処理が終了後、CPU101はツリーコントロールのノード追加関数を呼び出して、ノード情報から作成したノードをツリーコントロールに追加する(ステップS303)。このとき、図15に示すノードIDマップ1502にノードとIDの対応を、また同じく図15に示すノードマップ1503にノード情報とノードの対応を登録する。
図15は、本願発明において、情報処理装置100がRAM102上に設定するメモリマップの種類とその設定方法を示す図である。
ノード情報マップ1501は、図13のノードデータ登録部1300に示すノードデータのID1301とその情報を示すノード情報1400の対応関係を格納するメモリマップ情報である。このノードマップ情報1501をIDをもとに検索することにより当該IDに対応するノードマップ情報1400を取得することが可能である。
ノードIDマップ1502は、ツリーコントロール上に表示されているノードとIDとの対応関係を格納するメモリマップ情報である。このノードIDマップ1502を用いることで、ツリーコントロールのノードを取得する取得関数で得られるノードを示す情報から、そのノードが示しているIDを取得することが可能である。
ノードマップ1503は、ノード情報1400とツリーコントロール上に表示されているノードの対応関係を格納するメモリマップ情報である。このノードマップを用いることで、ノード情報1400からツリーコントロール中のノードを取得することが可能である。
以上が図15に示すメモリマップの説明である。
図3の説明に戻る。ステップS303の処理が終了後、外部メモリ111に記憶されている図16に示すデフォルト設定データから、当該ユーザに対応付けられたデフォルトノード情報を取得する(ステップS304)。この際には、ログイン時に用いられたユーザ情報に基づいて、そのユーザ情報に対応するデフォルトノード1602を取得することになる。
図16は、外部メモリ111に記憶されているデフォルト設定データ1600の一例である。図に示すように、デフォルト設定データ1600は、ユーザ情報1601及びデフォルトノード1602より構成されている。ユーザ情報1601には、ユーザを識別するためのユーザID情報が登録されている。デフォルトノード1602には、当該ユーザのデフォルトノードがルートノードからのパス情報として登録されている。尚、このパス情報を示す各種のノードデータのIDが「/」で接続されて登録されている。
以上が図16のデフォルトユーザ設定データ1600の説明である。
図3の説明に戻る。ステップS304の処理を終了後、CPU101は、ステップS305乃至ステップS316の処理を行うことで、デフォルト設定データ1600中の当該ユーザに対応するデフォルトノード1602に設定されているそれぞれのノードIDを順に読み出して、初期ルートノードを特定する。
ステップS305においてCPU101は、初期ルートノードを示す一時ノードポインタ変数(ノードのポインタを格納する変数)を準備し、ステップS303で追加したノードで初期化する。そして、デフォルト設定のノードIDの位置を示す変数N(整数)を準備し、0で初期化する(ステップS306)。
そして、その後、ステップS304による処理で当該ユーザのデフォルト設定データが取得できた/できなかったによって、CPU101は当該ユーザのデフォルト設定データが存在するかどうか判断する(ステップS307)。そして、デフォルト設定データが存在しないと判断した場合(ステップS307でNO)、処理をステップS317に進める。
一方、ステップS307において、CPU101がデフォルト設定データ1600が存在すると判断した場合(ステップS307でYES)、デフォルトノード1602からN番目に区切られたノードIDを取得する(ステップS308)。
そしてその後、CPU101は、Nが1以上かどうか判断する(ステップS309)。尚Nが0の場合にはそのノードはルートノードであることを示している。ステップS309でNが1以上でない(つまりNは「0」)と判断した場合(ステップS309でNO)、CPU101は処理をステップS314に進める。一方、ステップS309でNが1以上であると判断した場合(ステップS309でYES)、CPU101はノード情報マップ1501に当該IDのデータが存在するかどうか判断する(S310)。
ステップS310でノード情報マップ1501に当該IDのノード情報1400が存在しないと判断した場合(S310でNO)、CPU101は処理をステップS317に進める。
一方、ステップS310でノード情報マップ1501に当該IDのデータが存在すると判断した場合(S310でYES)、CPU101はノード情報マップ1501からIDに対応するノード情報1400を取得する(S311)。その後、CPU101はノードマップ1503に当該ノード情報のデータが存在し、かつ親IDが一時ノードのIDに一致するかどうか判断する(S312)。
ステップS312でノードマップ1503に当該ノード情報のデータが存在しないか親IDが一時ノードのIDに一致しないと判断した場合(S312でNO)、CPU101は処理をステップS317に進める。
CPU101が、ステップS312でノードマップ1503に当該ノード情報のデータが存在し、かつ親IDが一時ノードのIDに一致すると判断した場合(S312でYES)、CPU101はノードマップ1503からノード情報に対応するノードを取得し、一時ノードに代入する(ステップS313)。
ステップS309でNOと判断した場合若しくはステップS313の処理が終わると、CPU101は、N番目のノードIDがデフォルトノード1602の末尾であるかどうか判断する(ステップS314)。N番目のノードがデフォルトノード1602の末尾のノードIDでないと判断した場合(ステップS314でNO)、CPU101はNに1を加え(N=N+1)(ステップS315)、一時ノードで示されるノードに対して図4に示すノード展開処理を実行し(ステップS316)、ステップS308に処理を戻す。ノード展開処理の詳細については図4を参照して後述する。
ステップS314でN番目のノードIDがデフォルトノード1602の末尾であると判断した場合(ステップS314でYES)、CPU101はツリーコントロールのノード選択関数(APII)を呼び、一時ノードをフォーカスノードとして選択する(ステップS317)。
そして、そのフォーカスノードの選択に応じてノード選択処理部203によるノード選択処理が行われる(ステップS318)。そしてその後、スライダーコントロールの現在値をN(フォーカスノードの階層レベルと同じ値)に設定する(ステップS319)。そしてその後、ステップS319のスライダー選択処理に応じて、スライダー設定処理部204によるスライダー設定処理が行われる(ステップS320)。このスライダー設定処理の詳細については図6を参照して後述する。
以上が、図3の処理の説明である。なおこの図3の処理の実行結果を図21を参照して説明する。図21(1)はデフォルトノードデータが設定されていないユーザのツリーコントロールの初期表示、(2)は、USER1のツリーコントロールの初期表示を示すものである。図16に示すようにUSER1のデフォルトノードは「1/2/6」であり、ノードの名称で表記した場合には「商品/大分類1/中分類2」(図13のノードデータ登録部1300を参照)となる。図3の処理を行うことにより、デフォルトノードが設定されていないユーザのツリーコントロールは2000に示すように表示され、第一階層の「商品」2102がデフォルトノードとして設定されるので、スライダーコントロールの現在値が第一階層設定部に設定されている(図中2101)。また、フォーカスノードがルートノードになるので、スライダーコントロールを用いて他の階層を選択できない状態で表示されることになる。他の階層のノードをフォーカスノードと設定することで、スライダーコントロールは階層指定を行えるように制御されることになる。
USER1のデフォルトノードとして設定されるのは第三階層の「中分類2」2112となる。であるので、スライダーコントロールの現在値が第三階層設定部に設定されることになる(図中1811)。また、第三階層のノードがフォーカスノードであるので、スライダーコントロールは第三階層まで表示上のルートノードを設定可能な形に設定され、第三階層設定部に現在値が設定される(図中2111)。
以上が図21の説明である。
図4は、本願発明において情報処理装置100のCPU101によって行われる第2の制御処理の一例を示すフローチャートであり、図2のノード展開処理部202によって行われる処理の一例を示すものである。本処理を行う際に、CPU101は、ノード展開処理部202として情報処理装置100を機能させるためのプログラムを外部メモリ111からRAM102にロードし、そのプログラムの制御に基づいて以下に示す処理を行うこととなる。
CPU101は、ノードIDマップ1502から指定ノードに対応するノードIDを取得し、ノード情報マップから当該ノードIDに対応するノード情報を取得する(ステップS401)。その後、外部メモリ111中のノードデータ登録部1300から当該ノード情報1400のID1401を親IDに持つデータを取得する(ステップS402)。
その後、CPU101はステップS402で取得したノードデータをRAM102上に作成したノード情報1400に格納し、ノード情報マップにノードIDとノード情報の対応を登録する(ステップS403)。
そして、CPU101はステップS401で取得した指定ノードのノード情報の子ノードIDリスト1408にステップS402で取得したノードデータのIDを追加する(ステップS404)。
ステップS404の処理が終了後、CPU101は、ツリーコントロールへの子ノード追加関数を呼び出して、ステップS403で取得したノード情報から作成したノードを、指定ノードの子ノードとして追加する。またノードIDマップ1502にノードとIDの対応を、またノードマップ1503にノード情報とノードの対応を登録する(ステップS405)。そしてCPU101は、ツリーコントロールのノード展開関数を呼び出して、指定ノードを展開し(ステップS406)、ステップS401で取得した指定ノードのノード情報の子ノード展開フラグ1407にYを設定する(ステップS407)。また、指定ノードのノード情報の子ノードロード済みフラグ1408にもYを設定する(ステップS408)。
以上が、図2のノード展開処理部202により行われるノード展開処理の詳細である。
図5は、本願発明において情報処理装置100のCPU101によって行われる第3の制御処理の一例を示すフローチャートであり、図2のノード選択処理部203によって行われる処理の一例を示すものである。本処理を行う際に、CPU101は、ノード選択処理部203として情報処理装置100を機能させるためのプログラムを外部メモリ111からRAM102にロードし、そのプログラムの制御に基づいて以下に示す処理を行うこととなる。
まず、CPU101は、ツリーコントロールの選択状態のノード取得関数を呼び出して、選択ノードを取得する(ステップS501)。その後ノードIDマップ1502から選択ノードに対応するIDを取得し、ノード情報マップ1501から当該IDに対応するノード情報1400を取得する(ステップS502)。そしてノード情報1400中の階層レベル1403を取得する(ステップS503)。そして、CPU101は、スライダーコントロールの最大値属性にステップS503で取得した階層レベルを設定する(ステップS504)。
図6は、本願発明において情報処理装置100のCPU101によって行われる第4の制御処理の一例を示すフローチャートであり、図2のスライダー設定処理部204によって行われる処理の一例を示すものである。本処理を行う際に、CPU101は、スライダー設定部204として情報処理装置100を機能させるためのプログラムを外部メモリ111からRAM102にロードし、そのプログラムの制御に基づいて以下に示す処理を行うこととなる。このスライダー設定処理では、ルートノードの候補のうちスライダーコントロールの現在値が示す階層レベルにより1つに決定されるノードをルートノードとしてツリーを表示する処理を行う。
まず、CPU101は、スライダーコントロールの現在位置取得関数で取得できる現在値属性値を取得する(ステップS601)。その後、ツリーコントロールの選択状態ノード取得関数を呼び出して、選択ノードを取得する(ステップS602)。
選択ノードの取得後、CPU101はノードIDマップ1502から選択ノードに対応するIDを取得し、ノード情報マップ1501からIDに対応するノード情報1400を取得する(ステップS603)。
その後、CPU101は、ノード情報1400中の階層レベル1403を取得する(ステップS604)。そしてその後CPU101はステップS605からステップS607の処理において、選択ノードの階層レベルからスライダーコントロールの現在値が示すレベルまで階層をさかのぼって、ツリー表示する階層のルートノードを決定する処理を行う。
CPU101はステップS605において、ルートノードを示す一時ノード(ノードのポインタ)にステップS602で取得した選択ノードを、階層レベルを示す変数N(整数)にステップS604で取得した階層レベルを代入する(ステップS605)。
そして、ステップS606において、CPU101は、NがステップS601で取得したスライダーの現在値に一致するかどうか判断する(ステップS606)。そして、Nがスライダーコントロールの現在値に一致しないと判断した場合には(ステップS606でNO)、ツリーコントロールの親ノード取得関数を呼び出して取得した一時ノードの親ノードを一時ノードに代入し、Nから1を引いて、ステップS606の処理に戻る(ステップS607)。そして、ステップS606及びS607の処理をステップS606でNがスライダーの現在値に一致すると判断する(ステップS607でYES)まで、繰り返すことになる。
ステップS607でYESと判断した場合には、図2のツリー再表示処理部209によるツリー再表示処理を実行する(ステップS608)。このツリー再表示処理の詳細については、図11を参照して詳細に後述する。
以上が、スライダー設定部204によって行われるスライダー設定処理である。
図7は、本願発明において情報処理装置100のCPU101によって行われる第5の制御処理の一例を示すフローチャートであり、図2のスライダー操作時処理部205によって行われる処理の一例を示すものである。本処理を行う際に、CPU101は、スライダー操作時処理部205として情報処理装置100を機能させるためのプログラムを外部メモリ111からRAM102にロードし、そのプログラムの制御に基づいて以下に示す処理を行うこととなる。この処理は、ユーザの入力部109を介してスライダーコントロールに対して操作を行った場合に、CPU101が実行する処理である。スライダー操作時処理では、ツリーコントロールのルートノードを設定する処理ならびにルートノードの候補となるノードの強調表示処理を行う。ただし、スライダーコントロールがドラッグ状態を持たない場合、ドラッグ中の画面表示の変化には対応しないが、CPU101はマウスカーソルが重なっている間に当該処理を実行してもよい。
まず、CPU101はマウス操作により、スライダーコントロールがドラッグ中かどうか判断する(ステップS701)。
ステップS701の判断処理においてドラッグ中でないと判断した場合(ステップS701でNO)、本処理を終了する。一方、ステップS701の判断処理でドラッグ中と判断した場合(ステップS701)、CPU101はスライダーコントロールの現在値属性の値を取得し(ステップS702)、さらにツリーコントロールの選択ノード取得関数を呼び出して、選択ノードを取得する(ステップS703)。また、CPU101はスライダーコントロールの最大値属性の値を取得する(ステップS704)。
その後、ステップS705からステップS711の処理において、選択ノードから順に階層をさかのぼってスライダーコントロールの現在値に対応するノードまでを新たなルートノードの候補として強調表示する処理を行う。
CPU101は、強調表示ノードを示す一時ノードにステップS703で取得した選択ノード、階層レベルを示す変数NにステップS704で取得したスライダーコントロールの最大値を代入する(ステップS705)。
そしてその後、CPU101は、一時ノードの表示アイコンを他表示アイコンと異ならせることで、表示上のルートノードとなる可能性があるノードを識別可能に表示制御する(ステップS706)。アイコンの表示を異ならせる以外の方法、例えば、名称の表示色を変更する、名称表示位置の背景の色を他のノードと異ならせるという方法を採用しても勿論構わない。そしてその後、CPU101はスライダーコントロールのドラッグ中の値を取得する(ステップS707)。そしてCPU101はNがスライダーコントロールのドラッグ中の値に一致するかどうか判断する(ステップS708)。
ステップS708の処理において、Nがスライダーコントロールのドラッグ中の現在属性値に一致すると判断した場合(ステップS708でYES)、CPU101は一時ノードの表示アイコンを他のステップS706で設定したアイコンと異ならせる表示制御を行う(ステップS709)。表示アイコンを異ならせる以外の方法で識別可能に表示制御しても勿論構わない。一致しないと判断した場合には(ステップS708でNO)、処理をステップS710に進める。
そしてその後、ステップS710の処理において、CPU101はNがスライダーの現在値に一致するかどうか判断する。Nがスライダーの現在値に一致しないと判断した場合(ステップS710でNO)、CPU101はツリーコントロールの親ノード取得関数を呼び出して取得した一時ノードの親ノードを取得し、取得した親ノードを一時ノードに代入し、Nから1を引いて(ステップS711)、ステップS706〜ステップS710の処理を繰り返す。
ステップS710において、CPU101が、変数Nの値がスライダーコントロールの現在値に一致すると判断した場合(ステップS710でYES)、CPU101はマウスがドラッグ中かどうか判断する(S712)。ステップS712でドラッグ中であると判断した場合(ステップS712でYES)、CPU101は処理をステップS702に戻し、ステップS702からステップS712の処理を繰り返す。
ステップS712でドラッグ中でないと判断した場合(ステップS712でNO)、図6に示すスライダー設定処理(ステップS713)を実行し本処理を終了する。
以上が図2のスライダー操作時処理部205によって行われる処理である。
図22を参照して、スライダー設定処理部205による処理が行われている際のツリーコントロールの表示について説明する。
図22では、小分類2ノード2202−4がフォーカスノードとして設定されている。そして、スライダーコントロールの現在値の修正を行う場合の処理を説明する。
小分類2ノード2202−4のパス情報は、「商品/大分類2/中分類3/小分類2」であり、スライダーコントロールの現在値を2201−1に設定した場合には、第一階層である商品ノード2202−1が、2201−2に設定した場合には、第二階層である大分類2ノード2202−2が、2201−3に設定した場合には、第三階層である中分類3ノード2202−3が、2201−4に設定した場合には、第四階層である小分類2が表示上のルートノードとして設定されることになる。そしてそれらノードのアイコンは、図7のステップS706の処理により、他のノードとは異なっている(☆が設定されている)。
更に、中分類3ノード2202−3については、ドラッグ中のスライダーコントロールの現在値が2201−3であるので、ドラッグ処理をそこで終了するとそのノードが表示上のルートノードとして設定される。そのようなノードが図7のステップS708の処理でYESと判断されるノードになる。よって、中分類2ノード2202−3については、ステップS706で設定されたノードアイコンとはさらに異なるように表示制御がされている(★が設定されている)。
このように表示制御することで、階層指定による部分ツリーの表示の際に、どのノードが表示上のルートノードとして設定される可能性があるかをユーザは容易に認識可能となる。以上が図22の説明である。
図8は、本願発明において情報処理装置100のCPU101によって行われる第6の制御処理の一例を示すフローチャートであり、図2のノード削除処理部206によって行われる処理の一例を示すものである。本処理を行う際に、CPU101は、ノード削除処理部206として情報処理装置100を機能させるためのプログラムを外部メモリ111からRAM102にロードし、そのプログラムの制御に基づいて以下に示す処理を行うこととなる。本処理は、ユーザのマウス操作等によりツリーコントロール中のノードに削除指示の入力がされた場合に行われることになる。
CPU101は、ツリーコントロールの選択ノード取得関数を呼び出して、削除対象として指定されたノードを取得する(ステップS801)。そして、ステップS801で取得したノードをもとにしてノードIDマップ1502から削除対象ノードに対応するIDを取得し、さらにそのIDを用いてノード情報マップ1501からIDに対応するノード情報1400を取得する(ステップS802)。
その後、CPU101はステップS802で取得したノード情報1400から階層レベル1403を取得する(ステップS803)。そして、ツリーコントロールの選択ノード取得関数を呼び出して、選択ノードを取得する(ステップS804)。
そしてその後CPU101は、ステップS804で取得した選択ノードに対応するIDはノードIDマップ1500から取得し、ノード情報マップ1501から選択ノードに対応するノード情報1400を取る(ステップS805)。そして、ステップS805で取得したノード情報1400から階層レベル1403を取得する(ステップS806)。
ステップS806の処理が終了後、CPU101は、選択ノードを示す一時ノードに選択ノード、階層レベルを示す変数Nに選択ノードの階層レベルを代入する(ステップS807)。そして、その後、ステップS808の処理を行うことにより、選択ノードが削除対象ノード以下の階層に含まれるかどうかを判断することになる。
まず、CPU101はNがステップS803で取得した削除対象ノードの階層レベルより大きいかどうか判断する(ステップS808)。そして、Nが削除対象ノードの階層レベルより大きいと判断した場合(ステップS808でYES)、CPU101はツリーコントロールの親ノード取得関数を呼び出して取得した一時ノードの親ノードを一時ノードに代入し、Nから1を引いて(ステップS809)、処理をステップS808に戻す。
一方、ステップS808でNが削除対象ノードの階層レベルより大きくないと判断した場合(ステップS808でNO)、CPU101は一時ノードが削除対象ノードに一致するかどうか判断する(ステップS810)。
ステップS810で一時ノードが削除対象ノードでないと判断した場合(ステップS810でNO)、CPU101はツリーコントロールのノード削除関数を呼び出して削除対象ノードを削除し(ステップS818)、処理を終了する。尚、この際に、削除した削除対象ノード及びその削除対象ノード以下の階層のノードに関するマップ情報をノードマップ情報1501、ノードIDマップ1502、及びノードマップ1503から削除するとともに、それらノードに関するノード情報1400も削除することになる。また、ユーザのデフォルトデータに削除ノードが含まれている場合には、削除ノード以下のパス情報を削除する。
ステップS810で一時ノードが削除対象ノードであると判断した場合(ステップS810でYES)、CPU101はツリーコントロールの親ノード取得関数を呼び出して取得した一時ノードの親ノードを一時ノードに代入し、Nから1を引く(ステップS811)。
その後、ツリーコントロールのノード削除関数を呼び出して削除対象ノードを削除する(ステップS812)。尚、この際に、削除した削除対象ノード及びその削除対象ノード以下の階層のノードに関するマップ情報をノードマップ情報1501、ノードIDマップ1502、及びノードマップ1503から削除するとともに、それらノードに関するノード情報1400も削除することになる。ユーザのデフォルトデータに削除ノードが含まれている場合には、削除ノード以下のパス情報を削除する。
ステップS812の処理終了後、ノード選択関数を呼び出して一時ノードに設定されているノードをフォーカスノードに設定する(ステップS813)。そして、その後、ステップS813のフォーカスノード設定に応じてノード選択処理部203によるノード選択処理が行われる(ステップS814)。
そして、ステップS814の処理が終了後、CPU201は、スライダーコントロールの現在値にNを設定する(ステップS815)。
そして、その後、ステップS815のスライダー設定処理に応じて、スライダー設定処理部204によるスライダー設定処理が行われる(ステップS816)。
以上が図2のノード削除処理部206によって行われる処理である。
図9は、本願発明において情報処理装置100のCPU101によって行われる第7の制御処理の一例を示すフローチャートであり、図2のノード追加処理部207によって行われる処理の一例を示すものである。本処理を行う際に、CPU101は、ノード追加処理部207として情報処理装置100を機能させるためのプログラムを外部メモリ111からRAM102にロードし、そのプログラムの制御に基づいて以下に示す処理を行うこととなる。本処理は、ユーザのマウス操作によりツリーコントロール中のノードに新たな子ノードの追加指示の入力がされた場合に行われることになる。
まず、CPU101は、ツリーコントロールの選択ノード取得関数を呼び出して、新たなノードの追加先となるノードを取得する(ステップS901)。その後、ノードIDマップ1502から追加先のノードに対応するIDを取得し、その後ノード情報マップ1501からIDに対応するノード情報1400を取得する(ステップS902)。
そしてその後、CPU101は新たに作成するノードをノードデータ登録部1300に登録する。追加するノードのデータは、たとえば画面からユーザからの入力指示を受け付けて設定することになる。このときIDは一意になるようにし、そのデータの親IDはステップS902で取得したIDとする。そして、新たに追加したノードデータに基づいてRAM102上に当該ノードデータに対応するノード情報1400作成し、そのID1401、親ID1402、階層レベル1403、名称1404及び属性1405を設定する(ステップS903)。そしてその後、CPU101はノード情報マップ1501にIDと追加するノード情報の対応を登録する(ステップS904)。
また、CPU201はステップS902で取得したノード情報の子ノードIDリスト1408に、ステップS903で新たに作成したノードのIDを追加する(ステップS905)。そして、ツリーコントロールの子ノード追加関数を呼び出して、ステップS903で取得したノード情報から新たに作成したノードを、追加先ノードの子ノードとして追加する(ステップS906)。またノードIDマップ1502にノードとIDの対応を、またノードマップ1503にノード情報とノードの対応を登録する。
以上が図2のノード追加処理部207によって行われる処理である。
図10は、本願発明において情報処理装置100のCPU101によって行われる第8の制御処理の一例を示すフローチャートであり、図2のノード格納処理部208によって行われる処理の一例を示すものである。本処理を行う際に、CPU101は、ノード格納処理部208として情報処理装置100を機能させるためのプログラムを外部メモリ111からRAM102にロードし、そのプログラムの制御に基づいて以下に示す処理を行うこととなる。本処理は、ユーザのマウス等の入力部109操作によりツリーコントロール中の指定ノードの子ノードの格納指示の入力がされた場合に行われることになる。
まずCPU101は、ツリーコントロールの格納対象ノード取得関数を呼び出して、子ノードを格納する対象となるノードを取得する(ステップS1001)。そしてCPU101はステップS1001で取得したノードをもとにしてノードIDマップ1502から子ノードの格納対象となるノードに対応するIDを取得し、ノード情報マップ1501からIDに対応するノード情報を取得する(ステップS1002)。そしてその後、CPU101はノード情報の子ノード展開フラグにNを代入する(ステップS1003)。その後にCPU101は、ツリーコントロールの格納関数を呼び出して、格納するノードの子ノードを格納する(ステップS1004)。
以上が、図2のノード格納処理部208によって行われる処理である。
図11は、本願発明において情報処理装置100のCPU101によって行われる第9の制御処理の一例を示すフローチャートであり、図2のツリー再表示処理部209によって行われる処理の一例を示すものである。本処理を行う際に、CPU101は、ツリー再表示処理部209として情報処理装置100を機能させるためのプログラムを外部メモリ111からRAM102にロードし、そのプログラムの制御に基づいて以下に示す処理を行うこととなる。本処理はスライダーコントロールの指定により、表示上のルートノードの変更要求が行われた際に行う処理である。
CPU101は、ステップS1101からステップS1105において再表示後にツリーコントロールの表示状態を再現するためにルートノードから選択ノードの経路情報を選択ノードからルートノードまでさかのぼって取得する処理を行う。
まず、ステップS1101においてCPU101は、ツリーコントロールの選択ノード取得関数を呼び出して、選択ノードを取得する(ステップS1101)。そして、CPU101は表示ノードを示す一時ノードにステップS1101で取得した選択ノードを代入する(ステップS1102)。そして、CPU202はパス情報を格納する文字列であるID列の先頭に一時ノードのIDを挿入する(ステップS1103)。このとき区切り文字(例えば“/”)などを用いてそれぞれのIDを区切るよう文字列を生成する。
CPU101は一時ノードが指定ノードに一致するかどうか判断する(ステップS1104)。ステップS1104の判断処理で、CPU101が、一時ノードが指定ノードに一致しないと判断した場合(ステップS1104でNO)、ツリーコントロールの親ノード取得関数を呼び出して取得した一時ノードの親ノードを一時ノードに代入し(ステップS1105)、処理をステップS1105に戻す。
ステップS1104の判断処理で、CPU101が、一時ノードが指定ノードに一致すると判断した場合には(ステップS1104でYES)、CPU101は指定ノードのIDを取得し、ツリーコントロールのノードを全て削除する(ステップS1106)。これに伴い、ノードIDマップ1502とノードマップ1503の要素が不要になるため全て削除する。
そしてその後、ステップS1106で取得したIDをもとにノード情報マップ1501から指定ノードのIDに対応するノード情報を取得する(ステップS1107)。
CPU101はツリーコントロールのノード追加関数を呼び出して、ステップS1107で取得したノード情報から作成したノード追加する。またノードIDマップ1502にノードとIDの対応を、ノードマップ1503にノード情報とノードの対応を登録する処理も併せて行う(ステップS1108)。
そして、その後、ステップS1108で追加したノードに対して図2の子ノード再表示処理部210による子ノード再表示処理が行われる(ステップS1109)。この処理については、図12を参照して後述する。
ステップS1109の処理が終了後、CPU101は、ステップS1110からステップS1118の処理を行うことで、ステップS1101からS1005で取得したパス情報を元に、ツリーコントロールの再表示後の選択ノードを取得する処理を行う。通常、当該処理が呼び出される際の選択ノードとなる。
まず、CPU101は選択ノードを示す一時ノードに指定ノードを、ID列のIDの位置を示すNに初期値として0を代入する(ステップS1110)。そして、ID列からN番目のIDを取得する(ステップS1111)。そしてその後、ステップS1112において、Nの値として1以上の値が設定されているかを判断し、Nに1より小さい値(すなわち0)が設定されている場合には(ステップS1112でNO)処理をステップS1117に進める。
一方、ステップS1112の判断処理において、Nが1以上であると判断した場合(ステップS1112でYES)、CPU101はノード情報マップ1501に当該IDのデータが存在するかどうか判断する(ステップS1113)。
ステップS1113の判断処理において、CPU101が、ノード情報マップ1501に当該IDのデータが存在しないと判断した場合(ステップS1113でNO)、CPU101は処理をステップS1119に進める。
ステップS1113の判断処理において、ノード情報マップ1501に当該IDのデータが存在すると判断した場合(ステップS1113でYES)、ノード情報マップ1501から当該IDに対応するノード情報を取得する(ステップS1114)。
そして、CPU101はノードマップ1503に当該ノード情報のデータが存在し、かつ親IDが一時ノードのIDに一致するか否かを判断する(ステップS1115)。
ステップS1115の判断処理において、データが存在しないか親IDが一時ノードのIDに一致しないと判断した場合(ステップS1115でNO)、CPU101は処理をステップS1119に進める。
・ステップS1115の判断処理において、データが存在し、かつ親IDが一時ノードのIDに一致すると判断した場合(S1115でYES)、CPU101はノードマップ1503からノード情報に対応するノードを取得し、その取得したノードを一時ノードに代入する(ステップS1116)。
CPU101はその後、ステップS1111で取得したIDがID列の最後の要素かどうか判断する(ステップS1117)。
・ステップS1117でIDが最後の要素でないと判断した場合(ステップS1117でNO)、CPU101はNに1追加して(N=N+1)、処理をステップS1111に戻す。
一方、ステップS1117の判断処理で、IDが最後の要素であると判断した場合(S1117でYES)、CPU101はツリーコントロールのノード選択関数を呼び出し、一時ノードを選択することで、一時ノードとなっているノードにフォーカスを設定する(ステップS1119)。
以上が図2のツリー再表示処理部209によって行われる処理の説明である。
図12は、本願発明において情報処理装置100のCPU101によって行われる第10の制御処理の一例を示すフローチャートであり、図2の子ノード再表示処理部210によって行われる処理の一例を示すものである。本処理を行う際に、CPU101は、子ノード再表示処理部210として情報処理装置100を機能させるためのプログラムを外部メモリ111からRAM102にロードし、そのプログラムの制御に基づいて以下に示す処理を行うこととなる。本処理は図11のステップS1109に対応する。
まず、CPU101は、ノードIDマップ1502から指定ノードに対応するIDを取得し、ノード情報マップ1501からIDに対応するノード情報1400を取得する(ステップS1201)。そして、ステップS1201で取得したノード情報1400の子ノードロード済みフラグ1406にYが設定されているかどうかを判断する(ステップS1202)。
ステップS1202の判断処理で、子ノードロード済みフラグ1406にYが設定されていないと判断した場合(ステップS1202でNO)、CPU101は本処理を終了する。
一方、ステップS1202の判断処理で、子ノードロード済みフラグにYが設定されていると判断した場合(S1202でYES)、CPU101はノード情報1400の子ノードIDリスト1408を取得する(ステップS1203)。そしてその後、ノード情報マップ1501からステップS1203で取得した子ノードIDに対応するノード情報を取得し、ツリーコントロールの子ノード追加関数を呼び出して、ノード情報から作成したノードを指定ノードの子ノードとして追加する(ステップS1204)。またノードIDマップ1502にノードとIDの対応を、またノードマップ1503にノード情報1400とノードの対応を登録する。
そして、その後ステップS1201で取得したノード情報1400中の子ノード展開フラグ1407にYが設定されているかを判断する(ステップS1205)。この判断処理の結果、子ノードフラグ1407にYが設定されていないと判断した場合には、CPU101は、本処理を終了する。
一方、ステップS1205で子ノード展開フラグがYであると判断した場合には(ステップS1205)、CPU101はツリーコントロールのノード展開関数を呼び出して、指定ノードを展開する(ステップS1206)。
その後、CPU101は子ノードの数を示すカウンタ変数Nを示す変数Nに1を代入し(ステップS1207)、全ての子ノードに対してステップS1208からステップS1211の処理を行うことになる。
CPU101は再表示対象ノードを示す一時ノードにステップS1204で追加した子ノードのうちN番目の子ノードを代入する(ステップS1208)。
CPU101は一時ノードに対して図12の子ノード再表示処理を実行する(ステップS1209)。
CPU101はN番目の子ノードがステップS1204で追加した子ノードの最後の子ノードかどうか判断する(S1210)。ステップS1210で、N番目の子ノードが最後の子ノードでないと判断した場合(ステップS1210でNO)、CPU101はNに1を加え(N=N+1)(S1211)、処理をステップS1208に戻す。
ステップS1210でN番目の子ノードが最後の子ノードであると判断した場合(ステップS1210でYES)、CPU101は本処理を終了する。
以上が、図2の子ノード再表示処理部210によって行われる処理の一例である。
以下、図23に示すメモリマップを参照して本願発明に係る情報処理装置100で読み取り可能なデータ処理プログラムの構成について説明する。
図16は、本願発明に係る情報処理装置で読み取り可能な各種データ処理プログラムを格納する記録媒体(記憶媒体)のメモリマップを説明する図である。
なお、特に図示しないが、記録媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報,作成者等も記憶され、かつ、プログラム読み出し側のOS等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、インストールするプログラムやデータが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
本実施形態における図3乃至図12に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、CD−ROMやフラッシュメモリやFD等の記録媒体により、あるいはネットワークを介して外部の記録媒体から、プログラムを含む情報群を出力装置に供給される場合でも本願発明は適用されるものである。
以上のように、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読出し実行することによっても、本願発明の目的が達成されることは言うまでもない。
この場合、記録媒体から読み出されたプログラムコード自体が本願発明の新規な機能を実現することになり、そのプログラムコードを記憶した記録媒体は本願発明を構成することになる。
プログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,DVD−ROM,磁気テープ,不揮発性のメモリカード,ROM,EEPROM,シリコンディスク等を用いることができる。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
また、本願発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。また、本願発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本願発明を達成するためのソフトウェアによって表されるプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本願発明の効果を享受することが可能となる。
さらに、本願発明を達成するためのソフトウェアによって表されるプログラムをネットワーク上のサーバ,データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本願発明の効果を享受することが可能となる。
なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本願発明に含まれるものである。