1 package org.weda.tapestry.component;
2
3 import org.apache.tapestry.AbstractComponent;
4 import org.apache.tapestry.IMarkupWriter;
5 import org.apache.tapestry.IRequestCycle;
6 import org.apache.tapestry.annotations.ComponentClass;
7 import org.apache.tapestry.annotations.InjectObject;
8 import org.apache.tapestry.annotations.Parameter;
9 import org.weda.converter.ValueTypeConverter;
10 import org.weda.tapestry.renderer.Renderer;
11 import org.weda.property.PropertyDescriptor;
12
13 /**Цель: делегировать прорисовку компоненту указанному в свойстве <code>renderer
14 * </code>
15 *
16 * @author tim
17 */
18 @ComponentClass(allowBody=false)
19 public abstract class ValueRenderer extends AbstractComponent {
20
21 @Parameter(required=true)
22 public abstract Renderer getRenderer();
23 @Parameter(required=true)
24 public abstract Object getValue();
25 @Parameter(required=true)
26 public abstract PropertyDescriptor getPropertyDescriptor();
27 @Parameter(required=true)
28 public abstract Object getDataId();
29 @InjectObject("service:org.weda.converter.ValueTypeConverter")
30 public abstract ValueTypeConverter getConverter();
31
32 protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle) {
33 getRenderer().render(
34 writer, cycle, getPropertyDescriptor(), getConverter()
35 , getValue(), getDataId());
36 }
37
38 }