(57)【要約】【課題】  コンテナ内に挿入されるデータがある値を含む場合、そのコンテナ自身とそのコンテナに関連するオブジェクトを同時に消すことができず、内容が関連するオブジェクトがドキュメント上に残ってしまっていた。【解決手段】  あるコンテナに挿入されるデータが、ある値、あるいは空である場合において、そのコンテナと関連性のある別のコンテナ、あるいはオブジェクトを非表示にすることが出来ることを特徴とする自動レイアウトシステム。【選択図】        図１７
2007048198.tif 000002
【特許請求の範囲】
【請求項１】
パーソナルコンピュータ等の情報処理装置からなるシステムであって、コンテナ領域の中にデータベースあるいはローカルに保存されたデータから、テキストおよびイメージ等のデータを挿入してドキュメントを作成する際に、プレビュー時にテキストおよびイメージのサイズにあわせて、コンテナのサイズを変更することが可能であり、さらにコンテナ間の関連を設定することにより、その間隔をある程度保って変更することが可能である自動レイアウトシステムにおいて、
コンテナを作成する手段と、
リンクを作成する手段と、データの量によってコンテナのサイズ、位置を変更し最適なレイアウトを計算する手段と、
オブジェクトに割り付けられた条件によって自分以外のオブジェクトを非表示にする条件式を作成する手段と、
オブジェクトのプロパティでオブジェクト非表示時の原点を指定する手段を有することを特徴とする自動レイアウトシステム。
【請求項２】
請求項１記載の自動レイアウトシステムにおいて、オブジェクト非表示時の原点を自動的に決定する手段を有することを特徴とする自動レイアウトシステム。
【請求項３】
請求項１記載の自動レイアウトシステムにおいて、原点が設定された複数のコンテナがリンクされている場合に、その集約点を設定する手段を有することを特徴とする自動レイアウトシステム。
【請求項４】
請求項１記載の自動レイアウトシステムにおいて、非表示にしたオブジェクトの領域を他のオブジェクトが使用できる手段を有することを特徴とする自動レイアウトシステム。
【請求項５】
請求項１記載の自動レイアウトシステムにおいて、コンテナ間に張られたリンクの長さを一定量あるいは一定比率でサイズ変更できる手段を有することを特徴とする自動レイアウトシステム。
【請求項６】
請求項１記載の自動レイアウトシステムにおいて、データベースのレコードを選択／変更する手段と各レコード時のレイアウトのプレビューを表示する手段を有することを特徴とする自動レイアウトシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は自動レイアウトシステムに関し、特に自動レイアウトシステムにおける装置／媒体、およびレイアウト手法に関するものである。
【背景技術】
【０００２】
近年、商品の多品種化で商品ライフが短くなっていること、インターネット利用の普及による消費者のカスタマイズサービス指向などの要因からＣＲＭ（Ｃｕｓｔｏｍｅｒ  Ｒｅｌａｔｉｏｎｓｈｉｐ  Ｍａｎａｇｅｍｅｎｔ）、Ｏｎｅ−ｔｏ−Ｏｎｅマーケティングの必要性が注目されている。これらの手法により顧客満足度を高め、顧客の開拓や囲い込みを目指すものである。
【０００３】
Ｏｎｅ−ｔｏ−Ｏｎｅマーケティングはデータベース・マーケティングの一種で、顧客の年齢、性別、趣味、嗜好、購買履歴等の個人属性情報をデータベース化し、その内容を分析、顧客のニーズに合った提案を行うものであり、その代表的な手法としてバリアブルプリントが挙げられる。ここ最近ではＤＴＰ（デスクトップパブリッシング）技術の進展とデジタル印刷装置の普及に伴って、文書を顧客毎にカスタマイズして出力するバリアブルプリントシステムが開発され、顧客毎に異なる量のコンテンツを最適にレイアウトすることが求められるようになった。
【０００４】
従来、バリアブルプリントシステムは、ドキュメント上にコンテナ等によりレイアウトを作成し、データベースとレイアウトを関連付けることにより達成していた。しかし、テキストおよびイメージのコンテナのサイズが固定であったため、データベース内のデータがコンテナに挿入されたときに、データ量がコンテナサイズより多いとテキストのオーバーラップおよびイメージのクリッピングが発生し、またデータ量がコンテナサイズより小さいと隙間が空いてしまった。
【０００５】
その問題を解決するために、自動レイアウトシステムが発明されている。自動レイアウトシステムはテキストおよびイメージのコンテナサイズを可変に設定することが可能である。この自動レイアウトシステムを実現しているソフトウェアとしてはＰａｇｅｆｌｅｘ社のＰａｇｅｆｌｅｘ等があり、コンテナのサイズを可変とし、差し込まれるデータ量に応じてコンテナのサイズを変更する。またテキストの場合において固定のコンテナサイズ内に入りきらないデータが挿入された場合、テキストのフォントサイズを縮小し、コンテナ内に全てのテキストを表示する技術なども存在する。
【０００６】
しかしコンテナのサイズが大きくなった場合、同ドキュメント上の他のコンテナに重なってしまう問題が発生する。またフォントサイズを調節する場合はテキストの量が大きい場合、フォントサイズが小さくなりすぎる問題が発生する。
【０００７】
それを解決するための更なる自動レイアウトの技術としては、あるコンテナのサイズが大きくなった場合、隣接したコンテナのサイズを小さくする技術が特許文献１の「レイアウトデザイン装置」に開示されている。
【特許文献１】特開平７−１２９６５８号公報（００４９、図８）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した従来の技術ではそうしたドキュメントのレイアウトにおいて、コンテナ内に挿入されるデータがある値を含む場合、そのコンテナ自身とそのコンテナに関連するオブジェクトを同時に消すことができず、内容が関連するオブジェクトがドキュメント上に残ってしまっていた。
【０００９】
また上記データ挿入時にデータ自体が空であった場合もケースの１つとして考えられるが、その場合も関連するオブジェクトを非表示にしたい。しかしながら、上述した従来の技術では空のデータが挿入されたコンテナのみが非表示になり、その他の関連するオブジェクトはデータを表示しているため、ドキュメント上に本来表示して欲しくないデータを表示してしまう場合が発生し、ドキュメントの整合性がとれないケースが起きていた。
【００１０】
また非表示にしたコンテナの領域を使うことができなかったため、ドキュメントの領域を有効に使用してレイアウトすることができなかった。
【００１１】
例えば上下方向に３つのコンテナが並んで配置されている状態で（上からオブジェクトＡ、コンテナＢ、オブジェクトＣとする）、中央に配置されたコンテナＢにある値のデータが挿入された場合、コンテナＢを非表示にしたいのだが、そのような設定をすることが現状出来ない。よってコンテナＢだけでなく、内容が関連するオブジェクトＡ、オブジェクトＣも非表示にしたいのだが、そのような動作もすることができない。
【００１２】
もしコンテナＢに空のデータが挿入された場合、内容が関連するオブジェクトＡ、オブジェクトＣも消したいが、そのような動作ができないため、結果としてオブジェクトＡ、オブジェクトＣはドキュメント上に残ってしまう。そうすると、ドキュメント上に整合性の取れないレイアウトが作成されてしまっていた。また非表示にしたオブジェクトのドキュメント上の領域を、他の関連性のないコンテナ、あるいはオブジェクトが使用することが出来なかったため、見栄えの悪いレイアウトが作成されてしまうおそれがあった。
【００１３】
本発明は、以上の点に着目して成されたもので、あるコンテナに挿入されるデータが、ある値、あるいは空である場合において、そのコンテナと関連性のある別のコンテナ、あるいはオブジェクトを非表示にすることができる自動レイアウトシステムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決するために、本発明は以下の構成を備える。
【００１５】
パーソナルコンピュータ等の情報処理装置からなるシステムであって、コンテナ領域の中にデータベースあるいはローカルに保存されたデータから、テキストおよびイメージ等のデータを挿入してドキュメントを作成する際に、プレビュー時にテキストおよびイメージのサイズにあわせて、コンテナのサイズを変更することが可能であり、さらにコンテナ間の関連を設定することにより、その間隔をある程度保って変更することが可能である自動レイアウトシステムにおいて、コンテナを作成する手段と、リンクを作成する手段と、データの量によってコンテナのサイズ、位置を変更し最適なレイアウトを計算する手段と、オブジェクトに割り付けられた条件によって自分以外のオブジェクトを非表示にする条件式を作成する手段と、オブジェクトのプロパティでオブジェクト非表示時の原点を指定する手段を有することを特徴とする。
【発明の効果】
【００１６】
本発明によって、あるコンテナに挿入されるデータがある値、あるいは空である場合において、そのコンテナと関連性のある別のコンテナ、あるいはオブジェクトを非表示にすることが出来る。これにより、ドキュメント上でのレイアウト内容の整合性をとることができる。
【００１７】
またその非表示にしたスペースを別の関係のないコンテナ、あるいはオブジェクトが利用することが可能であり、これによりドキュメント上で無駄なスペースを作ることなくレイアウトでき、より自由度の高い、見栄えを向上させたドキュメントを作成できる。
【００１８】
またコンテナサイズの可変領域が広がることで、よりデータ量あるいはサイズに合った最適なコンテナサイズでレイアウトが可能となり、ユーザの望んだレイアウト結果を提供することが出来る。例えば表などにおいて、表内の横に並んだ（行方向の）複数のコンテナに“項目名（固定データ）”とその“実体（実データ）”のＤＢフィールドが関連付けられている場合、“実データ”が空だった時は“項目名”に内容（コンテンツ）が入っていたとしても、“項目名”を表示せず、“実データ”を割り付けたコンテナと“項目名”を割り付けたコンテナは同時に表示しないことで、表をコンテンツに合わせて動的に作成することが出来る。
【００１９】
また上記特価の例のように、あるコンテナに複数の意味的に関連するコンテナがある場合、そのコンテナの“実データ”が空であった場合は、それら関連するコンテナも消すことが出来る。さらにそれによってそれらのコンテナが配置されていた領域を活用することが出来る。
【発明を実施するための最良の形態】
【００２０】
本発明の実施例を適用するのに好適である実施例について説明を行う。
【実施例１】
【００２１】
本発明の実施例を説明する前に、本発明を適用可能なシステム構成、およびアプリケーション構成について説明する。
【００２２】
＜システム構成図＞
図１Ａはバリアブルデータドキュメントを印刷するシステム１００を図示している。この中で示された方法は図１Ｂで詳しく説明される汎用コンピュータモジュール１０１で実践される。
【００２３】
図１Ｂで記述されるプロセスは、コンピュータモジュール１０１内で実行され、システム１００上で実施可能となるレイアウト編集アプリケーションプログラム１２１のようにソフトウェアの全体、あるいは一部分で実行される。特にレイアウト編集や必然的に起こる印刷のステップはコンピュータ１０１によって実行されるソフトウェアの指示によって実施される。
【００２４】
ソフトウェアは例えば以下に記述されるような記憶装置を含むコンピュータの可読媒体に格納される。ソフトウェアはコンピュータの可読媒体からコンピュータにロードされ、コンピュータ１０１によって実行される。そのようなソフトウェアや媒体に記録されたコンピュータプログラムを持つコンピュータの可読媒体はコンピュータプログラム製品である。そのコンピュータでのコンピュータプログラム製品の使用は望ましくもドキュメントのレイアウト編集やバリアブルデータ印刷に有利な装置をもたらす。
【００２５】
コンピュータモジュール１０１はキーボード１３２やマウス１３３のようなポインティングデバイスなどの入力装置をつなぎ、ディスプレイ装置１４４や状況に応じてはローカルプリンタ１４５を含む出力装置を連結する。入力／出力インターフェース１３８はコンピュータモジュール１０１をネットワーク接続１０７から接続してシステム１００の他のコンピュータ装置につなげることができる。そのネットワーク接続１０７の典型はローカルエリアネットワーク（ＬＡＮ）、あるいはワイドエリアネットワーク（ＷＡＮ）である。
【００２６】
コンピュータモジュール１０１は典型的に少なくとも１つのプロセッサーユニット１３５、例えば半導体のランダムアクセスメモリ（ＲＡＭ）やリードオンリーメモリ（ＲＯＭ）から構成されるメモリユニット１３６、ビデオインタフェース１３７を含むＩＮＰＵＴ／ＯＵＴＰＵＴ（Ｉ／Ｏ）インターフェース、キーボード１３２やマウス１３３のためのＩ／Ｏインターフェース１４３を含んでいる。
【００２７】
記憶装置１３９は典型的にハードディスクドライブ１４０やフロッピー（登録商標）ディスクドライブ１４１を含んでいる。図には示されていないが磁気テープドライブもまた使用される可能性がある。ＣＤ−ＲＯＭドライブ１４２は不揮発性のデータソースとして提供される。コンピュータモジュール１０１はＧＮＵ／ＬＩＮＵＸやマイクロソフトウィンドウズ（登録商標）のようなオペレーションシステムや、典型的にはオペレーションシステムに従う形で、あるいは関連のある技術で知られているもので形成されたコンピュータシステムの常套的なオペレーションモードによる方法によって、相互接続バス１３４を介して通信を行うコンピュータモジュール１０１のコンポーネント１３５から１４３を利用する。
【００２８】
図に記述した配置コンピュータの例ではＩＢＭ互換ＰＣやＳＵＮ社のＳｐａｒｃ  Ｓｔａｔｉｏｎ、あるいはそれらを含んだコンピュータシステムが考えられる。
【００２９】
レイアウトアプリケーションプログラム１２１は典型的にハードディスクドライブ１４０に常駐し、プロセッサ１３５により実行、読み込み、コントロールされる。プログラム１２１の媒介記憶装置とネットワーク１０７からフェッチされるデータはハードディスクドライブ１４０に呼応して半導体メモリ１３６を使用する。いくつかのインスタンスではアプリケーションプログラム１２１がＣＤ−ＲＯＭやフロッピー（登録商標）ディスク上でエンコードされ、対応するドライブ１４２や１４１を通じて読み込まれユーザに提供される。あるいはもう一つの方法としてアプリケーションプログラム１２１はネットワーク接続１０７からユーザによって読み込まれるかもしれない。
【００３０】
さらにソフトウェアは磁気テープまたはＲＯＭまたは集積回路、光磁気ディスクまたは無線またはコンピュータモジュール１０１とその他のデバイス間の赤外線通信、ＰＣＭＣＩＡカードのようなコンピュータ可読カード、そしてＥメール通信やＷＥＢサイト上の記録情報を持つインターネットやイントラネットを含む、他の適当な大きさのコンピュータ可読媒体からコンピュータモジュール１０１内にロードされる可能性もある。前述は単に関連するコンピュータ可読メディアの模範である。他のコンピュータ可読媒体も使用される可能性はある。
【００３１】
またレイアウト編集と名づけられたアプリケーション１２１はバリアブルデータ印刷（ＶＤＰ）を行うよう指示し、２つのソフトウェアコンポーネントを含んでいる。これらのうち１つめのコンポーネントはレイアウトエンジン１０５であり、これは長方形の範囲内で与えられた制限やサイズによって矩形と線の位置を計算するためのソフトウェアコンポーネントである。
【００３２】
２つめのコンポーネントであるユーザインターフェース１０３はユーザにドキュメントテンプレートを作成させ、ドキュメントテンプレート内でデータソースと関連付けるメカニズムを提供する。ユーザインターフェース１０３とレイアウトエンジン１０５はコミュニケーションチャネル１２３を介して通信する。
【００３３】
ドキュメント生成のためのデータソースは一般的にデータベースアプリケーションを動かしている他のコンピュータによって構成されたデータベースサーバー１１７上にある典型的なデータベース１１９である。ホストコンピュータ１０１はネットワーク接続１０７の手段によってデータベースサーバー１１７と通信する。バリアブルデータ印刷アプリケーション１２１はホストコンピュータ１０１か一般的に他のコンピュータで構成されるファイルサーバー１１５に保存されるドキュメントテンプレートを生成する。
【００３４】
またバリアブルデータ印刷アプリケーション１２１はデータとマージされたドキュメントテンプレートによって構成されたドキュメントを生成する。これらのドキュメントはホストコンピュータ１０１のローカルファイルシステムに保存されるか、ファイルサーバー１１５に保存されるか、あるいはプリンタ１１３に直接印刷される。プリントサーバー１０９は直接ネットワークにつながっていないプリンタにネットワーク機能を提供するコンピュータである。プリントサーバー１０９とプリンタ１１３は典型的な通信チャネル１１１を介して接続される。
【００３５】
図２はエンジンサーバー２２７の追加を除き、レイアウトエンジン１０５の分離バージョン２２５を含む図１Ａ・図１Ｂの類似の図である。
【００３６】
エンジンサーバー２２７は典型的なコンピュータである。ファイルサーバー１１５に保存されたドキュメントテンプレートは印刷や他の目的がある際、レイアウトエンジン２２５によってドキュメントを生成するためにデータベース１１９に保存されたデータと結合することができる。そのようなオペレーションはユーザインターフェース１０３を介して要求されるか、特定のレコードのみ印刷するように要求される。
【００３７】
〔アプリケーション構成図〕
〔メインウインドウ〕
図３で参照されるように、ユーザインターフェース１０３は、操作時にビデオディスプレイ１４４に表示されるアプリケーションウィンドウ３０１によって形成されたユーザインターフェースを含んでいる。ウインドウ３０１は、非表示にすることや、スクリーン上の色々な場所に移動することが可能なメニューバー３０２とツールバー３０３、そしてマウス１３３の位置・動作によって場所を移動可能なワークエリア３０６とオプションのパレット３１１とカーソル／ポインタデバイス３１３から特徴付けされる。
【００３８】
メニューバー３０２は、周知の技術として知られているように、メニューオプションの階層の下に拡張される多くのメニューアイテム３０４を持つ。
【００３９】
ツールバー３０３は、アプリケーションの特別なモードによって非表示にする、または表示することが可能な多くのツールボタンとウィジット３０５を持つ。
【００４０】
オプションのルーラー３０８はワークエリア内のポインタ、ページ、ライン、マージンガイド、コンテナまたはオブジェクトの位置を示すために使われる。
【００４１】
パレット３１１はバリアブルデータライブラリのような追加機能にアクセスするために使われる。パレット３１１は移動、リサイズ、クローズをするためのウインドウコントロール３１２を持つ。パレット３１１はオプションで、ワークエリアの前面に表示される、あるいはオブジェクトの背面に隠される。パレット３１１はアプリケーションウィンドウ３０１の範囲内のみに表示されることを制限される、あるいはアプリケーションウィンドウ３０１の外側に部分的・全体を表示することを許される。
【００４２】
ツールバーエリア３０３は少なくとも、次のユーザ選択可能な『ボタン』を持つ（図４を参照）。選択ツールボタン４０３は、コンテナの辺を選択、移動、サイズ変更、リサイズそしてロック・ロック解除するために使われる。コンテナは、（複数）コンテナの周りに選択ボックスをドラッグする、あるいは複数コンテナを選択する間にＣＴＲＬキーを押しつづけることによって、複数選択を可能にする。イメージコンテナツールボタン４０５は、スタティックあるいはバリアブルイメージを持つコンテナを作成するために使われる。テキストコンテナツールボタン４０４は、スタティックあるいはバリアブルテキストを持つコンテナを作成するために使われる。リンクツールボタン４０６は、コンテナ間の距離をコントロールするリンクを作成するために使われる。
【００４３】
これらのボタンは、周知の技術であるように操作状況に合わせて変化するアイコンのツールチップとして実装される。
【００４４】
〔ドキュメントテンプレート〕
ワークエリア３０６はドキュメントテンプレートのデザインを表示・編集するために使われる。これはユーザに下準備で印刷されたドキュメントの概観をデザインすること、そしてマージされたドキュメントが、バリアブルデータの量・サイズに基づいてどのように変化するかを理解することを可能にする。
【００４５】
もし外部データソースがテンプレートにリンクされていたら、現在のドキュメントのプレビューができるように、バリアブルテキストとイメージがそれらのコンテナに表示される。
【００４６】
ドキュメントの構造とバリアブルデータコンテナの描写をする視覚的な手がかりは、カーソルをコンテナ上に移動させたときや、コンテナを選択したときにいつも表示される。
【００４７】
ワークエリア３０６はスクロールバー３０７とオプションのルーラー３０８とドキュメントテンプレート３０９に特徴付けられる。ドキュメントテンプレート３０９はページが複数あることを示すことができる。
【００４８】
与えられたドキュメントテンプレートのページサイズは、周知の技術としてユーザによって指定される。それぞれのドキュメントでの実際のページ数は、バリアブルデータによって変化するかもしれない。もし１ページ内にフィットできなかった時、追加のページは自動的に作成される。
【００４９】
それぞれのページ内の境界線は、ページ上の印刷可能なオブジェクトの最大幅を示す、任意のページマージン３１０である。
【００５０】
また、図４は１ページのドキュメントテンプレート３０９上に表示することが可能なオブジェクトの例である。それらは、複数のコンテナ４０７、４０８と、任意に適用するアンカーアイコン４０９と固定されていない辺４１０、リンク４１２そしてスライダー４１３を持つ。
【００５１】
〔コンテナ〕
コンテナは、ドキュメントテンプレート内の固定あるいは可変テキスト・イメージを持つスペースであり、他のコンテナやオブジェクトとレイアウトされる。コンテナはマウス１３３動作でポインタ３１３を使い、ユーザインターフェースで示されるように移動、サイズ調整そして再作成される。
【００５２】
より正確にはコンテナは、設定の集まり、視覚的表現そしてインタラクションと編集動作をもっている。下記はコンテナの定義の全部分である。コンテナは固定あるいは可変のコンテンツを持つ。可変コンテンツは、データソースからとってきて、異なるドキュメントでは異なるかもしれない、という意味でダイナミックである。可変コンテンツは印刷されないような時間によって変更されたり、アニメーションするコンテンツを含むことは意図していない。同様に、固定コンテンツはコンテナを使って生成される全てのドキュメントで、同じように表示される。
【００５３】
けれども、可変コンテナの動作によって、固定コンテンツはそれぞれのドキュメントで位置が異なるかもしれない。コンテナは、コンテンツに適用される背景色、ボーダー、フォント・スタイルのようなテキスト設定のような装飾機能を持っている。コンテナはドキュメントを生成したときにデータソースからのデータとマージされる。装飾機能は、どんな固定コンテンツでもそうであるように、典型的に印刷された出力物で可視である。可変コンテンツはデータソースから特定のデータの表示をもたらす。コンテナのこの表現は例えば印刷されるか、スクリーン１４４上で表示されるか、その両方が可能である。
【００５４】
コンテナはユーザインターフェースを持つ、例えばコンテナの編集そして表示設定のためのインタラクティブなＧＵＩを持つ。インターフェースの要素は典型的にスクリーン１４４上に表示される、しかしドキュメントには印刷されない。
【００５５】
ユーザインターフェース１０３は、背景色やフォントのようなコンテナの装飾機能のいくつかを表示する、そしてコンテナの設定の編集や表示を許すための機能を追加する。ユーザインターフェース機能の特別な目的の例としては、ボーダー、あるいは、コンテナのサイズや位置を対話的に変更、表示するための角アイコン、あるいはコンテナがデータソースからデータをマージされたとき、コンテナの動作を示すための上塗りした数、線、アイコン、テキストがある。現在の公表の一つの概観は、新しい直接編集技術とコンテナのＧＵＩコンポーネントに伴う表示方法の集まりである。
【００５６】
〔コンテナ制約〕
公知の技術によると、コンテナはそれぞれのドキュメントで表示されるコンテンツを、どのように結びつけるか制御する制約がある。これらの制約（固定・可変コンテンツをコンテナと結びつけると共に）は、ユーザが一つのドキュメントテンプレートから、多数のドキュメントの生成を制御する主要な方法である。制約の例は「このコンテナのコンテンツの高さは、最大値４インチです。」である。もうひとつの制約は「コンテナのコンテンツの左端は、それぞれのドキュメントで同じ水平位置で表示しなければならない。」である。ここに記述される内容は、ＧＵＩを使ってこのような制約を表示、編集するためのいろいろな方法である。
【００５７】
イメージがページ上に定義された場所を持っているように、固定コンテンツの配置を指定するコンテンツプレイスホルダーは、デジタル印刷技術でよく知られている。下記の検討で、コンテナは位置とサイズを持ち、それらは公知の技術で知られている手法で編集され、表示されると想定されるかもしれない。その代わりに、現在の検討はバリアブルデータ印刷に特化した方法での表示・編集に焦点を合わせる。
【００５８】
コンテナは、ユーザにドキュメントのコンテンツのサイズ・位置を指定することを可能にする。いくつかのドキュメントは一つのドキュメントテンプレートから生成されるので、コンテナは多数の可能性と制約を指定・表示するためにユーザインターフェースを使わなければならない。
【００５９】
１つのコンテナの辺は、関連付けられたコンテンツがドキュメント内で表示される仮想の境界線を定義する。このように、この発明でコンテナの左辺を論じることは、関連付けられたコンテンツがどんなドキュメント内でも表示可能である最も左の辺を論じることと同じである。同様に、コンテナの高さを論じることは生成されたドキュメントで関連付けられたコンテンツの高さの制約を論じることとして理解される。この明細書では、ユーザインターフェース１０３を参照してコンテナの辺あるいは大きさを論じるところで、この区別は明らかにされるであろう。
【００６０】
下記検討では、コンテンツの表示を制限するために使われるいくつかの値を定義している用語『固定』は、全てのドキュメントで同じである。もしコンテナの幅が固定なら、関連付けられたコンテンツに割り当てられる幅は、全てのドキュメントで同じになるだろう。もしコンテナの高さが固定なら、関連付けられたコンテンツに割り当てられる高さは、全てのドキュメントで同じになるだろう。もし距離の制約が固定なら、指定された距離は全てのドキュメントのための制約である。もしコンテナの左右辺が固定なら、辺の水平位置がページに関して全てのドキュメントで同じであることを意味している、しかしコンテナの高さあるいは垂直方向の位置は、変わるかもしれない。
【００６１】
例えば、もしコンテナの左辺が固定なら、関連付けられたコンテンツは、一つのドキュメントでページの上に近く表示され、他のドキュメントでページの下に近く表示される、しかし左辺は全てのケースで同じ水平位置である。もしコンテナの上下辺が固定なら、辺の垂直位置がページに関して全てのドキュメントで同じであることを意味している、しかしコンテナの幅あるいは水平位置は変わるかもしれない。コンテナの垂直軸はコンテナの右と左辺の平行で、そして中間に位置される想像上の垂直線である。もしコンテナの垂直軸が固定なら、コンテナの左右辺の水平位置の平均は、すべてのドキュメントで同じである。この制約で、コンテナの幅は変化するかもしれない、左右辺両方が異なったドキュメントで、垂直軸にもっとも遠いかもっとも近いかもしれない、しかし軸は全てのドキュメントで同じ水平位置にある。コンテナの高さと水平位置はこの制約によって影響されない。
【００６２】
同様に、もし水平軸が固定なら、コンテナの上そして下辺が垂直に位置されることを制約する、けれども高さは、この制約によって影響されない。もし水平、垂直軸両方が固定なら、コンテナの中心位置が固定されていることを意味する、しかし、幅・高さはこの制約によって影響されない。もしコンテナの角、コンテナの辺の中間位置、あるいはコンテナの中心位置が固定なら、すべてのドキュメントで同じ場所で、そしてコンテナに関連付けられた同じ場所で表示される。
【００６３】
例えば、もしコンテナの左上角が固定なら、配置されたコンテナの左上位置が全てのドキュメントで同じになることを意味している。垂直辺あるいは軸はページの左辺、あるいは右辺、あるいは左ページマージン、あるいは右ページマージン、あるいは他の水平位置に関連付けされて固定になる。同様に、水平辺あるいは軸はページの上あるいは下辺あるいはマージン、あるいは他の垂直位置に関連付けされて固定になる。用語『固定』の改良は、もしページサイズが全てのドキュメントで同じならこれらの可能性はドキュメント生成で相違はないため、ドキュメント間でページサイズが変わるときにのみ重要となる。
【００６４】
『固定』の反対は、辺、軸、角、中間位置、あるいはドキュメント制約がドキュメント間で変化するかもしれないことを意味している『可変』である、しかしドキュメントの特定な設定でそうする必要が無いかもしれない。例えば、変更による辺の実際の好ましい位置のような他の外部制約がある、しかし、もし外部制約が適用されないなら、辺は固定されてないものとしてラベル付けされているので辺の位置は変更できる。
【００６５】
〔コンテナ表示・編集〕
［新規コンテナの作成方法］
コンテナは、テキストコンテナとイメージコンテナの２種類で記述される。テキストコンテナはテキスト、そして埋め込みのイメージを持つ。イメージコンテナは、イメージだけを持つ。
【００６６】
図４で参照されるように、新規テキストコンテナとイメージコンテナは、テキストコンテナツール４０４、あるいはイメージコンテナツール４０５をマウス１３３でクリックし、テンプレート３０９に四角形をドラッグすることによって、ドキュメントテンプレート３０９上に作成される。
【００６７】
代わりにコンテナは、適切なツール４０４、４０５をアクティブにした後に、ドキュメントテンプレート３０９上でクリックすることによって単純に作成される。デフォルトサイズのコンテナが挿入されるか、新規コンテナの寸法を入れるために、ダイアログボックスあるいは他のプロンプトが提供される。いくつかのコンテナは自動的に前もって定義されたか、計算されたスキーマによって、作成・配置される。また他の案が考えられるかも知れない。
【００６８】
［コンテナの表示方法］
以前記述した３６の辺の状態それぞれが、グラフィカルな表現で描画されるのが好ましい。いくつかの辺の状態は、いくつかの状況で表現を分け合うため、３６のグラフィック表示より少なくなるかもしれない。
【００６９】
図５Ａ−５Ｄはコンテナの模範的な辺ルールを例示している。
【００７０】
アプリケーション１２１は、辺の状態を表現するために、塗りつぶし線（アイテム５０３）あるいは点線（５０４）で辺を描き、アンカー（辺の近くに描画された５０６、５０７、５０９によって示されるような線、形状、アイコン）、ハンドル（移動、修正するために辺、形の近くに描画されたコントロール点、５０２）、スライダー（辺の両サイドに描画された短い並行線、図４の４１３）、拡縮アイコン（５０５）、そして色を特徴として持っている。
【００７１】
図５Ａ−５Ｄのコンテナ表示方法のルールは、つぎの通りである。
【００７２】
１．それぞれの辺を固定するために、塗りつぶし線で描画する。
【００７３】
２．もし幅が固定なら、左と右の辺を塗りつぶし線で描画する。
【００７４】
３．もし高さが固定なら、上と下の辺を塗りつぶし線で描画する。
【００７５】
４．軸は描画しない。
【００７６】
５．まだ描画されていない全ての辺は、それぞれの辺の近くに拡縮アイコンが描画され、点線になる。
【００７７】
６．垂直辺あるいは軸のそれぞれのペアで、もし両者が固定なら、交差点にアンカーが描画される。
【００７８】
７．それぞれの固定辺で、もし辺のどこにもアンカーが描画されていなければ、エッジの中央にスライダーが描画される。
【００７９】
８．垂直辺あるいは軸のそれぞれのペアで、もしアンカーやスライダーが描画されていなければ、交差点にハンドルが描画される。
【００８０】
ルール１、２、３で保証した線は、もしそれらが固定あるいは制限されているなら、点線で描画される。ルール５で保証した可変の辺は、点線で描画される。ルール６、７、８で保証した固定された点は、アンカーを表示し、いくつかの固定された辺はスライダーを表示し、他はハンドルを表示する。
【００８１】
上記で、辺はただ一度描画されることが必要である、それでもし、ルールが描画されるべき辺に影響すれば、そのとき後のルールはふたたび描画されるべき辺に影響しないだろう。もしそうすることで都合が良いなら、例えばもしコンテナがとても小さくアイコンがお互い重なるか、あるいは他の表示機能を不明瞭にするならば、アイコンは異なって、あるいは省略されて描画されるかもしれない。
【００８２】
可変の辺が描画される場所は、コンテナのコンテンツに依存する。後で記述されるように、ドキュメントテンプレートにコンテンツがマージされて、ユーザインターフェースで可視になることを意味する、『動的な校正処理』が使われる。代わりの実行手段としては、すべてのドキュメントで平均化されるコンテナのコンテンツエリア、あるいは可変の辺がユーザインターフェースで、どこにレイアウトされるべきか決定するほかの手段で使われることができる。
【００８３】
これらのコンテンツ表現は、コンテナの辺の状態を表示するグラフィカルな手段を提供する。その表現の解釈は下記のとおりである。
【００８４】
図４の４１０の辺のように、点線はコンテナのコンテンツに依存して、ドキュメント内の辺の位置を意味する。
【００８５】
塗りつぶし線は制限された辺を意味する、なぜなら、辺は固定されている（辺４１４）、あるいはコンテナの幅・高さが固定されている（コンテナ４０８では両方が固定されている）ためである。
【００８６】
アンカーは辺そして軸が交差した場所が固定されていることを意味する。それゆえ、アンカー点は、すべてのドキュメントの水平、垂直位置で現れるだろう。当然アンカーは固定される。図４のアイコン４０９は、交差する辺４１４が固定されていることを意図している、アンカーアイコンの例である。
【００８７】
スライダーは関係付けられた辺が固定されていることを意味する、しかしコンテナは辺に沿って多くの位置『スライドの長さ』で位置を定められる。例えば、図４でスライダー４１３はコンテナ４０８のコンテンツが、ドキュメント内で特定のダイアグラムで表される位置の、左あるいは右に表示されるかもしれない。
【００８８】
これらのアイコン・辺のいくつかあるいは全ては、どのツール、どのコンテナを選択・ハイライトあるいはアクティブにするかによって、描画されたりされなかったりする。一般的に、コンテナの辺・アイコンはドキュメントテンプレートのデザインの手助けであるため、印刷物には描画されない。
【００８９】
幅・高さの最小値・最大値の設定は、副次的なダイアログウィンドウに表示される。
【００９０】
図５Ａで、コンテナ５０１は幅・高さ両方が固定されていない。固定された辺５０３は塗りつぶし線で表現される。可変の辺５０４は点線で表現される。拡縮アイコン５０５は、隣接する辺５０４が可変であることを示す、追加あるいは代わりのインジケーターである。
【００９１】
図５Ｂで、コンテナ５０１は幅・高さ両方が可変である。アンカーアイコン５０６は、交差している両方の辺５０３が固定されていることを、追加であるいは代わりに示している。
【００９２】
図５Ｃで、コンテナ５０１は、コンテナの拡大あるいは縮小が任意のアンカーアイコン５０７で示されるような中心点の周りを平等に広がるという状態で、幅・高さ両方が可変である。
【００９３】
図５Ｄで、コンテナ５０１は、上辺５０８が固定されていることを除けば、幅・高さ両方が可変である。上辺５０８の中心に位置付けられて示されるアンカーアイコン５０９は、固定されている、そしてまたコンテナの左・右辺が、アイコンを通り垂直に描画される中心軸（垂直軸）の周りを、拡大・縮小することを示す。
【００９４】
〔リンク〕
リンクは、コンテナとコンテナの関連を示している。関連とはコンテナ間の距離を示しており、リンクによって関連付けられたコンテナ同士は、互いのレイアウト変更の影響を受けてレイアウトを計算する。図４の４１２で示されているものがリンクであり、この図ではコンテナ４０７と４０８とを関連づけている。リンクの設定方法および、リンクで関連付けられたコンテナのレイアウト計算方法については、後述する。
【００９５】
〔リンクの設定方法〕
図６はリンクの設定方法を示したフロー図である。また図７Ａ−ＣはＵＩ例を示している。それらを用いてコンテナにリンクを設定する方法について説明をする。
【００９６】
まず、リンクを設定するためには、リンクを設定するためのコンテナ（最低２つ）を作成する（ステップ０６０１）。図７は、２つのコンテナを作成してリンクを設定する場合の例を示している。次に、前述したリンクツール４０６を選択した状態にする（ステップ０６０２）。図７Ａ−Ｃは、コンテナを作成し、リンクツールが選択されていた状態から、リンクを設定する動作を示している。図７Ａ−Ｃを順に説明していく。
【００９７】
図７−Ａの０７０１と０７０２は、前述した図４の４０７と４０８と同じであり、固定されている辺を意味する。また、０７０３と０７０４は、４０９と同じであり、アンカーを意味する。０７０５はマウスポインタを意味している。
【００９８】
まず、リンクを設定する片方のコンテナをクリックして選択する（ステップ０６０３）。次に図７−Ｂで示されるように、もう片方のコンテナまでマウスポインタを移動して、クリックする（ステップ０６０４）。図７−Ｂの０７０６は図７−Ａでクリックをした位置と移動したマウスポインタを結んだ線を示しており、どの位置にリンクが設定されるのかをユーザに示すＵＩである。
【００９９】
ステップ０６０４が終わった後、設定した場所に０７０７で示されるリンクＵＩが表示される（ステップ０６０５）。コンテナは図７−Ｃの状態になる。また、リンクが設定されたことにより、コンテナのＵＩも自動的に変更される（ステップ０６０６）。０７０８は、点線で示されている辺であり、前述した通り可変の辺を示している。
【０１００】
図７−Ｃのようにコンテナの辺の状態が変化したのは、リンクを設定したことにより、コンテナの辺を可変にする必要があるためであり、リンクを設定したにもかかわらず、全ての辺が固定という矛盾を引き起こすことを防ぐために、自動的に行われる処理である。また、０７０９は図５の５０５と同じで、リンクを設定したことにより、コンテナが変化できる方向をユーザに視覚的に示したしるしである。図７−Ｃの例では、左のコンテナの右辺と右のコンテナの左辺が可変に変化したが、これは一例であり、右コンテナが、図４の４１３で示したスライダーを持つ設定に変化してもかまわない。
【０１０１】
〔レイアウト計算方法（全体フロー）〕
図８はレイアウト計算のフローを示している。
【０１０２】
まず、プレビューモードを選択する（ステップ０８０１）。前述した自動レイアウトシステムでは、コンテナを作成して、そのコンテナ間に関連付けを行い、レイアウトを作成するレイアウトモードと、作成したレイアウトにレコードを挿入して、実際にレコードが挿入された後のレイアウト結果をプレビューするプレビューモードに分けられる。このプレビューモードにおいて、実際のレコードが挿入され、レイアウトを計算する。ただし、プレビューモードは、表示上でのレイアウト計算である。実際に印刷する場合においても、レコードを挿入してレイアウトを計算する。その際の計算方法も同じである。
【０１０３】
プレビューモードになったら、プレビューするレコードを選択して挿入する（ステップ０８０２）。レコードの挿入を行うと、そのレコードをレイアウトするために計算を行う（ステップ０８０３）。ステップ０８０３で計算されたレイアウトを表示する（ステップ０８０４）。他のレコードについてもプレビューを行うかどうかを判断する（ステップ０８０５）。ステップ０８０５で、他のレコードについてプレビューを行う必要がないと判断した場合は、プレビューモードを終了する（ステップ０８０７）。
【０１０４】
他のレコードについてプレビューを行うのであれば、他のレコードを選択して再度レイアウト計算を行い、プレビューを行う（ステップ０８０６）。プレビューモードでなく印刷時においては、印刷するレコード全てについて順にレイアウトの計算を行う。したがって、ステップ０８０５、０８０７は存在しない。全てのレコードについて印刷が終了した時点で終了する。
【０１０５】
〔レイアウト計算方法（詳細フロー）〕
図９はレイアウト計算の詳細を示したフロー図である。また、図１０はそのときのＵＩ表示例を示した図である。
【０１０６】
まず、レイアウトを計算するコンテナの集合を求める（ステップ０９０１）。レイアウト計算は、関連付けられたコンテナを一つの集合として計算を行う。例えば図１１を参照すると、ページ上に４つのコンテナがレイアウトされており、各コンテナに関連付けが設定されている。この場合、コンテナＡとコンテナＢ、そしてコンテナＣとコンテナＤがリンクによって関連付けされている。したがって、コンテナＡ・Ｂが集合１、コンテナＣ・Ｄが集合２となる。前述した通りであるが、１１０１はアンカー、１１０２は固定された辺、１１０３はコントローラー、１１０４は可変の辺の変化方向を示している矢印、１１０５は可変の辺、１１０６はリンク、そして１１０７はスライダーを示している。
【０１０７】
次に、ステップ０９０１で求めたコンテナの集合から、レイアウトを計算するために一つを選択する（ステップ０９０２）。そして、選択したコンテナの集合について、レイアウトの計算を行う。ここでは、レイアウトされるコンテナのサイズが、実際のコンテンツのサイズとできる限り差が少なくなるように、レイアウトの最適化を行う（ステップ０９０３）。レイアウトの最適化は、動的にサイズを変化することが可能なように関連付けられたコンテナにおいて、それぞれに挿入されるコンテンツのサイズとレイアウトされるサイズとの差が、できる限り同じになるように行われる。
【０１０８】
レイアウトの最適化を行い、ルールに違反していた場合は、再度ルールを違反しないように計算をする（ステップ０９０４）。ここで記述したルールとは、レイアウト作成時にユーザによって設定される制限であり、コンテナのサイズと位置、リンクの長さなどである。ルールを違反しないようにレイアウトが計算されたら、その集合のレイアウトは完成される。そして、ステップ０９０２〜ステップ０９０４のステップをページ上のすべての集合について施し、ページ全体のレイアウトを計算する（ステップ０９０５）。
【０１０９】
図１０−Ａ〜Ｃはレイアウト計算時のＵＩ例である。
【０１１０】
図１０−Ａは、あるレコードが挿入されレイアウトが決定されている状態を表している。１００１と１００２はアンカー、１００３と１００４は固定された辺、１００５は可変の辺、１００６は可変の辺の変化方向を示している矢印、１００８はリンクをそれぞれ示している。
【０１１１】
この状態において、レコードを変更し、異なったサイズのコンテンツを挿入する。図１０−Ｂは図１０−Ａの状態に新しいコンテンツのサイズを重ねて示している。１００９はそれぞれのコンテナに挿入されるコンテンツのサイズを表している。そして、レイアウト計算が行われる。図１０−Ｃはレイアウト計算された結果を示している。計算後の各コンテナのサイズは、実際挿入されるコンテンツのサイズと同等に差異があるように計算され、且つ前述したルールを違反しないように計算される。図１０−Ｃで示されるように、図１０−Ｂで示した挿入されるコンテンツサイズ（１００９）と計算後のコンテンツサイズ（１０１０）は、双方において同等な差異がある。
【０１１２】
〔可変リンクの設定〕
図１２では一般的な可変リンクの状態を表している。
【０１１３】
図４と同様にアプリケーションウィンドウ３０１とツールバー３０３があり、ドキュメントテンプレート３０９上にコンテナ１２０３とコンテナ１２０４が存在する。それぞれのコンテナは典型的にアンカーアイコン１２０１、アンカーアイコン１２０２と固定された辺１２０５、辺１２０６から成り立つ。各エッジコンテナ１２０３と１２０４の間には可変サイズのリンク１２０９があり、それぞれのコンテナを結んでいる。コンテナ１２０３とコンテナ１２０４の間にはリンクが設定されているのでそれぞれの右辺１２０７と左辺１２０８は点線で表現されている。このため各コンテナにインジケーター１２１０、インジケーター１２１１が表示され、これは辺１２０７と辺１２０８が可変であることを示している。
【０１１４】
また図１４はリンク１２０９の情報がセットされているダイアログウィンドウ１４０１の例である。
【０１１５】
このダイアログは典型的にタイトルバー１４０２、ツールボタン１４０３、ダイアログウィンドウの開閉を行うボタン１４０４、各種の情報をセットするエリア１４０９で構成されている。このダイアログウィンドウではリンクタイプが可変（１４０７）あるいは固定（１４０６）の選択や、可変の場合、リンクの長さの最大値（１４１２）そして最小値（１４１０）、また現在の値（１４１１）が設定できる。
【０１１６】
図１３は前述のリンク設定方法を踏まえ、例えば図１５のコンテナＡとコンテナＢ間に張られている固定サイズのリンク１５０３の状態から可変サイズのリンク１２０９を示している図１２の状態までの操作遷移を表している。
【０１１７】
マウスによりリンク１５０３をクリックし、選択する（ステップ１３０２）。マウスの右クリックあるいはキーボードの特定のキーにより選択したリンク１５０３のプロパティダイアログウィンドウ１４０１を表示する（ステップ１３０３）。この状態ではリンクサイズは可変ではなく固定であるため、Ｆｉｘｅｄ  Ｌｅｎｇｔｈ１４０６がＬｉｎｋ  Ｔｙｐｅ１４０５において選択されている。
【０１１８】
リンクを固定サイズから可変サイズに変更するために、Ｌｉｎｋ  Ｔｙｐｅ１４０５においてリンクサイズを可変に設定するＦｌｅｘｉｂｌｅ  Ｌｅｎｇｔｈ１４０７を選択する（ステップ１３０４）。これによりＬｉｎｋ  Ｄｉｓｔａｎｃｅ１４０８内に配置されているＭａｘ．Ｄｉｓｔａｎｃｅ１４１２、Ｍｉｎ．Ｄｉｓｔａｎｃｅ１４１０、Ｄｉｓｔａｎｃｅ１４１１が有効化され、数値の設定が可能となる。
【０１１９】
そこでリンクの可変サイズを設定するために、そのリンクの長さの最大値をＭａｘ．Ｄｉｓｔａｎｃｅ１４１２、最小値をＭｉｎ．Ｄｉｓｔａｎｃｅ１４１０、現在の値をＤｉｓｔａｎｃｅ１４１１において設定する（ステップ１３０５）。一般的なダイアログウィンドウ開閉ボタン１４０４によって設定を適用すると図１２のリンク１２０９のような状態にリンクのＵＩ表示が変化する（ステップ１３０６）。このダイアログウィンドウ１４０１の設定情報はメモリに格納される。
【０１２０】
図１５は固定サイズのリンクを使用した場合のレイアウト結果を示している。
【０１２１】
レイアウト計算方法は前述したとおりに従って行われる。例えば図１２においてコンテナ１２０３とコンテナ１２０４にそれぞれ違ったサイズのデータが挿入された時、それぞれのコンテナはデータの大きさを最適と考え、コンテナ１２０３は挿入されたイメージサイズになる枠１５０４（最適コンテナサイズ）に近づこうと右方向へ大きく、同様にコンテナ１２０４も挿入されたイメージサイズになる枠１５０５（最適コンテナサイズ）に近づこうと左方向へやや大きくサイズを変更しようとする。
【０１２２】
しかしコンテナ１２０３とコンテナ１２０４の間には固定サイズのリンクが設定されているとすると、コンテナ１２０３とコンテナ１２０４はそれぞれアンカー１２０１とアンカー１２０２によってそれぞれ左辺１２１２と右辺１２１３は移動出来ないため、変更しようとするサイズがリンクサイズを上回ってしまう。そしてこのリンクサイズは固定されているためレイアウト計算時に優先的に計算されるためコンテナ１２０３とコンテナ１２０４のサイズが変更されることになる。
【０１２３】
その結果、コンテナ１２０３とコンテナ１２０４はデータに合わせた最適なサイズを確保することが出来ず、最終的に図１５のコンテナ１５０１とコンテナ１５０２のように最適なサイズ（枠１５０４、枠１５０５）よりも小さくなってしまう。リンク１５０３のサイズは固定であるためコンテナ１５０１とコンテナ１５０２は最適サイズを達成していない。
【０１２４】
図１６はリンクを可変サイズにした場合を示している。
【０１２５】
この場合、上記の例でコンテナ１２０３とコンテナ１２０４の間には図の通り可変サイズのリンクが設定されているとすると、コンテナ１２０３とコンテナ１２０４のサイズが変更される際に、リンクサイズが縮まることでコンテナ１２０３とコンテナ１２０４のサイズが上記の例より大きくなることができ、挿入されるデータサイズに合わせた最適なサイズを達成、あるいはより挿入データサイズ（最適サイズ）に近づけてコンテナの枠を計算することが出来る。その結果が、図１６のコンテナ１６０１とコンテナ１６０２である。可変リンク１２０９はレイアウト計算の結果、可変リンク１６０３のサイズ状態となり、この場合コンテナ１６０１とコンテナ１６０２はそれぞれ最適なサイズ（データサイズに合った大きさ）になっている。
【０１２６】
図１７は条件式のプロパティを設定するＵＩダイアログの１例である。
【０１２７】
プロパティダイアログウィンドウは典型的にキーボード１３２やマウス１３３によりコンテナを選択し、マウスの右クリックメニューの選択、あるいはキーボードからのＡｌｔキー等により表示する。この実施例では１つの条件式の設定に関してのみ、プロパティダイアログウィンドウ内に表示している。
【０１２８】
このプロパティダイアログウィンドウ１２０１は典型的にタイトルバー１２０２、ツールボタン１２０３、プロパティダイアログウィンドウのオープン、クローズを行うボタン１２０４、各種の情報をセットするエリア１２０５で構成されている。
【０１２９】
このプロパティダイアログウィンドウ１２０１には、条件名を決定するコントロール１７０１があり、エディットボックス１７０２では条件名を入力、変更することが可能である。条件式は基本的に「もし〜ならば〜する」の形式で作成していく。この条件式用ＵＩプロパティダイアログでは、その作成フローに沿った方法で設定していくことが可能である。もし（Ｉｆ（１７０３））項目１７０４が項目１７０６であったならば（Ｔｈｅｎ（１７０７））、項目１７０９を動作１７０８で操作する。
【０１３０】
項目１７０４はドロップダウンリストであり、接続しているデータベース内のＤＢフィールドのリストが表示され、その中から目的のＤＢフィールドを選択することができる。項目１７０６はドロップダウンリスト、あるいは入力可能なエディットボックスであり、項目１７０４で選択されたＤＢフィールドのデータ内容が項目１７１６における設定内容と一致した場合の内容を選択、あるいは入力する。ここでは“Ｅｍｐｔｙ”が選択されており、ここまでの文を解釈すると、「もしＤＢフィールド＜Ｉｔｅｍ＞がＥｍｐｔｙ（データが空）であるならば」という意味となる。
【０１３１】
項目１７０８は上記条件に場合にどのような動作をするか、を設定する箇所である。これはドロップダウンリストであり、「隠す」「テンプレートの切り替え」「イメージの切り替え」「フォントの切り替え」など様々な動作を指定することが出来る。ここではＨｉｄｅ（隠す）が指定されている。項目１７０９では項目１７０８の動作対象を指定するドロップダウンリストであり、「オブジェクト名」「テンプレート名」「イメージファイル名」「フォント名」など様々なアイテムを指定することが出来る。ここでは＜Ｉｔｅｍ  Ｎａｍｅ＞が指定されており、あるオブジェクトを指していることとする。
【０１３２】
つまり、このウィンドウダイアログ１２０１における、条件式を解釈すると「もしＤＢフィールド＜Ｉｔｅｍ＞がＥｍｐｔｙ（データが空）であるならば、オブジェクト＜Ｉｔｅｍ  Ｎａｍｅ＞をＨｉｄｅする（隠す）」という意味になる。
【０１３３】
図１８はコンテナのプロパティを設定するＵＩダイアログの１例である。
【０１３４】
プロパティダイアログウィンドウは典型的にキーボード１３２やマウス１３３によりコンテナを選択し、マウスの右クリックメニューの選択、あるいはキーボードからのＡｌｔキー等により表示する。この実施例ではコンテナの原点を指定することに関連するものの設定に関してのみ、プロパティダイアログウィンドウ内に表示している。
【０１３５】
このプロパティダイアログウィンドウ１２０１は典型的にタイトルバー１２０２、ツールボタン１２０３、プロパティダイアログウィンドウのオープン、クローズを行うボタン１２０４、各種の情報をセットするエリア１２０５で構成されている。このプロパティダイアログウィンドウ１２０１には、大きく、コンテナのエッジ状態を設定する領域１８０１、図１７で作成した条件式をコンテナに割り当てる領域１８１１、そしてコンテナの原点位置を選択する領域１８２１が配置されている。
【０１３６】
領域１８０１内には各辺のエッジ状態を変更するコントロールが配置されている。Ｔｏｐ（上辺）１８０２、Ｂｏｔｔｏｍ（下辺）１８０３、Ｒｉｇｈｔ（右辺）１８０４、Ｌｅｆｔ（左辺）１８０５にはチェックボックスが置かれ、このチェックボックスをチェックすると、その辺が可変となり、チェックを外すと固定となる。
【０１３７】
領域１８１１内には条件式を使用するかどうかのチェックボックス１８１２があり、これをチェックＯＮにすると、下のドロップダウンリストボックス１８１３がＥｎａｂｌｅされる。このドロップダウンリストボックスには現在登録されている条件式をリストアップして表示する。ここでは“Ｃｏｎｄｉｔｉｏｎ１”が選択されている状態である。
【０１３８】
領域１８２１内にはコンテナの原点位置を指定するコントロールが配置されている。コンテナは典型的に９点の配置可能位置を持ち、それはＴｏｐ−Ｌｅｆｔ（左上）１８２２、Ｔｏｐ−Ｃｅｎｔｅｒ（上中央）１８２３、Ｔｏｐ−Ｒｉｇｈｔ（右上）１８２４、Ｍｉｄｄｌｅ−Ｌｅｆｔ（左中央）１８２５、Ｍｉｄｄｌｅ−Ｃｅｎｔｅｒ（中央）１８２６、Ｍｉｄｄｌｅ−Ｒｉｇｈｔ（中央右）１８２７、Ｂｏｔｔｏｍ−Ｌｅｆｔ（左下）１８２８、Ｂｏｔｔｏｍ−Ｃｅｎｔｅｒ（下中央）１８２９、Ｂｏｔｔｏｍ−Ｒｉｇｈｔ（右下）１８３０、の９点のことである。原点は基本的にコンテナで１つしか持つことが出来ないため、それら９点はラジオボタンでグループ化されている。ここではＴｏｐ−Ｌｅｆｔ１８２２が選択されている。
【０１３９】
Ｈｉｄｅ条件によって非表示になる固定データの入ったオブジェクトでもこの原点の指定は必要となる。非表示になったときにどの位置にマークを集めるのかを決定しておかないと非表示になったときに、例えばリンクされている別のコンテナがその領域を使用することが出来なくなる。これについては後述の図２１で説明する。
【０１４０】
さらに領域１８２１内には集約点（Ｓｈａｒｅ  Ｂａｓｅ  Ｐｏｉｎｔ）の設定をするドロップダウンリストボックスが配置されている。このリストにはこのコンテナにリンクされているオブジェクト一覧が表示され、選択をすることが出来る。これはリンクされている複数のオブジェクトをＨｉｄｅする（非表示にする）時、指定された方のオブジェクトの原点にマークを集約させるために存在する。
【０１４１】
図２３は図１８のＵＩプロパティダイアログウィンドウ上での、原点を選択するときの操作フローを示している。
【０１４２】
まずコンテナを選択し（ステップ２３０２）、コンテナのプロパティダイアログを開く（ステップ２３０３）。そしてＨｉｄｅ条件式をそのコンテナに割り当て（ステップ２３０４）、原点の指定を行う（ステップ２３０５）。次にＨｉｄｅ条件が設定されたコンテナが別コンテナとリンクされている場合は（ステップ２３０６）、原点の集約点を設定する（ステップ２３０７）。もし判断２３０６でリンクされているコンテナが何もない場合は、集約点の設定は必要ない。
【０１４３】
図２４は図１８のシステムから見たＵＩプロパティダイアログウィンドウのコントロールフローである。
【０１４４】
まず選択されたコンテナを確定し（ステップ２４０２）、コンテナのプロパティ情報を取得する（ステップ２４０３）。コンテナのプロパティダイアログを表示して（ステップ２４０４）、そのコンテナにＨｉｄｅ条件式が設定されたかどうかを判断する（ステップ２４０５）。割り当てられた場合は原点の設定ＵＩコントロールを表示し（ステップ２４０６）、コンテナのプロパティより原点を自動計算し（ステップ２４０７）、計算された結果の原点をＵＩに表示する（ステップ２４０８）。割り当てがない場合はそのまま終了する。
【０１４５】
そしてＨｉｄｅ条件が設定されたコンテナが別コンテナとリンクされているかどうかを判断し（ステップ２４０９）、リンクがある場合は原点の集約点の設定コントロールをＵＩ表示する（ステップ２４１０）。もしリンクがない場合はそのまま終了する（ステップ２４１１）。
【０１４６】
図２５は図２４の原点の自動計算をする典型的な方法のフローを示している。
【０１４７】
原点の自動計算はエッジ状態によって行っていくが、エッジ状態はユーザが指定したものであり、そのコンテナに挿入されるコンテンツは基本的にその状態によって方向性を持ち、可変に動く。よって原点もその方向性に従って設定することで、ユーザに設定させなくても機能的に高い位置を選択することができる。これによりユーザが機能的に低い位置を選択するミスを未然に防ぐことが出来る。もしユーザが意図的に原点を指定したい場合は、自動計算後ＵＩプロパティダイアログで指定することが出来る。
【０１４８】
自動計算ではまずコンテナエッジの情報を取得する（ステップ２５０２）。そして可変エッジがあるかどうかを判断し（ステップ２５０３）、ある場合はエッジ状態をチェックする（ステップ２５０４）。可変エッジがない場合はＭｉｄｄｌｅ−Ｃｅｎｔｅｒ（中央）を原点に設定する（ステップ２５０８）。
【０１４９】
エッジ状態をチェックした後（ステップ２５０４）、１辺のみが可変であった場合、可変辺の対辺中央点を原点に設定する（ステップ２５０６）。もし２辺が可変であった場合、その可変辺同士に接点があるかどうかを判断し（ステップ２５０５）、ある場合は、その接点の対角点を原点に設定する（ステップ２５０９）。もし接点がない場合はＭｉｄｄｌｅ−Ｃｅｎｔｅｒ（中央）を原点に設定する（ステップ２５０８）。もし３辺が可変であった場合は、固定辺の中央点を原点に設定する（ステップ２５０７）。もし４辺全てが可変であった場合は、Ｍｉｄｄｌｅ−Ｃｅｎｔｅｒ（中央）を原点に設定する（ステップ２５０８）。
【０１５０】
図１９は本発明が有効的に活用される概念的な１例を示している。
【０１５１】
図１９は一般的なドキュメントにおける表を表している。この表はコンテナの集まりで作成されており、コンテナＡ（１９０１）、コンテナＢ（１９０３）、コンテナＣ（１９０５）、コンテナＤ（１９０７）、コンテナＥ（１９０２）、コンテナＦ（１９０４）、コンテナＧ（１９０６）、コンテナＨ（１９０８）の８つのコンテナから成り立っている。
【０１５２】
コンテナＡ〜Ｈにはそれぞれデータが入っており、コンテナＡ〜Ｄには固定データ、コンテナＥ〜Ｈにはデータベースから挿入される可変データが割り当てられている。さらにコンテナＧには条件式１９０９が割り当てられており、この条件式は“もしコンテナＧのデータが空だった場合、コンテナＣを隠す”という設定がされている。よって本例のようにコンテナＧに入るデータが空の場合は、コンテナＣも表示から消し、コンテナＤとコンテナＨが非表示となったコンテナＣとコンテナＧの領域を埋めるために上方向へ移動し、結果として１９１１〜１９１６のような表になる。結果の表ではコンテナＣとコンテナＧが表から姿を消し、コンテナＤとコンテナＨがその領域に配置され、表としての完成度を低くしていないことが分かる。
【０１５３】
図２０も本発明が有効的に活用される概念的な別の１例を示している。
【０１５４】
これは固定データであるＯｂｊｅｃｔＡ（２００１）に重なるように配置されているＣｏｎｔａｉｎｅｒＢ（２００２）ようなレイアウトがされている状態である。またＣｏｎｔａｉｎｅｒＢには条件式２０１３が割り当てられており、“もしＣｏｎｔａｉｎｅｒＢのデータが空だった場合、ＯｂｊｅｃｔＡを隠す”という設定がされている。よって、ＣｏｎｔａｉｎｅｒＢに空のデータが挿入された場合（２０１２）は、ＣｏｎｔａｉｎｅｒＢ自体もコンテナサイズを０として計算し、ＯｂｊｅｃｔＡはＣｏｎｔａｉｎｅｒＢに割り当てられた条件式によって非表示になるため、結果としてＯｂｊｅｃｔＡとＣｏｎｔａｉｎｅｒＢは２０２１、２０２２のように非表示の状態となる。
【０１５５】
もしこの場合にＯｂｊｅｃｔＡが表示されたままであるとすると、本来は必要のない表示がされてしまうこととなり、レイアウト上見栄えの良くないドキュメントになってしまう。このように非表示にするオブジェクトに関連付けられたオブジェクトは同時にレイアウトから消すことで、レイアウトの整合性を保ち、見栄えの良いドキュメントを作成することができる。
【０１５６】
図２１は条件によってオブジェクトを非表示にし、その領域をその他のオブジェクトが使用する場合の実施例を示している。前述の通り、レイアウトを行う際はマークを使用するが、ここではそのマークを中心に説明をする。
【０１５７】
まずあるドキュメント上にコンテナＡ（２１０１）、オブジェクトＢ（２１０２）、コンテナＣ（２１０３）、そしてコンテナＡとオブジェクトＢ間にはリンクＤ（２１０４）、コンテナＣとオブジェクトＢ間にはリンクＥ（２１０５）が配置されている。
【０１５８】
コンテナＡとコンテナＣにはＤＢフィールドが関連付けられており、現在のレコードではそれぞれ“￥５，０００”と“￥３，０００”のデータが表示されている。それらのテキストはコンテナ内で右寄せに配置されている。オブジェクトＢはシェイプの一種であり、固定データである。
【０１５９】
２１１１〜２１１５からはコンテナＣに挿入されるデータが空だった場合のレイアウト方法について示している。コンテナＣに入るデータは空のため、空白になっている。オブジェクトＢはある条件式によって、コンテナＣのデータが空の場合はオブジェクトＢも非表示にするという設定がされているため、この場合、オブジェクトＢも非表示にする。
【０１６０】
２１２１〜２１２７からはマークを使用したレイアウト方法の例を示している。ここでオブジェクトＢでは原点が右上、コンテナＣも原点が右上に設定されているとする。よってオブジェクトＢの右上の点をマークＦ、コンテナＣの右上の点をマークＧと呼ぶとする。オブジェクトＢは上記の条件式によってマークＦにコンテナの各辺（各頂点のマーク）が集まる。またコンテナＧもデータが空であるため、マークＧに各辺が集まる。そうすると、オブジェクトＢ、コンテナＣが双方共に右方向へ移動しようとする。
【０１６１】
そのため移動した分の領域をコンテナＡが使用することが出来、コンテナＡは右方向に拡大する。またＨｉｄｅ条件が設定されたコンテナが別コンテナとリンクされているため、マークＦとマークＧは集約される。ここではコンテナＣの原点が集約点と設定されていると仮定すると、オブジェクトＢとコンテナＣの全てのマークはマークＧに集約される。
【０１６２】
その結果を示したのが２１３１〜２１３５の状態である。オブジェクトＢとコンテナＣのマークは全てマークＧに集約されたため、右端までリンク２１３３が移動している。またそれによってコンテナＡの右辺がマークＨ（２１３４）まで拡大している。またＨｉｄｅ条件が設定されたコンテナが別コンテナとリンクされているため、マークＨとマークＧは集約される。ここではコンテナＣの原点が集約点と設定されていると仮定すると、コンテナＡとコンテナＣの全てのマークはマークＧに集約される。
【０１６３】
その結果を示したのが２１４１〜２１４３の状態である。オブジェクトＢとコンテナＣ、そしてコンテナＡの右上のマークが全てマークＧ（２１４３）に集約され、結果的にコンテナＡはマークが移動した分の領域を使用することが出来る。
【０１６４】
図２２は図２１のレイアウトを実際のエディタウィンドウ上で行ったときの状態を示している。
【０１６５】
図４と同様にアプリケーションウィンドウ３０１とツールバー３０３があり、ドキュメントテンプレート７０９上にコンテナ２２０１、オブジェクト２２０３、コンテナ２２０５が存在する。またコンテナ２２０１とオブジェクト２２０３間にはリンク２２０２、オブジェクト２２０３とコンテナ２２０５間にはリンク２２０４が関連付けられている。
【０１６６】
図２１のコンテナ２１１３のように、コンテナ２２０５に挿入されたデータが空だった場合、設定されている条件によってオブジェクト２２０３も非表示となり、オブジェクト２２０３とコンテナ２２０５、またコンテナ２２０１の右辺、の全てのマークがコンテナ２２０５の右上頂点に移動することによって、コンテナ２２０１は右方向に拡大可能となり、結果としてコンテナ２２１１のような状態になることができる。
【０１６７】
このようなレイアウトはコンテナ２２０１が定価、コンテナ２２０５が特価を示す場合が考えられるが、もし特価がない場合は定価だけを表示したい。その様な場合に定価の表示位置は右隅にもっていきたいことが考えられる。そのような場合に本発明が有効なことがこれにより分かる。
【０１６８】
図２６は図２２のドキュメント上におけるプレビュー表示のフローを示している。
【０１６９】
まずＤＢよりコンテンツをコンテナに挿入する（ステップ２６０２）。次に条件式を適用し（ステップ２６０３）、条件式の値とコンテンツの内容の一部、または全てが一致するか判断をする（ステップ２６０４）。もし一致した場合は条件式によってＨｉｄｅするコンテナを確定し（ステップ２６０５）、プロパティに設定された原点で０計算をする（ステップ２６０６）。そして計算結果をレイアウト表示する（ステップ２６０７）。もし判断２６０４で一致しない場合はそのままレイアウト計算を行い、レイアウト結果を表示する（２６０７ステップ）。
【０１７０】
図２７は図２６におけるステップ２６０６の計算手法についてのフローを述べている。
【０１７１】
まずコンテナで設定されている原点以外のマークを原点に移動させる（ステップ２７０２）。そしてＨｉｄｅ条件で関連するコンテナ同士がリンクされているかを判断し（ステップ２７０３）、もしそうならばリンクのマークと関連する原点を集約点に集める（ステップ２７０４）。もしそうでないならば終了する（ステップ２７０５）。
【図面の簡単な説明】
【０１７２】
【図１Ａ】本発明のコンピュータシステム構成図である。
【図１Ｂ】本発明の図１Ａにおけるコンピュータモジュールの概略図である。
【図２】本発明の、図１Ａのコンピュータシステムにエンジンサーバーを追加した構成図である。
【図３】本発明のメニューバー、ツールバー、ワークエリア、フローティングパレットを含む典型的なアプリケーションのメインウインドウを示す図である。
【図４】本発明のコンテナ間のリンク、アンカーやスライダーを持つ典型的なコンテナの一面をスクリーン、ツール、アイコンで示す図である。
【図５】本発明の典型的なコンテナルールを示す図である。
【図６】本発明のリンクを作成するフローを示す図である。
【図７】リンク作成時のＵＩ図例を示す図である。
【図８】本発明におけるレイアウト計算の全体フローを示す図である。
【図９】本発明におけるレイアウト計算の詳細フローを示す図である。
【図１０】本発明における図９のフローに対応するＵＩ例を示す図である。
【図１１】本発明のレイアウト計算時におけるコンテナの集合について説明した図である。
【図１２】本発明の典型的な可変リンクによるコンテナ配置を示す図である。
【図１３】本発明の図１２の状態までの操作遷移を表す図である。
【図１４】本発明の典型的なリンクの設定ダイアログウィンドウを示す図である。
【図１５】本発明の固定リンクによるレイアウト結果を示す図である。
【図１６】本発明の可変リンクによるレイアウト結果を示す図である。
【図１７】本発明の条件式を設定するプロパティダイアログウィンドウを示す図である。
【図１８】本発明における条件式の割り当てと、原点及び集約点の設定をするプロパティダイアログウィンドウを示す図である。
【図１９】本発明におけるレイアウト動作の一例を示す図である。
【図２０】本発明におけるレイアウト動作の別の一例を示す図である。
【図２１】本発明におけるレイアウト動作の別の一例を示す図である。
【図２２】本発明におけるエディットウィンドウ上での、プレビュー動作の一例を示す図である。
【図２３】本発明における原点及び集約点の設定フローを示す図である。
【図２４】本発明における原点及び集約点のコントロールフローを示す図である。
【図２５】本発明における原点の自動計算のフローを示す図である。
【図２６】本発明におけるプレビュー動作のフローを示す図である。
【図２７】本発明における原点設定時のマークの移動方法についてのフローを示す図である。
【符号の説明】
【０１７３】
１０１  汎用コンピュータモジュール
１０３  ユーザインターフェース
１０５  レイアウトエンジン
１１９  データベース
１２１  レイアウトアプリケーションプログラム
１３２  キーボード
【図１Ａ】
2007048198.tif 000003
【図１Ｂ】
2007048198.tif 000004
【図２】
2007048198.tif 000005
【図３】
2007048198.tif 000006
【図４】
2007048198.tif 000007
【図５】
2007048198.tif 000008
【図６】
2007048198.tif 000009
【図７】
2007048198.tif 000010
【図８】
2007048198.tif 000011
【図９】
2007048198.tif 000012
【図１０】
2007048198.tif 000013
【図１１】
2007048198.tif 000014
【図１２】
2007048198.tif 000015
【図１３】
2007048198.tif 000016
【図１４】
2007048198.tif 000017
【図１５】
2007048198.tif 000018
【図１６】
2007048198.tif 000019
【図１７】
2007048198.tif 000020
【図１８】
2007048198.tif 000021
【図１９】
2007048198.tif 000022
【図２０】
2007048198.tif 000023
【図２１】
2007048198.tif 000024
【図２２】
2007048198.tif 000025
【図２３】
2007048198.tif 000026
【図２４】
2007048198.tif 000027
【図２５】
2007048198.tif 000028
【図２６】
2007048198.tif 000029
【図２７】
2007048198.tif 000030