package org.richfaces.renderkit;
import javax.faces.FacesException;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import org.ajax4jsf.javascript.JSEncoder;
import org.ajax4jsf.renderkit.HeaderResourcesRendererBase;
import org.richfaces.component.UIJQuery;
import org.richfaces.component.util.HtmlUtil;
public class JQueryRendererBase extends HeaderResourcesRendererBase {
protected Class getComponentClass() {
return UIJQuery.class;
}
protected void checkValidity(String clientId, String name, String timing, String query) {
if ( ! "onJScall".equals(timing) &&
! "onload".equals(timing) &&
! "immediate".equals(timing) ) {
throw new FacesException(
"The timing attribute of the jQuery component (id='"+clientId+"') has an invalid value:'"+ timing +
"'. It may have only the following values: 'immediate', 'onload', 'onJScall'");
}
if ( name == null ) {
throw new FacesException(
"The name attribute of the jQuery component (id='"+clientId+"') might not be null" );
}
if ( "".equals(name.trim()) && "onJScall".equals(timing) ) {
throw new FacesException(
"The name attribute of the jQuery component (id='"+clientId+"') must be specified when timing attribute equals to 'onJScall'" );
}
if ( "".equals(query.trim()) || query==null ) {
throw new FacesException(
"The query attribute of the jQuery component (id='"+clientId+"') must be specified" );
}
}
protected String replaceClientIds(FacesContext context, UIComponent component, String selector) {
return HtmlUtil.expandIdSelector(selector, component, context);
}
public String escapeJavaScript(Object o) {
if (o != null) {
JSEncoder encoder = new JSEncoder();
StringBuffer result = new StringBuffer();
String string = o.toString();
int length = string.length();
for (int i = 0; i < length; i++) {
result.append(encoder.encode(string.charAt(i)));
}
return result.toString();
} else {
return null;
}
}
}