|
前のページ
|
1/3|
次のページ
というわけで、WODisplayGroup研究の続編です。なお、この記事シリーズでは、よくセミナーのデモなどで使われるWOMoviesのMoviesテーブルの利用を前提としています。
初期設定項目
WODisplayGroupの各種設定は、コンポーネントの中の.wooファイルに記録されます。実際には、WOBuilderを用いて設定を行います。
前回ご紹介した方法などでWODisplayGroupのインスタンスを作り、WOBuilderのインスタンスブラウザ上で同インスタンスをダブルクリックすると、display group optionというパネルが開きます。

設定パネル
WODisplayGroupの各種設定は、ここを用いて行います。
Entity
プルダウンメニューからこのDisplayGroupが取り扱うEntityを選択します。直接Entity名を入力してもかまいません。
Master/Detail
このブロックは、"Has detail data source"をチェックすることで有効になります。これをチェックすると、このdisplay groupがdetail display groupとして動作します。detail display groupとは、master-details関係にあるdetailを、masterに従属させる形で取り扱うためのdisplay groupです。
具体的には、たとえば一つのスタジオが複数の映画を所有しているという場合を想像してみてください。スタジオがmaster、映画情報がdetailsに相当します。
WODisplayGroupの操作の対象となるのはdetailである映画情報ですが、映画情報は単独で存在するのではなくスタジオに所属しています。
detail display groupを生成するには、EOModelerからWOBuilderにEntityアイコンをドラッグ&ドロップする際に、たとえばMovieのentityアイコンではなく、Studio entityアイコンの左にあるプラス印をクリックすると表示されるリレーションを示すentityアイコンの中から、to manyリレーションへのentityアイコンを選び、これをWOBuilderにドラッグ&ドロップします。

Studio下のmoviesをドラッグ&ドロップ
そうすると、以下のようなdisplay group optionパネルが開きます。

Detailを使用しているパネル
detail display groupを使う場合には、プログラム上でmaster objectをセットする必要があります。master objectをセットした上でfetchをすると、自動的にそのmasterにぶら下がるdetailsだけが取り込まれます。具体的には、
|
displayGroup.setMasterObject (master);
displayGroup.fetch();
|
と書きます。例えば、スタジオ一覧を表示していて、スタジオの一つをクリックすると、別のページでそのスタジオが持っている映画の一覧表が表示される、というような処理では、スタジオ一覧のWORepetitionのitemにバインドされたstudioを、映画一覧表で使用するdetail display groupに対してセットします。
|
PageStudioList.java: public PageMovieList actionClickStudio() {
PageMovieList page = (PageMovieList) pageWithName ("PageMovieList");
page.setStudio (studio);
return page;
}
QuickTimeムービーを開く ieList.java:
public void setStudio (Studio newStudio) {
studio = newStudio;
displayGroup.setMasterObject (newStudio);
displayGroup.fetch();}
|
[倉橋浩一, ITmedia]
前のページ | 1/3 | 次のページ
|