Author: Alex.Kolonitsky
Date: 2010-03-30 08:16:40 -0400 (Tue, 30 Mar 2010)
New Revision: 16684
Added:
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractCommandButton.java
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractCommandLink.java
root/ui/trunk/components/core/src/main/java/org/richfaces/renderkit/html/CommandButtonRendererBase.java
Removed:
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractAjaxCommandButton.java
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractAjaxCommandLink.java
root/ui/trunk/components/core/src/main/java/org/richfaces/renderkit/html/AjaxCommandButtonRendererBase.java
Modified:
root/cdk/trunk/plugins/annotations/src/main/java/org/richfaces/cdk/annotations/JsfComponent.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/NamingConventions.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/RichFacesConventions.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/AttributeProcessor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ComponentProcessor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ProcessorBase.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/RendererProcessor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibGeneratorVisitor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ComponentLibrary.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ComponentModel.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/RendererModel.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererClassGenerator.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererTemplateParser.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/model/ComponentAdapter.java
root/ui/trunk/components/core/src/main/config/faces-config.xml
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractAjaxLog.java
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractMediaOutput.java
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractOutputPanel.java
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractPush.java
root/ui/trunk/components/core/src/main/java/org/richfaces/renderkit/AjaxFunctionRendererBase.java
root/ui/trunk/components/core/src/main/java/org/richfaces/renderkit/html/AjaxPushRenderer.java
root/ui/trunk/components/core/src/main/resources/META-INF/a4j.taglib.xml
root/ui/trunk/components/core/src/main/templates/org/ajax4jsf/renderkit/html/button.template.xml
root/ui/trunk/components/core/src/main/templates/org/ajax4jsf/renderkit/html/link.template.xml
Log:
RF-8232 Tags support
Correction generation of taglib and facesconfig
Modified:
root/cdk/trunk/plugins/annotations/src/main/java/org/richfaces/cdk/annotations/JsfComponent.java
===================================================================
---
root/cdk/trunk/plugins/annotations/src/main/java/org/richfaces/cdk/annotations/JsfComponent.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/cdk/trunk/plugins/annotations/src/main/java/org/richfaces/cdk/annotations/JsfComponent.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -129,7 +129,7 @@
*
* @return
*/
- public Tag[] tag() default {};
+ public Tag[] tag() default {@Tag};
/**
* <p class="changed_added_4_0">
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/NamingConventions.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/NamingConventions.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/NamingConventions.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -53,6 +53,8 @@
*/
public FacesId inferComponentType(ClassName componentClass) throws
InvalidNameException;
+ public FacesId inferComponentType(String componentFamily) throws
InvalidNameException;
+
/**
* <p class="changed_added_4_0">Calculates concrete component class
from explicit value or type.</p>
* <ul>
@@ -88,4 +90,10 @@
public String inferRendererTypeByTemplatePath(String templateName);
public String inferRendererName(RendererModel.Type type);
+
+ public String inferComponentTypeByRendererClass(String s);
+
+ public String inferComponentFamilyByRendererClass(String s);
+
+ public String inferRendererBaseName(RendererModel.Type type);
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/RichFacesConventions.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/RichFacesConventions.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/RichFacesConventions.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -4,10 +4,13 @@
import org.richfaces.cdk.model.FacesId;
import org.richfaces.cdk.model.InvalidNameException;
import org.richfaces.cdk.model.Name;
+import org.richfaces.cdk.model.Name.Classifier;
import org.richfaces.cdk.model.RendererModel;
-import org.richfaces.cdk.model.Name.Classifier;
import org.richfaces.cdk.util.Strings;
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
+
/**
* <p class="changed_added_4_0">
* </p>
@@ -75,6 +78,11 @@
}
@Override
+ public FacesId inferComponentType(String componentFamily) throws InvalidNameException
{
+ return new FacesId(componentFamily);
+ }
+
+ @Override
public ClassName inferUIComponentClass(FacesId componentType) throws
InvalidNameException {
if (null == componentType) {
throw new IllegalArgumentException();
@@ -134,7 +142,12 @@
}
public String inferRendererTypeByRendererClass(ClassName rendererClass) {
- return null;
+ Pattern pattern =
Pattern.compile("^(.*).renderkit.(.*\\.)?(.*)RendererBase$");
+ Matcher matcher = pattern.matcher(rendererClass.getName());
+ if (matcher.matches()) {
+ return matcher.group(1) + "." + matcher.group(3) +
"Renderer";
+ }
+ return "";
}
public String inferComponentFamily(RendererModel.Type type) {
@@ -152,5 +165,22 @@
public String inferRendererName(RendererModel.Type type) {
return null;
}
+
+ public String inferRendererBaseName(RendererModel.Type type) {
+ return null;
+ }
+
+ public String inferComponentTypeByRendererClass(String s) {
+ Pattern pattern =
Pattern.compile("^(.*).renderkit.(.*\\.)?(.*)RendererBase$");
+ Matcher matcher = pattern.matcher(s);
+ if (matcher.matches()) {
+ return matcher.group(1) + "." + matcher.group(3);
+ }
+ return "";
+ }
+
+ public String inferComponentFamilyByRendererClass(String s) {
+ return inferComponentTypeByRendererClass(s);
+ }
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/AttributeProcessor.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/AttributeProcessor.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/AttributeProcessor.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -44,6 +44,7 @@
public class AttributeProcessor extends ProcessorBase {
private static final String SIGNATURE_NONE_CLASS_NAME =
Signature.NONE.class.getName().replace('$', '.');
+ private static final String STRING_NAME = String.class.getName();
public void process(SourceUtils.BeanProperty beanProperty, PropertyBase attribute) {
@@ -66,9 +67,13 @@
String defaultValue = attributeAnnotarion.defaultValue();
if (!Strings.isEmpty(defaultValue)) {
+ if (STRING_NAME.equals(attribute.getType().toString())) {
+ defaultValue = "\"" + defaultValue +
"\"";
+ }
attribute.setDefaultValue(defaultValue);
}
+
String suggestedValue = attributeAnnotarion.suggestedValue();
if (!Strings.isEmpty(suggestedValue)) {
attribute.setSuggestedValue(suggestedValue);
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ComponentProcessor.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ComponentProcessor.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ComponentProcessor.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -26,7 +26,6 @@
import com.google.inject.Inject;
import org.richfaces.cdk.CdkException;
-import org.richfaces.cdk.NamingConventions;
import org.richfaces.cdk.annotations.Event;
import org.richfaces.cdk.annotations.Facet;
import org.richfaces.cdk.annotations.JsfComponent;
@@ -63,9 +62,6 @@
@Inject
private RendererProcessor rendererProcessor;
- @Inject
- private NamingConventions namingConventions;
-
public void process(TypeElement componentElement, ComponentLibrary library) {
JsfComponent annotation = componentElement.getAnnotation(JsfComponent.class);
if (annotation == null) {
@@ -195,12 +191,4 @@
public final Class<? extends Annotation> getProcessedAnnotation() {
return JsfComponent.class;
}
-
- public NamingConventions getNamingConventions() {
- return namingConventions;
- }
-
- public void setNamingConventions(NamingConventions namingConventions) {
- this.namingConventions = namingConventions;
- }
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ProcessorBase.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ProcessorBase.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/ProcessorBase.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -4,6 +4,7 @@
import com.google.inject.Inject;
import com.google.inject.Provider;
import org.richfaces.cdk.CdkException;
+import org.richfaces.cdk.NamingConventions;
import org.richfaces.cdk.annotations.Attribute;
import org.richfaces.cdk.annotations.Icon;
import org.richfaces.cdk.annotations.Tag;
@@ -27,10 +28,8 @@
public abstract class ProcessorBase {
-
@Inject
private Provider<SourceUtils> sourceUtils;
-
@Inject
private FragmentParser fragmentParser;
@@ -38,6 +37,10 @@
@Inject
private AttributeProcessor attributeProcessor;
+ @Inject
+ private NamingConventions namingConventions;
+
+
public FragmentParser getFragmentParser() {
return this.fragmentParser;
}
@@ -47,10 +50,12 @@
}
protected void setTagInfo(Tag tag, ModelElementBase model) {
+ TagModel tagModel = new TagModel();
String name = tag.name();
-
- TagModel tagModel = new TagModel();
+ if (Strings.isEmpty(name)) {
+ name = getNamingConventions().inferTagName(model.getId());
+ }
tagModel.setName(name);
tagModel.setTargetClass(ClassName.parseName(tag.handler()));
tagModel.setType(tag.type());
@@ -152,4 +157,12 @@
attributeProcessor.process(beanProperty,
component.getOrCreateAttribute(beanProperty.getName()));
}
}
+
+ public NamingConventions getNamingConventions() {
+ return namingConventions;
+ }
+
+ public void setNamingConventions(NamingConventions namingConventions) {
+ this.namingConventions = namingConventions;
+ }
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/RendererProcessor.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/RendererProcessor.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/apt/processors/RendererProcessor.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -25,7 +25,6 @@
import org.richfaces.cdk.FileManager;
import org.richfaces.cdk.Source;
import org.richfaces.cdk.Sources;
-import org.richfaces.cdk.annotations.Family;
import org.richfaces.cdk.annotations.JsfComponent;
import org.richfaces.cdk.annotations.JsfRenderer;
import org.richfaces.cdk.model.ClassName;
@@ -36,6 +35,7 @@
import javax.annotation.processing.SupportedAnnotationTypes;
import javax.faces.render.RenderKitFactory;
+import javax.lang.model.element.Modifier;
import javax.lang.model.element.TypeElement;
import java.io.File;
import java.io.FileNotFoundException;
@@ -48,6 +48,10 @@
@SupportedAnnotationTypes({"javax.faces.component.FacesComponent",
JsfRenderer.NAME})
public class RendererProcessor extends ProcessorBase implements CdkAnnotationProcessor {
+ private static final String COMPONENT_FAMILY = "COMPONENT_FAMILY";
+
+ private static final String RENDERER_TYPE = "RENDERER_TYPE";
+
@Inject
@Source(Sources.RENDERER_TEMPLATES)
private FileManager sources;
@@ -73,10 +77,12 @@
public RendererModel process(TypeElement rendererElement, JsfRenderer annotation,
ComponentLibrary library) {
RendererModel rendererModel = new RendererModel();
- rendererModel.setRendererClass(new
ClassName(rendererElement.getQualifiedName().toString()));
- setRendererType(rendererModel, annotation);
- setComponentFamily(rendererModel, annotation);
+ setClassNames(rendererElement, rendererModel, null);
+
+ setRendererType(rendererElement, rendererModel, annotation);
+ setComponentType(rendererModel);
+ setComponentFamily(rendererElement, rendererModel, annotation);
setDescription(rendererModel, annotation.icon(), getDocComment(rendererElement),
annotation.displayName());
setTemplate(rendererModel, annotation);
@@ -89,6 +95,22 @@
return rendererModel;
}
+ protected void setClassNames(TypeElement componentElement, RendererModel
modelElement, String generatedClass) {
+
+ if (componentElement.getModifiers().contains(Modifier.ABSTRACT) ||
!Strings.isEmpty(generatedClass)) {
+ modelElement.setGenerate(true);
+ modelElement.setRendererClass(ClassName.parseName(generatedClass));
+ } else {
+ modelElement.setGenerate(false);
+ }
+
+
modelElement.setBaseClass(ClassName.parseName(componentElement.getQualifiedName().toString()));
+ }
+
+ private void setComponentType(RendererModel rendererModel) {
+ getNamingConventions().inferComponentType(rendererModel.getFamily());
+ }
+
private void addToRenderKit(JsfRenderer annotation, ComponentLibrary library,
RendererModel rendererModel) {
String renderKitId = annotation.renderKitId();
if (Strings.isEmpty(renderKitId)) {
@@ -119,20 +141,41 @@
}
}
- private void setComponentFamily(RendererModel rendererModel, JsfRenderer annotation)
{
+ private void setComponentFamily(TypeElement rendererElement, RendererModel
rendererModel, JsfRenderer annotation) {
String family = annotation.family();
if (!Strings.isEmpty(family)) {
rendererModel.setFamily(family);
+ return;
}
+
+ Object value = getSourceUtils().getConstant(asClassDesctiption(rendererElement),
COMPONENT_FAMILY);
+ if (value != null) {
+ rendererModel.setFamily(value.toString());
+ return;
+ }
+
+ rendererModel.setFamily(getNamingConventions()
+
.inferComponentFamilyByRendererClass(rendererElement.getQualifiedName().toString()));
}
- private void setRendererType(RendererModel rendererModel, JsfRenderer annotation) {
+ private String getRendererType(TypeElement rendererElement, JsfRenderer annotation)
{
String type = annotation.type();
if (!Strings.isEmpty(type)) {
- rendererModel.setType(new RendererModel.Type(type));
+ return type;
}
+
+ Object value = getSourceUtils().getConstant(asClassDesctiption(rendererElement),
RENDERER_TYPE);
+ if (value != null) {
+ return value.toString();
+ }
+
+ return
getNamingConventions().inferRendererTypeByRendererClass(asClassDesctiption(rendererElement));
}
+ private void setRendererType(TypeElement rendererElement, RendererModel
rendererModel, JsfRenderer annotation) {
+ rendererModel.setType(new RendererModel.Type(getRendererType(rendererElement,
annotation)));
+ }
+
protected String getComponentType(TypeElement componentElement) {
JsfComponent annotation = componentElement.getAnnotation(JsfComponent.class);
if (annotation != null) {
@@ -142,20 +185,6 @@
return null;
}
- private void setRendererFamily(TypeElement rendererElement, RendererModel renderer)
{
- Family family = rendererElement.getAnnotation(Family.class);
-
- if (null != family) {
- renderer.setFamily(family.value());
- } else {
- // static final COMPONENT_FAMILY string constant.
- Object value =
getSourceUtils().getConstant(asClassDesctiption(rendererElement),
"COMPONENT_FAMILY");
- if (null != value) {
- renderer.setFamily(value.toString());
- }
- }
- }
-
@Override
public Class<? extends Annotation> getProcessedAnnotation() {
return JsfRenderer.class;
@@ -164,5 +193,4 @@
protected String[] getAnnotationAttributes(TypeElement componentElement) {
return null;
}
-
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibGeneratorVisitor.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibGeneratorVisitor.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/generate/taglib/TaglibGeneratorVisitor.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -28,12 +28,10 @@
import org.richfaces.cdk.annotations.TagType;
import org.richfaces.cdk.model.BeanModelBase;
import org.richfaces.cdk.model.BehaviorModel;
-import org.richfaces.cdk.model.BehaviorRenderer;
import org.richfaces.cdk.model.ComponentLibrary;
import org.richfaces.cdk.model.ComponentModel;
import org.richfaces.cdk.model.ConverterModel;
-import org.richfaces.cdk.model.EventModel;
-import org.richfaces.cdk.model.FacetModel;
+import org.richfaces.cdk.model.EmptyVisitor;
import org.richfaces.cdk.model.ListenerModel;
import org.richfaces.cdk.model.ModelElement;
import org.richfaces.cdk.model.PropertyBase;
@@ -41,7 +39,6 @@
import org.richfaces.cdk.model.RendererModel;
import org.richfaces.cdk.model.TagModel;
import org.richfaces.cdk.model.ValidatorModel;
-import org.richfaces.cdk.model.Visitor;
import java.util.List;
@@ -49,13 +46,18 @@
* @author akolonitsky
* @since Feb 3, 2010
*/
-public class TaglibGeneratorVisitor implements Visitor {
+public class TaglibGeneratorVisitor extends EmptyVisitor {
private static final String COMPONENT = "component";
private static final String COMPONENT_TYPE = "component-type";
+ private static final String RENDERER_TYPE = "renderer-type";
+ private static final String HANDLER_CLASS = "handler-class";
private Document document = DocumentHelper.createDocument();
+
private Element faceletTaglib;
+ private ComponentLibrary componentLibrary;
+
public Document getDocument() {
return document;
}
@@ -65,6 +67,8 @@
}
public void visitComponentLibrary(ComponentLibrary model) {
+ this.componentLibrary = model;
+
faceletTaglib = document.addElement("facelet-taglib",
"http://java.sun.com/xml/ns/javaee");
faceletTaglib.addAttribute("version", "2.0");
@@ -75,23 +79,27 @@
public void visitComponent(ComponentModel model) {
for (TagModel tagModel : model.getTags()) {
- if (TagType.Facelets.equals(tagModel.getType())) {
- Element tag = createTag(tagModel.getName());
- Element component = tag.addElement(COMPONENT);
- component.addElement(COMPONENT_TYPE).addText(model.getType().getType());
- RendererModel renderer = model.getRenderer();
- if (null != renderer) {
-
component.addElement("renderer-type").addText(renderer.getType().getType());
- }
- addTagHandler(component, tagModel);
- appendAttributs(tag, model);
+ if (TagType.Facelets != tagModel.getType()
+ && TagType.All != tagModel.getType()) {
+
+ continue;
}
+
+ Element tag = createTag(tagModel.getName());
+ Element component = tag.addElement(COMPONENT);
+ component.addElement(COMPONENT_TYPE).addText(model.getType().getType());
+ RendererModel renderer = componentLibrary.getRenderer(model.getFamily(),
model.getType().getType());
+ if (null != renderer) {
+
component.addElement(RENDERER_TYPE).addText(renderer.getType().getType());
+ }
+ addTagHandler(component, tagModel);
+ appendAttributs(tag, model);
}
}
private void addTagHandler(Element parent, TagModel tag) {
if (tag != null && tag.getTargetClass() != null) {
-
parent.addElement("handler-class").addText(tag.getTargetClass().toString());
+ parent.addElement(HANDLER_CLASS).addText(tag.getTargetClass().toString());
}
}
@@ -188,22 +196,6 @@
}
}
- public void visitFacet(FacetModel model) {
-
- }
-
- public void visitEvent(EventModel model) {
-
- }
-
- public void visitBehaviorRenderer(BehaviorRenderer model) {
-
- }
-
- public void visitProperty(PropertyBase model) {
-
- }
-
public void visitRenderKit(RenderKitModel model) {
for (RendererModel renderer : model.getRenderers()) {
visitRender(renderer);
@@ -220,7 +212,7 @@
return;
}
- component.addElement("renderer-type", model.getType().getType());
+ component.addElement(RENDERER_TYPE, model.getType().getType());
}
private Element findComponent(String family) {
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ComponentLibrary.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ComponentLibrary.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ComponentLibrary.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -27,6 +27,7 @@
import com.google.inject.Singleton;
import org.richfaces.cdk.model.RenderKitModel.Id;
+import org.richfaces.cdk.util.Strings;
import java.beans.IntrospectionException;
import java.beans.Introspector;
@@ -35,8 +36,10 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collection;
+import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
+import java.util.ArrayList;
/**
* <p class="changed_added_4_0">
@@ -193,6 +196,42 @@
this.addRenderer(new RenderKitModel.Id(renderKitId), rendererModel);
}
+ public RendererModel getRenderer(String componentFamily, String componentType) {
+ if (Strings.isEmpty(componentFamily)) {
+ return null;
+ }
+
+ List<RendererModel> res = new ArrayList<RendererModel>();
+ for (RenderKitModel renderKitModel : renderKits.values()) {
+ for (RendererModel rendererModel : renderKitModel.getRenderers()) {
+ if (componentFamily.equals(rendererModel.getFamily())) {
+ res.add(rendererModel);
+ }
+ }
+ }
+
+ if (res.size() == 0) {
+ return null;
+ }
+
+ if (res.size() > 1) {
+ for (RendererModel renderer : res) {
+ String rendererComponentType = renderer.getComponentType();
+ if (rendererComponentType == null) {
+ if (renderer.getType().getType().startsWith(componentType)) {
+ return renderer; // TODO do it throw naming convention
+ }
+ } else {
+ if (rendererComponentType.equals(componentType)) {
+ return renderer;
+ }
+ }
+ }
+ }
+
+ return res.get(0);
+ }
+
/**
* <p class="changed_added_4_0">
* </p>
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ComponentModel.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ComponentModel.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ComponentModel.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -32,12 +32,8 @@
* relation.
* </p>
*/
-// private final ModelCollection<RendererModel> renderers =
ModelCollection.<RendererModel>create();
-
private String family;
- private RendererModel renderer;
-
public ComponentModel(FacesId key) {
this.setId(key);
}
@@ -172,20 +168,8 @@
return event;
}
- /**
- * <p class="changed_added_4_0"></p>
- * TODO - synchronize renderers collection with library ?
- * @return the renderers
- */
- public RendererModel getRenderer() {
- return renderer;
+ @Override
+ public String toString() {
+ return "Component {type: " + getType() + ", family: " +
getFamily() + "}";
}
-
- /**
- * <p class="changed_added_4_0"></p>
- * @param renderer the renderer to set
- */
- public void setRenderer(RendererModel renderer) {
- this.renderer = renderer;
- }
}
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/RendererModel.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/RendererModel.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/RendererModel.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -26,23 +26,27 @@
package org.richfaces.cdk.model;
import org.richfaces.cdk.templatecompiler.model.Template;
+import org.richfaces.cdk.util.Strings;
/**
* <p class="changed_added_4_0"></p>
* @author asmirnov(a)exadel.com
*
*/
-public class RendererModel extends BeanModelBase implements
ModelElement<RendererModel> {
+public class RendererModel extends ModelElementBase implements
ModelElement<RendererModel> {
private static final long serialVersionUID = -5802466539382148578L;
+ private RenderKitModel.Id renderKitId;
+
private String family;
- private ClassName rendererClass;
+
+ private String componentType;
+
private String templatePath;
+
private Template template;
- private Type type;
- private RenderKitModel.Id renderKitId;
-
+
private boolean rendersChildren;
private TagModel tag;
@@ -50,107 +54,59 @@
public RendererModel() { }
public RendererModel(Type type) {
- this.type = type;
+ setType(type);
}
- /*
- * (non-Javadoc)
- * @see org.richfaces.cdk.model.ModelElement#getType()
- */
public Type getKey() {
- return type;
+ return getType();
}
- /**
- * <p class="changed_added_4_0"></p>
- * @param type the type to set
- */
public void setType(Type type) {
- this.type = type;
+ this.setId(type);
}
public Type getType() {
- return type;
+ return (Type) getId();
}
- /**
- * <p class="changed_added_4_0"></p>
- * @return the template
- */
@Merge
public Template getTemplate() {
return template;
}
- /**
- * <p class="changed_added_4_0"></p>
- * @param template the template to set
- */
public void setTemplate(Template template) {
this.template = template;
}
- /**
- * <p class="changed_added_4_0"></p>
- * @return the family
- */
@Merge
public String getFamily() {
return family;
}
- /**
- * <p class="changed_added_4_0"></p>
- * @param family the family to set
- */
public void setFamily(String family) {
this.family = family;
}
- /**
- * <p class="changed_added_4_0"></p>
- * @return the rendererClass
- */
public ClassName getRendererClass() {
- return rendererClass;
+ return getTargetClass();
}
- /**
- * <p class="changed_added_4_0"></p>
- * @param rendererClass the rendererClass to set
- */
public void setRendererClass(ClassName rendererClass) {
- this.rendererClass = rendererClass;
+ setTargetClass(rendererClass);
}
- /**
- * <p class="changed_added_4_0"></p>
- * @return the rendersChildren
- */
public boolean isRendersChildren() {
return this.rendersChildren;
}
- /**
- * <p class="changed_added_4_0"></p>
- * @param rendersChildren the rendersChildren to set
- */
public void setRendersChildren(boolean rendersChildren) {
this.rendersChildren = rendersChildren;
}
- /**
- * <p class="changed_added_4_0"></p>
- * @return the tag
- */
public TagModel getTag() {
return this.tag;
}
- /**
- * <p class="changed_added_4_0"></p>
- * @param tag the tag to set
- */
public void setTag(TagModel tag) {
this.tag = tag;
}
@@ -169,7 +125,22 @@
@Override
public void merge(RendererModel other) {
+ if (other == null) {
+ return;
+ }
+
ComponentLibrary.merge(this, other);
+
+ // TODO review
+ ClassName targetClass = this.getTargetClass();
+ if (targetClass == null || Strings.isEmpty(targetClass.getName())) {
+ setTargetClass(other.getTargetClass());
+ }
+
+ ClassName baseClass = this.getBaseClass();
+ if (baseClass == null || Strings.isEmpty(baseClass.getName())) {
+ setTargetClass(other.getBaseClass());
+ }
}
@Override
@@ -197,6 +168,14 @@
this.renderKitId = renderKitId;
}
+ public String getComponentType() {
+ return componentType;
+ }
+
+ public void setComponentType(String componentType) {
+ this.componentType = componentType;
+ }
+
/**
* <p class="changed_added_4_0">FacesId for lookup renderer in the
model.</p>
* @author asmirnov(a)exadel.com
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererClassGenerator.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererClassGenerator.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererClassGenerator.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -37,7 +37,6 @@
import org.richfaces.cdk.model.PropertyBase;
import org.richfaces.cdk.model.RenderKitModel;
import org.richfaces.cdk.model.RendererModel;
-import org.richfaces.cdk.model.RendererModel.Type;
import org.richfaces.cdk.templatecompiler.builder.model.JavaClass;
import org.richfaces.cdk.templatecompiler.model.Template;
@@ -79,18 +78,7 @@
}
private ComponentModel findComponentByRenderer(RendererModel renderer) {
- Type rendererType = renderer.getType();
- Collection<ComponentModel> components = library.getComponents();
- if (components != null) {
- for (ComponentModel component : components) {
- RendererModel rendererModel = component.getRenderer();
- if (rendererModel != null &&
rendererType.equals(rendererModel.getType())) {
- return component;
- }
- }
- }
-
- return null;
+ return library.getComponentModel(renderer.getFamily());
}
/*
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererTemplateParser.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererTemplateParser.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererTemplateParser.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -195,6 +195,7 @@
setRendererType(template, compositeInterface, renderer);
setFamily(compositeInterface, renderer); //TODO set default values according to
template name
setRendererClass(compositeInterface, renderer);
+ setRendererBaseClass(compositeInterface, renderer);
RenderKitModel renderKit =
library.addRenderKit(compositeInterface.getRenderKitId());
renderKit.getRenderers().add(renderer);
@@ -271,6 +272,14 @@
renderer.setRendererClass(new ClassName(javaClass));
}
+ private void setRendererBaseClass(CompositeInterface compositeInterface,
RendererModel renderer) {
+ String baseClass = compositeInterface.getBaseClass();
+ if (baseClass == null) {
+ baseClass =
getNamingConventions().inferRendererBaseName(renderer.getType());
+ }
+ renderer.setBaseClass(new ClassName(baseClass));
+ }
+
private void setFamily(CompositeInterface compositeInterface, RendererModel renderer)
{
String family = compositeInterface.getComponentFamily();
if (family == null) {
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/model/ComponentAdapter.java
===================================================================
---
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/model/ComponentAdapter.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/model/ComponentAdapter.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -51,9 +51,10 @@
@Override
protected void postMarshal(ComponentModel model, ComponentBean bean) {
super.postMarshal(model, bean);
- if(null != model.getRenderer()){
-
bean.getExtension().setRendererType(model.getRenderer().getType().getType());
- }
+// TODO
+// if(null != model.getRenderer()){
+//
bean.getExtension().setRendererType(model.getRenderer().getType().getType());
+// }
}
@Override
Modified: root/ui/trunk/components/core/src/main/config/faces-config.xml
===================================================================
--- root/ui/trunk/components/core/src/main/config/faces-config.xml 2010-03-29 15:14:11 UTC
(rev 16683)
+++ root/ui/trunk/components/core/src/main/config/faces-config.xml 2010-03-30 12:16:40 UTC
(rev 16684)
@@ -4,74 +4,67 @@
version="2.0">
<component>
- <component-type>org.richfaces.Push</component-type>
- <component-class>org.richfaces.component.html.HtmlPush</component-class>
+ <component-type>org.richfaces.Function</component-type>
+ <component-class>org.richfaces.component.html.HtmlAjaxFunction</component-class>
<component-extension>
- <cdk:generate
xmlns:cdk="http://richfaces.org/cdk/extensions">false</cd...
+ <cdk:generate
xmlns:cdk="http://richfaces.org/cdk/extensions"
>true</cdk:generate>
</component-extension>
</component>
-
<component>
- <component-type>org.richfaces.Function</component-type>
- <component-class>org.richfaces.component.html.HtmlAjaxFunction</component-class>
+ <component-type>org.richfaces.Status</component-type>
+ <component-class>org.richfaces.component.html.HtmlAjaxStatus</component-class>
<component-extension>
- <cdk:generate
xmlns:cdk="http://richfaces.org/cdk/extensions">false</cd...
+ <cdk:generate
xmlns:cdk="http://richfaces.org/cdk/extensions"
>true</cdk:generate>
</component-extension>
</component>
-
<component>
- <component-type>org.richfaces.MediaOutput</component-type>
- <component-class>org.richfaces.component.html.HtmlMediaOutput</component-class>
+ <component-type>org.richfaces.Queue</component-type>
+ <component-class>org.richfaces.component.html.HtmlQueue</component-class>
<component-extension>
- <cdk:generate
xmlns:cdk="http://richfaces.org/cdk/extensions">false</cd...
+ <cdk:generate
xmlns:cdk="http://richfaces.org/cdk/extensions"
>true</cdk:generate>
</component-extension>
</component>
-
<component>
- <component-type>org.richfaces.OutputPanel</component-type>
- <component-class>org.richfaces.component.html.HtmlOutputPanel</component-class>
+ <component-type>org.richfaces.CommandLink</component-type>
+ <component-class>org.richfaces.component.html.HtmlCommandLink</component-class>
<component-extension>
- <cdk:generate
xmlns:cdk="http://richfaces.org/cdk/extensions">false</cd...
+ <cdk:generate
xmlns:cdk="http://richfaces.org/cdk/extensions"
>true</cdk:generate>
</component-extension>
</component>
-
<component>
- <component-type>org.richfaces.Status</component-type>
- <component-class>org.richfaces.component.html.HtmlAjaxStatus</component-class>
+ <component-type>org.richfaces.CommandButton</component-type>
+ <component-class>org.richfaces.component.html.HtmlCommandButton</component-class>
<component-extension>
- <cdk:generate
xmlns:cdk="http://richfaces.org/cdk/extensions">false</cd...
+ <cdk:generate
xmlns:cdk="http://richfaces.org/cdk/extensions"
>true</cdk:generate>
</component-extension>
</component>
-
<component>
- <component-type>org.richfaces.AjaxLog</component-type>
- <component-class>org.richfaces.component.html.HtmlAjaxLog</component-class>
+ <component-type>org.richfaces.MediaOutput</component-type>
+ <component-class>org.richfaces.component.html.HtmlMediaOutput</component-class>
<component-extension>
- <cdk:generate
xmlns:cdk="http://richfaces.org/cdk/extensions">false</cd...
+ <cdk:generate
xmlns:cdk="http://richfaces.org/cdk/extensions"
>true</cdk:generate>
</component-extension>
</component>
-
<component>
- <component-type>org.richfaces.CommandLink</component-type>
- <component-class>org.richfaces.component.html.HtmlCommandLink</component-class>
+ <component-type>org.richfaces.Push</component-type>
+ <component-class>org.richfaces.component.html.HtmlPush</component-class>
<component-extension>
- <cdk:generate
xmlns:cdk="http://richfaces.org/cdk/extensions">false</cd...
+ <cdk:generate
xmlns:cdk="http://richfaces.org/cdk/extensions"
>true</cdk:generate>
</component-extension>
</component>
-
<component>
- <component-type>org.richfaces.CommandButton</component-type>
- <component-class>org.richfaces.component.html.HtmlCommandButton</component-class>
+ <component-type>org.richfaces.OutputPanel</component-type>
+ <component-class>org.richfaces.component.html.HtmlOutputPanel</component-class>
<component-extension>
- <cdk:generate
xmlns:cdk="http://richfaces.org/cdk/extensions">false</cd...
+ <cdk:generate
xmlns:cdk="http://richfaces.org/cdk/extensions"
>true</cdk:generate>
</component-extension>
</component>
<component>
- <component-type>org.richfaces.Queue</component-type>
- <component-class>org.richfaces.component.html.HtmlQueue</component-class>
+ <component-type>org.richfaces.AjaxLog</component-type>
+ <component-class>org.richfaces.component.html.HtmlAjaxLog</component-class>
<component-extension>
- <cdk:generate
xmlns:cdk="http://richfaces.org/cdk/extensions">false</cd...
+ <cdk:generate
xmlns:cdk="http://richfaces.org/cdk/extensions"
>true</cdk:generate>
</component-extension>
</component>
Deleted:
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractAjaxCommandButton.java
===================================================================
---
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractAjaxCommandButton.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractAjaxCommandButton.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -1,69 +0,0 @@
-/**
- * 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.component;
-
-import org.richfaces.cdk.annotations.Attribute;
-import org.richfaces.cdk.annotations.EventName;
-import org.richfaces.cdk.annotations.JsfComponent;
-
-import javax.faces.component.UIComponentBase;
-
-/**
- * @author Nick Belaevski
- *
- */
-@JsfComponent
-public abstract class AbstractAjaxCommandButton extends UIComponentBase {
-
- public static final String COMPONENT_TYPE = "org.richfaces.CommandButton";
-
- public static final String COMPONENT_FAMILY =
"org.richfaces.AjaxCommandButton";
-
- public AbstractAjaxCommandButton() {
- setRendererType("org.richfaces.CommandButtonRenderer");
- }
-
- @Attribute(
- defaultValue = "\"\"",
- events = {
- @EventName("click"),
- @EventName("mousemove"),
- @EventName("dblclick"),
- @EventName("keydown"),
- @EventName("keypress"),
- @EventName("keyup"),
- @EventName("mousedown"),
- @EventName("mouseout"),
- @EventName("mouseover"),
- @EventName("mouseup"),
- @EventName(value = "action", defaultEvent = true)}
- )
- public abstract String getStyle();
-
- @Attribute(defaultValue = "\"\"")
- public abstract String getStyleClass();
-
- @Attribute(defaultValue = "Boolean.FALSE")
- public abstract boolean isLimitRender();
-}
Deleted:
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractAjaxCommandLink.java
===================================================================
---
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractAjaxCommandLink.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractAjaxCommandLink.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -1,71 +0,0 @@
-/**
- * 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.component;
-
-import org.richfaces.cdk.annotations.JsfComponent;
-import org.richfaces.cdk.annotations.Attribute;
-import org.richfaces.cdk.annotations.EventName;
-
-import javax.faces.component.UIComponentBase;
-
-/**
- * @author Nick Belaevski
- *
- */
-@JsfComponent(
- generate = "org.richfaces.component.html.HtmlCommandLink"
-)
-public abstract class AbstractAjaxCommandLink extends UIComponentBase {
-
- public static final String COMPONENT_TYPE = "org.richfaces.CommandLink";
-
- public static final String COMPONENT_FAMILY =
"org.richfaces.AjaxCommandLink";
-
- public AbstractAjaxCommandLink() {
- setRendererType("org.richfaces.CommandLinkRenderer");
- }
-
- @Attribute(
- defaultValue = "\"\"",
- events = {
- @EventName("click"),
- @EventName("mousemove"),
- @EventName("dblclick"),
- @EventName("keydown"),
- @EventName("keypress"),
- @EventName("keyup"),
- @EventName("mousedown"),
- @EventName("mouseout"),
- @EventName("mouseover"),
- @EventName("mouseup"),
- @EventName(value = "action", defaultEvent = true)}
- )
- public abstract String getStyle();
-
- @Attribute(defaultValue = "\"\"")
- public abstract String getStyleClass();
-
- @Attribute(defaultValue = "Boolean.FALSE")
- public abstract boolean isLimitRender();
-}
Modified:
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractAjaxLog.java
===================================================================
---
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractAjaxLog.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractAjaxLog.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -60,13 +60,13 @@
return COMPONENT_FAMILY;
}
- @Attribute(defaultValue = "\"\"")
+ @Attribute(defaultValue = "")
public abstract String getStyle();
- @Attribute(defaultValue = "\"\"")
+ @Attribute(defaultValue = "")
public abstract String getLevel();
- @Attribute(defaultValue = "\"\"")
+ @Attribute(defaultValue = "")
public abstract String getStyleClass();
// public abstract String getHotkey();
Copied:
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractCommandButton.java
(from rev 16679,
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractAjaxCommandButton.java)
===================================================================
---
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractCommandButton.java
(rev 0)
+++
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractCommandButton.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -0,0 +1,85 @@
+/**
+ * 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.component;
+
+import org.richfaces.cdk.annotations.Attribute;
+import org.richfaces.cdk.annotations.EventName;
+import org.richfaces.cdk.annotations.JsfComponent;
+
+import javax.faces.component.UIComponentBase;
+
+/**
+ * @author Nick Belaevski
+ *
+ */
+@JsfComponent
+public abstract class AbstractCommandButton extends UIComponentBase {
+
+ public static final String COMPONENT_TYPE = "org.richfaces.CommandButton";
+
+ public static final String COMPONENT_FAMILY =
"org.richfaces.CommandButton";
+
+ public AbstractCommandButton() {
+ setRendererType("org.richfaces.CommandButtonRenderer");
+ }
+
+ @Attribute(events = {@EventName("click"), @EventName(value =
"action", defaultEvent = true)})
+ public abstract String getOnclick();
+
+ @Attribute(events = @EventName("mousemove"))
+ public abstract String getOnmousemove();
+
+ @Attribute(events = @EventName("dblclick"))
+ public abstract String getOndblclick();
+
+ @Attribute(events = @EventName("keydown"))
+ public abstract String getOnkeydown();
+
+ @Attribute(events = @EventName("keypress"))
+ public abstract String getOnkeypress();
+
+ @Attribute(events = @EventName("keyup"))
+ public abstract String getOnkeyup();
+
+ @Attribute(events = @EventName("mousedown"))
+ public abstract String getOnmousedown();
+
+ @Attribute(events = @EventName("mouseout"))
+ public abstract String getOnmouseout();
+
+ @Attribute(events = @EventName("mouseover"))
+ public abstract String getOnmouseover();
+
+ @Attribute(events = @EventName("mouseup"))
+ public abstract String getOnmouseup();
+
+ @Attribute(defaultValue = "")
+ public abstract String getStyle();
+
+ @Attribute(defaultValue = "")
+ public abstract String getStyleClass();
+
+ @Attribute(defaultValue = "Boolean.FALSE")
+ public abstract boolean isLimitRender();
+}
Copied:
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractCommandLink.java
(from rev 16679,
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractAjaxCommandLink.java)
===================================================================
---
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractCommandLink.java
(rev 0)
+++
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractCommandLink.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -0,0 +1,85 @@
+/**
+ * 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.component;
+
+import org.richfaces.cdk.annotations.JsfComponent;
+import org.richfaces.cdk.annotations.Attribute;
+import org.richfaces.cdk.annotations.EventName;
+
+import javax.faces.component.UIComponentBase;
+
+/**
+ * @author Nick Belaevski
+ *
+ */
+@JsfComponent
+public abstract class AbstractCommandLink extends UIComponentBase {
+
+ public static final String COMPONENT_TYPE = "org.richfaces.CommandLink";
+
+ public static final String COMPONENT_FAMILY = "org.richfaces.CommandLink";
+
+ public AbstractCommandLink() {
+ setRendererType("org.richfaces.CommandLinkRenderer");
+ }
+
+ @Attribute(events = {@EventName("click"), @EventName(value =
"action", defaultEvent = true)})
+ public abstract String getOnclick();
+
+ @Attribute(events = @EventName("mousemove"))
+ public abstract String getOnmousemove();
+
+ @Attribute(events = @EventName("dblclick"))
+ public abstract String getOndblclick();
+
+ @Attribute(events = @EventName("keydown"))
+ public abstract String getOnkeydown();
+
+ @Attribute(events = @EventName("keypress"))
+ public abstract String getOnkeypress();
+
+ @Attribute(events = @EventName("keyup"))
+ public abstract String getOnkeyup();
+
+ @Attribute(events = @EventName("mousedown"))
+ public abstract String getOnmousedown();
+
+ @Attribute(events = @EventName("mouseout"))
+ public abstract String getOnmouseout();
+
+ @Attribute(events = @EventName("mouseover"))
+ public abstract String getOnmouseover();
+
+ @Attribute(events = @EventName("mouseup"))
+ public abstract String getOnmouseup();
+
+ @Attribute(defaultValue = "")
+ public abstract String getStyle();
+
+ @Attribute(defaultValue = "")
+ public abstract String getStyleClass();
+
+ @Attribute(defaultValue = "Boolean.FALSE")
+ public abstract boolean isLimitRender();
+}
Modified:
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractMediaOutput.java
===================================================================
---
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractMediaOutput.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractMediaOutput.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -25,10 +25,10 @@
import org.ajax4jsf.resource.ResourceComponent2;
import org.richfaces.cdk.annotations.Attribute;
+import org.richfaces.cdk.annotations.EventName;
import org.richfaces.cdk.annotations.JsfComponent;
import org.richfaces.cdk.annotations.Signature;
import org.richfaces.cdk.annotations.Tag;
-import org.richfaces.cdk.annotations.EventName;
import org.richfaces.resource.MediaOutputResource;
import org.richfaces.webapp.taglib.MethodBindingMethodExpressionAdaptor;
import org.richfaces.webapp.taglib.MethodExpressionMethodBindingAdaptor;
@@ -47,9 +47,7 @@
*
*/
@JsfComponent(
- type = "org.richfaces.MediaOutput",
- tag = @Tag(name = "mediaOutput", handler =
"org.richfaces.taghandler.html.PushMediaOutput"),
- generate = ""
+ tag = @Tag(handler =
"org.richfaces.taglib.html.facelets.MediaOutputHandler")
)
public abstract class AbstractMediaOutput extends UIOutput implements ResourceComponent2
{
Modified:
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractOutputPanel.java
===================================================================
---
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractOutputPanel.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractOutputPanel.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -24,10 +24,9 @@
package org.richfaces.component;
import org.ajax4jsf.component.AjaxOutput;
-import org.richfaces.cdk.annotations.JsfComponent;
-import org.richfaces.cdk.annotations.Tag;
import org.richfaces.cdk.annotations.Attribute;
import org.richfaces.cdk.annotations.EventName;
+import org.richfaces.cdk.annotations.JsfComponent;
import javax.faces.component.UIPanel;
@@ -36,10 +35,7 @@
* @version $Revision: 1.1.2.1 $ $Date: 2007/01/09 18:58:26 $
*
*/
-@JsfComponent(
- tag = @Tag(handler =
"org.richfaces.taghandler.html.OutputPanelTagHandler"),
- generate = "org.richfaces.component.html.HtmlOutputPanel"
-)
+@JsfComponent
public abstract class AbstractOutputPanel extends UIPanel implements AjaxOutput {
public static final String COMPONENT_TYPE = "org.richfaces.OutputPanel";
@@ -56,7 +52,7 @@
@Attribute(defaultValue = "Boolean.FALSE")
public abstract boolean isKeepTransient();
- @Attribute(defaultValue = "\"inline\"")
+ @Attribute(defaultValue = "inline")
public abstract String getLayout();
@Attribute(events = @EventName("click"))
Modified:
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractPush.java
===================================================================
---
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractPush.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/ui/trunk/components/core/src/main/java/org/richfaces/component/AbstractPush.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -24,10 +24,10 @@
package org.richfaces.component;
import org.richfaces.cdk.annotations.Attribute;
+import org.richfaces.cdk.annotations.EventName;
import org.richfaces.cdk.annotations.JsfComponent;
import org.richfaces.cdk.annotations.Signature;
import org.richfaces.cdk.annotations.Tag;
-import org.richfaces.cdk.annotations.EventName;
import javax.el.MethodExpression;
import javax.faces.component.NamingContainer;
@@ -45,9 +45,7 @@
*
*/
@JsfComponent(
- type = "org.richfaces.Push",
- tag = @Tag(name = "push", handler =
"org.richfaces.taghandler.html.PushTagHandler"),
- generate = ""
+ tag = @Tag(handler =
"org.richfaces.taglib.html.facelets.AjaxPushHandler")
)
public abstract class AbstractPush extends UICommand {
Modified:
root/ui/trunk/components/core/src/main/java/org/richfaces/renderkit/AjaxFunctionRendererBase.java
===================================================================
---
root/ui/trunk/components/core/src/main/java/org/richfaces/renderkit/AjaxFunctionRendererBase.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/ui/trunk/components/core/src/main/java/org/richfaces/renderkit/AjaxFunctionRendererBase.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -23,14 +23,6 @@
package org.richfaces.renderkit;
-import java.util.Iterator;
-import java.util.Map;
-
-import javax.faces.FacesException;
-import javax.faces.component.UIComponent;
-import javax.faces.component.UIParameter;
-import javax.faces.context.FacesContext;
-
import org.ajax4jsf.javascript.JSFunction;
import org.ajax4jsf.javascript.JSFunctionDefinition;
import org.ajax4jsf.javascript.JSReference;
@@ -38,6 +30,13 @@
import org.ajax4jsf.renderkit.AjaxEventOptions;
import org.ajax4jsf.renderkit.AjaxRendererUtils;
+import javax.faces.FacesException;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIParameter;
+import javax.faces.context.FacesContext;
+import java.util.Iterator;
+import java.util.Map;
+
/**
* @author shura
*
Deleted:
root/ui/trunk/components/core/src/main/java/org/richfaces/renderkit/html/AjaxCommandButtonRendererBase.java
===================================================================
---
root/ui/trunk/components/core/src/main/java/org/richfaces/renderkit/html/AjaxCommandButtonRendererBase.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/ui/trunk/components/core/src/main/java/org/richfaces/renderkit/html/AjaxCommandButtonRendererBase.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -1,63 +0,0 @@
-/**
- * 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.renderkit.html;
-
-import java.io.IOException;
-
-import javax.faces.component.UIComponent;
-import javax.faces.context.FacesContext;
-import javax.faces.context.ResponseWriter;
-
-import org.richfaces.renderkit.AjaxCommandRendererBase;
-
-/**
- * @author Nick Belaevski
- *
- */
-public abstract class AjaxCommandButtonRendererBase extends AjaxCommandRendererBase {
- protected void encodeTypeAndImage(FacesContext context, UIComponent uiComponent)
throws IOException {
- ResponseWriter writer = context.getResponseWriter();
- String type = (String) uiComponent.getAttributes().get("type");
- String image = (String) uiComponent.getAttributes().get("image");
-
- if (image != null) {
- image = context.getApplication().getViewHandler().getResourceURL(context,
image);
- image = context.getExternalContext().encodeResourceURL(image);
- writer.writeAttribute("type", "image",
"image");
- writer.writeURIAttribute("src", image, "image");
-
- Object value = uiComponent.getAttributes().get("value");
-
- if (null == uiComponent.getAttributes().get("alt") && null
!= value) {
- writer.writeAttribute("alt", value, "value");
- }
- } else {
- if (null != type) {
- writer.writeAttribute("type", type.toLowerCase(),
"type");
- } else {
- writer.writeAttribute("type", "submit",
"type");
- }
- }
- }
-}
Modified:
root/ui/trunk/components/core/src/main/java/org/richfaces/renderkit/html/AjaxPushRenderer.java
===================================================================
---
root/ui/trunk/components/core/src/main/java/org/richfaces/renderkit/html/AjaxPushRenderer.java 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/ui/trunk/components/core/src/main/java/org/richfaces/renderkit/html/AjaxPushRenderer.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -54,6 +54,10 @@
@JsfRenderer
public class AjaxPushRenderer extends RendererBase {
+ public static final String COMPONENT_FAMILY = "org.richfaces.Push";
+
+ public static final String RENDERER_TYPE = "org.richfaces.PushRenderer";
+
public static final String PUSH_INTERVAL_PARAMETER =
"A4J.AJAX.Push.INTERVAL";
public static final String PUSH_WAIT_PARAMETER = "A4J.AJAX.Push.WAIT";
Copied:
root/ui/trunk/components/core/src/main/java/org/richfaces/renderkit/html/CommandButtonRendererBase.java
(from rev 16679,
root/ui/trunk/components/core/src/main/java/org/richfaces/renderkit/html/AjaxCommandButtonRendererBase.java)
===================================================================
---
root/ui/trunk/components/core/src/main/java/org/richfaces/renderkit/html/CommandButtonRendererBase.java
(rev 0)
+++
root/ui/trunk/components/core/src/main/java/org/richfaces/renderkit/html/CommandButtonRendererBase.java 2010-03-30
12:16:40 UTC (rev 16684)
@@ -0,0 +1,65 @@
+/**
+ * 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.renderkit.html;
+
+import org.richfaces.cdk.annotations.JsfRenderer;
+import org.richfaces.renderkit.AjaxCommandRendererBase;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import java.io.IOException;
+
+/**
+ * @author Nick Belaevski
+ *
+ */
+@JsfRenderer
+public abstract class CommandButtonRendererBase extends AjaxCommandRendererBase {
+
+ protected void encodeTypeAndImage(FacesContext context, UIComponent uiComponent)
throws IOException {
+ ResponseWriter writer = context.getResponseWriter();
+ String type = (String) uiComponent.getAttributes().get("type");
+ String image = (String) uiComponent.getAttributes().get("image");
+
+ if (image != null) {
+ image = context.getApplication().getViewHandler().getResourceURL(context,
image);
+ image = context.getExternalContext().encodeResourceURL(image);
+ writer.writeAttribute("type", "image",
"image");
+ writer.writeURIAttribute("src", image, "image");
+
+ Object value = uiComponent.getAttributes().get("value");
+
+ if (null == uiComponent.getAttributes().get("alt") && null
!= value) {
+ writer.writeAttribute("alt", value, "value");
+ }
+ } else {
+ if (null != type) {
+ writer.writeAttribute("type", type.toLowerCase(),
"type");
+ } else {
+ writer.writeAttribute("type", "submit",
"type");
+ }
+ }
+ }
+}
Modified: root/ui/trunk/components/core/src/main/resources/META-INF/a4j.taglib.xml
===================================================================
--- root/ui/trunk/components/core/src/main/resources/META-INF/a4j.taglib.xml 2010-03-29
15:14:11 UTC (rev 16683)
+++ root/ui/trunk/components/core/src/main/resources/META-INF/a4j.taglib.xml 2010-03-30
12:16:40 UTC (rev 16684)
@@ -1,39 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
-<facelet-taglib version="2.0"
xmlns="http://java.sun.com/xml/ns/javaee" id="a4j">
+<facelet-taglib
xmlns="http://java.sun.com/xml/ns/javaee"
version="2.0" id="a4j">
<
namespace>http://richfaces.org/a4j</namespace>
-
<tag>
- <tag-name>push</tag-name>
- <component>
- <component-type>org.richfaces.Push</component-type>
- <renderer-type>org.richfaces.PushRenderer</renderer-type>
- <handler-class>org.richfaces.taglib.html.facelets.AjaxPushHandler</handler-class>
- </component>
- </tag>
- <tag>
<tag-name>jsFunction</tag-name>
<component>
<component-type>org.richfaces.Function</component-type>
<renderer-type>org.richfaces.FunctionRenderer</renderer-type>
</component>
+
</tag>
<tag>
- <tag-name>outputPanel</tag-name>
- <component>
- <component-type>org.richfaces.OutputPanel</component-type>
- <renderer-type>org.richfaces.OutputPanelRenderer</renderer-type>
- </component>
- </tag>
- <tag>
- <tag-name>mediaOutput</tag-name>
- <component>
- <component-type>org.richfaces.MediaOutput</component-type>
- <renderer-type>org.richfaces.MediaOutputRenderer</renderer-type>
- <handler-class>org.richfaces.taglib.html.facelets.MediaOutputHandler</handler-class>
- </component>
- </tag>
- <tag>
<tag-name>status</tag-name>
<component>
<component-type>org.richfaces.Status</component-type>
@@ -41,10 +18,10 @@
</component>
</tag>
<tag>
- <tag-name>log</tag-name>
+ <tag-name>queue</tag-name>
<component>
- <component-type>org.richfaces.AjaxLog</component-type>
- <renderer-type>org.richfaces.AjaxLogRenderer</renderer-type>
+ <component-type>org.richfaces.Queue</component-type>
+ <renderer-type>org.richfaces.QueueRenderer</renderer-type>
</component>
</tag>
<tag>
@@ -62,26 +39,48 @@
</component>
</tag>
<tag>
- <tag-name>queue</tag-name>
+ <tag-name>repeat</tag-name>
<component>
- <component-type>org.richfaces.Queue</component-type>
- <renderer-type>org.richfaces.QueueRenderer</renderer-type>
+ <component-type>org.richfaces.Repeat</component-type>
+ <renderer-type>org.richfaces.RepeatRenderer</renderer-type>
</component>
</tag>
<tag>
- <tag-name>repeat</tag-name>
+ <tag-name>mediaOutput</tag-name>
<component>
- <component-type>org.richfaces.Repeat</component-type>
- <renderer-type>org.richfaces.RepeatRenderer</renderer-type>
+ <component-type>org.richfaces.MediaOutput</component-type>
+ <renderer-type>org.richfaces.MediaOutputRenderer</renderer-type>
+ <handler-class>org.richfaces.taglib.html.facelets.MediaOutputHandler</handler-class>
</component>
+
</tag>
-
<tag>
+ <tag-name>log</tag-name>
+ <component>
+ <component-type>org.richfaces.AjaxLog</component-type>
+ <renderer-type>org.richfaces.AjaxLogRenderer</renderer-type>
+ </component>
+ </tag>
+ <tag>
+ <tag-name>push</tag-name>
+ <component>
+ <component-type>org.richfaces.Push</component-type>
+ <renderer-type>org.richfaces.PushRenderer</renderer-type>
+ <handler-class>org.richfaces.taglib.html.facelets.AjaxPushHandler</handler-class>
+ </component>
+ </tag>
+ <tag>
+ <tag-name>outputPanel</tag-name>
+ <component>
+ <component-type>org.richfaces.OutputPanel</component-type>
+ <renderer-type>org.richfaces.OutputPanelRenderer</renderer-type>
+ </component>
+ </tag>
+ <tag>
<tag-name>ajax</tag-name>
<behavior>
<behavior-id>org.ajax4jsf.behavior.Ajax</behavior-id>
<handler-class>org.ajax4jsf.facelets.tag.AjaxHandler</handler-class>
</behavior>
</tag>
-
</facelet-taglib>
Modified:
root/ui/trunk/components/core/src/main/templates/org/ajax4jsf/renderkit/html/button.template.xml
===================================================================
---
root/ui/trunk/components/core/src/main/templates/org/ajax4jsf/renderkit/html/button.template.xml 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/ui/trunk/components/core/src/main/templates/org/ajax4jsf/renderkit/html/button.template.xml 2010-03-30
12:16:40 UTC (rev 16684)
@@ -6,10 +6,10 @@
<cc:interface>
<cdk:class>org.richfaces.renderkit.html.CommandButtonRenderer</cdk:class>
- <cdk:superclass>org.richfaces.renderkit.html.AjaxCommandButtonRendererBase</cdk:superclass>
- <cdk:component-family>javax.faces.Command</cdk:component-family>
- <cdk:renderer-type>org.richfaces.CommandButtonRenderer
- </cdk:renderer-type>
+ <cdk:superclass>org.richfaces.renderkit.html.CommandButtonRendererBase</cdk:superclass>
+ <!--<cdk:component-family>javax.faces.Command</cdk:component-family>-->
+ <cdk:component-family>org.richfaces.CommandButton</cdk:component-family>
+ <cdk:renderer-type>org.richfaces.CommandButtonRenderer</cdk:renderer-type>
</cc:interface>
<cc:implementation>
Modified:
root/ui/trunk/components/core/src/main/templates/org/ajax4jsf/renderkit/html/link.template.xml
===================================================================
---
root/ui/trunk/components/core/src/main/templates/org/ajax4jsf/renderkit/html/link.template.xml 2010-03-29
15:14:11 UTC (rev 16683)
+++
root/ui/trunk/components/core/src/main/templates/org/ajax4jsf/renderkit/html/link.template.xml 2010-03-30
12:16:40 UTC (rev 16684)
@@ -7,7 +7,8 @@
<cc:interface>
<cdk:class>org.richfaces.renderkit.html.CommandLinkRenderer</cdk:class>
<cdk:superclass>org.richfaces.renderkit.AjaxCommandRendererBase</cdk:superclass>
- <cdk:component-family>javax.faces.Command</cdk:component-family>
+ <cdk:component-family>org.richfaces.CommandLink</cdk:component-family>
+ <!--<cdk:component-family>javax.faces.Command</cdk:component-family>-->
<cdk:renderer-type>org.richfaces.CommandLinkRenderer</cdk:renderer-type>
</cc:interface>