/*
* $Id$
*
* License Agreement.
*
* Rich Faces - Natural Ajax for Java Server Faces (JSF)
*
* Copyright (C) 2007 Exadel, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
package org.richfaces.cdk.test.component;
import java.util.List;
import javax.el.MethodExpression;
import javax.el.ValueExpression;
import javax.faces.component.UIComponent;
import javax.faces.component.UIComponentBase;
import javax.faces.component.ValueHolder;
import javax.faces.el.MethodBinding;
import javax.faces.el.ValueBinding;
import javax.faces.event.ValueChangeEvent;
import javax.faces.event.ValueChangeListener;
import org.richfaces.cdk.annotations.Alias;
import org.richfaces.cdk.annotations.Attribute;
import org.richfaces.cdk.annotations.Description;
import org.richfaces.cdk.annotations.Event;
import org.richfaces.cdk.annotations.EventName;
import org.richfaces.cdk.annotations.Facet;
import org.richfaces.cdk.annotations.JsfComponent;
import org.richfaces.cdk.annotations.JsfRenderer;
import org.richfaces.cdk.annotations.RendererSpecificComponent;
import org.richfaces.cdk.annotations.Signature;
import org.richfaces.cdk.annotations.Tag;
import org.richfaces.cdk.test.event.TestEvent;
import org.richfaces.cdk.test.model.TestModel;
/**
* <p class="changed_added_4_0">
* Test component that generates a set of the output components.
* </p>
*
* @author asmirnov@exadel.com
*
*/
@JsfComponent(type = "org.richfaces.cdk.test.TestComponent",
family="org.richfaces.Test",
description=@Description(displayName="Test Component",largeIcon="large.gif",smallIcon="spall.png"),
generate="org.richfaces.cdk.test.component.UITestComponent",
facets=@Facet(name="caption",generate=true,description=@Description("Caption Facet")),
fires={@Event(TestEvent.class),@Event(value=ValueChangeEvent.class,listener=ValueChangeListener.class)},
interfaces=ValueHolder.class,
components={
@RendererSpecificComponent(type = "org.richfaces.cdk.test.TestHtmlAbbr",
description=@Description(displayName="Test HTML5 abbreviation",largeIcon="large.gif",smallIcon="spall.png"),
tag=@Tag(name="abbr",generate=true,handler="org.richfaces.cdk.test.facelets.AbbrTagHandler"),
generate="org.richfaces.cdk.test.component.html.HtmlTestAbbr",
attributes={"core-props.xml","events-props.xml","i18n-props.xml"},
interfaces=Html5Attributes.class,
renderer=@JsfRenderer(type="org.richfaces.cdk.test.HtmlAbbrRenderer")),
@RendererSpecificComponent(type = "org.richfaces.cdk.test.TestHtmlDfn",
tag=@Tag(name="dfn"),
generate="org.richfaces.cdk.test.component.html.HtmlTestDfn",
renderer=@JsfRenderer(template="/testComponent.xml"),
attributes="html5.xml")
}
)
public abstract class AbstractTestComponent extends TestComponentBase /*implements ValueHolder */{
@Facet
public abstract UIComponent getFooter();
@Attribute
public abstract String getTitle();
/**
* Test Attribute
*/
@Attribute
public abstract List<String> getTestValue();
/**
* Keyword Attribute
*/
@Attribute
public abstract String getFor();
/**
* Bar Attribute
*/
@Attribute
public abstract void setBarValue(List<Object> bar);
@Attribute(
aliases={@Alias("getAction")},
defaultValue="",
description=@Description(),
events={@EventName(value="click",defaultEvent=true)},
hidden=false,
literal=false,
passThrough=false,
readOnly=true,
required=false,
suggestedValue="#{foo}",
signature = @Signature(parameters = String.class, returnType = Boolean.class))
public abstract MethodExpression getMethodExpression();
@Attribute(signature = @Signature(parameters = {String.class,Integer.class}, returnType = int.class))
public abstract MethodBinding getMethodBindingListener();
@Attribute(required=true,signature=@Signature(returnType=TestModel.class))
public abstract ValueExpression getValueExpressionProperty();
@Attribute(required=true,signature=@Signature(returnType=List.class,parameters={String.class,int.class}))
public abstract ValueBinding getValueBindingProperty();
}