1 /*
2 * Copyright 2004-2008 the Seasar Foundation and the Others.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 * either express or implied. See the License for the specific language
14 * governing permissions and limitations under the License.
15 */
16 package org.seasar.uruma.renderer;
17
18 import org.seasar.uruma.component.UIComponent;
19 import org.seasar.uruma.context.PartContext;
20 import org.seasar.uruma.context.WidgetHandle;
21 import org.seasar.uruma.context.WindowContext;
22
23 /**
24 * ウィジットをレンダリングするためのインターフェースです。<br />
25 *
26 * @author y-komori
27 */
28 public interface Renderer {
29 /**
30 * レンダリングを行います。</br>
31 * <p>
32 * 本メソッドは、{@link UIComponent#preRender(WidgetHandle, org.seasar.uruma.context.WindowContext)}
33 * の内部から呼び出されます。<br />
34 * </p>
35 *
36 * @param uiComponent
37 * レンダリング対象の情報を持つ {@link UIComponent} オブジェクト
38 * @param parent
39 * 親となる {@link WidgetHandle} オブジェクト
40 * @param context
41 * 画面情報を収めた {@link WindowContext} オブジェクト
42 * @return レンダリングしたウィジットのハンドル
43 */
44 public WidgetHandle preRender(UIComponent uiComponent, WidgetHandle parent,
45 WindowContext context);
46
47 /**
48 * レンダリングを行います。</br>
49 *
50 * @param uiComponent
51 * レンダリング対象の情報を持つ {@link UIComponent} オブジェクト
52 * @param parent
53 * 親となる {@link WidgetHandle} オブジェクト
54 * @param context
55 * 画面情報を収めた {@link PartContext} オブジェクト
56 * @return レンダリングしたウィジットのハンドル
57 */
58 public WidgetHandle render(UIComponent uiComponent, WidgetHandle parent,
59 PartContext context);
60
61 /**
62 * 子のレンダリングが終わった後に呼び出されるメソッドです。</br>
63 *
64 * @param widget
65 * {@link Renderer#render(UIComponent, WidgetHandle, PartContext) render()}
66 * メソッドでレンダリングされた {@link WidgetHandle} オブジェクト
67 *
68 * @param uiComponent
69 * レンダリング対象の情報を持つ {@link UIComponent} オブジェクト
70 * @param parent
71 * 親となる {@link WidgetHandle} オブジェクト
72 * @param context
73 * 画面情報を収めた {@link PartContext} オブジェクト
74 */
75 public void renderAfter(WidgetHandle widget, UIComponent uiComponent,
76 WidgetHandle parent, PartContext context);
77
78 /**
79 * 一度レンダリングしたウィジットに対する再レンダリングを行います。<br />
80 * 再レンダリングとは、 {@link UIComponent} が保持する情報をウィジットに対して再度反映させる処理のことです。<br />
81 * 再レンダリングを行うには、変更したい属性に対応する {@link UIComponent} の属性を変更し、変更対象のウィジットと
82 * {@link UIComponent} を保持する {@link WidgetHandle} を本メソッドの引数として渡してください。
83 *
84 * @param widget
85 * 再レンダリング対象のウィジットと {@link UIComponent} を保持する
86 * {@link WidgetHandle} オブジェクト
87 */
88 public void reRender(WidgetHandle widget);
89 }