[jboss-cvs] jboss-seam/ui/src/main/java/org/jboss/seam/ui/util ...
Peter Muir
peter at bleepbleep.org.uk
Fri Jun 15 13:06:57 EDT 2007
User: pmuir
Date: 07/06/15 13:06:57
Added: ui/src/main/java/org/jboss/seam/ui/util Decoration.java
RenderererUtils.java ViewUrlBuilder.java
UrlBuilder.java
Log:
Refactor cdk port
Revision Changes Path
1.1 date: 2007/06/15 17:06:57; author: pmuir; state: Exp;jboss-seam/ui/src/main/java/org/jboss/seam/ui/util/Decoration.java
Index: Decoration.java
===================================================================
package org.jboss.seam.ui.util;
import javax.faces.component.EditableValueHolder;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
public class Decoration
{
public static boolean hasMessage(UIComponent component, FacesContext context)
{
if ( !component.isRendered() ) return false;
if ( component instanceof EditableValueHolder )
{
if ( ! ( (EditableValueHolder) component ).isValid() ) return true;
if ( context.getMessages( component.getClientId(context) ).hasNext() ) return true; //TODO: put this outside the if???
}
for ( Object child: component.getChildren() )
{
if (child instanceof UIComponent)
{
boolean message = hasMessage( (UIComponent) child, context );
if (message) return true;
}
}
return false;
}
public static boolean hasRequired(UIComponent component, FacesContext context)
{
if ( !component.isRendered() ) return false;
if ( component instanceof EditableValueHolder )
{
if ( ( (EditableValueHolder) component ).isRequired() ) return true;
}
for (Object child: component.getChildren())
{
if (child instanceof UIComponent)
{
boolean required = hasRequired( (UIComponent) child, context );
if (required) return true;
}
}
return false;
}
/**
* A depth-first search for an EditableValueHolder
*/
public static UIComponent getEditableValueHolder(UIComponent component)
{
for (Object child: component.getChildren())
{
if (child instanceof EditableValueHolder)
{
UIComponent evh =(UIComponent) child;
if ( evh.isRendered() )
{
return evh;
}
}
else if (child instanceof UIComponent)
{
UIComponent evh = getEditableValueHolder( (UIComponent) child );
if (evh!=null) return evh;
}
}
return null;
}
public static UIComponent getDecoration(String name, UIComponent component)
{
UIComponent dec = component.getFacet(name);
if (dec!=null) return dec;
if ( component.getParent()==null ) return null;
return getDecoration( name, component.getParent() );
}
}
1.1 date: 2007/06/15 17:06:57; author: pmuir; state: Exp;jboss-seam/ui/src/main/java/org/jboss/seam/ui/util/RenderererUtils.java
Index: RenderererUtils.java
===================================================================
package org.jboss.seam.ui.util;
import java.io.IOException;
import java.util.List;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
public class RenderererUtils
{
public static void renderChildren(FacesContext facesContext,
UIComponent component) throws IOException
{
List children = component.getChildren();
for (int j=0, size = component.getChildCount(); j<size; j++)
{
UIComponent child = (UIComponent) children.get(j);
renderChild(facesContext, child);
}
}
public static void renderChild(FacesContext facesContext, UIComponent child)
throws IOException
{
if ( child.isRendered() )
{
child.encodeBegin(facesContext);
if ( child.getRendersChildren() )
{
child.encodeChildren(facesContext);
}
else
{
renderChildren(facesContext, child);
}
child.encodeEnd(facesContext);
}
}
}
1.1 date: 2007/06/15 17:06:57; author: pmuir; state: Exp;jboss-seam/ui/src/main/java/org/jboss/seam/ui/util/ViewUrlBuilder.java
Index: ViewUrlBuilder.java
===================================================================
package org.jboss.seam.ui.util;
import java.io.UnsupportedEncodingException;
import javax.faces.component.UIParameter;
import javax.faces.context.FacesContext;
import org.jboss.seam.core.Pages;
import org.jboss.seam.pages.Page;
public class ViewUrlBuilder extends UrlBuilder
{
private Page page;
public ViewUrlBuilder(String viewId, String fragment)
{
super();
FacesContext facesContext = FacesContext.getCurrentInstance();
String url = facesContext.getApplication().getViewHandler().getActionURL(facesContext,
viewId);
String encodedUrl = facesContext.getExternalContext().encodeActionURL(url);
encodedUrl = Pages.instance().encodeScheme(viewId, facesContext, encodedUrl);
setUrl(encodedUrl);
page = Pages.instance().getPage(viewId);
}
public void addParameter(UIParameter parameter) throws UnsupportedEncodingException
{
String name = parameter.getName();
boolean append = true;
if (!(name.equals(page.getConversationIdParameter().getParameterName())
&& getParameters().containsKey(name)))
{
super.addParameter(parameter);
}
}
}
1.1 date: 2007/06/15 17:06:57; author: pmuir; state: Exp;jboss-seam/ui/src/main/java/org/jboss/seam/ui/util/UrlBuilder.java
Index: UrlBuilder.java
===================================================================
package org.jboss.seam.ui.util;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import javax.faces.component.UIParameter;
import javax.faces.context.FacesContext;
public class UrlBuilder
{
private String url;
private String fragment;
private String characterEncoding;
private Map<String, String> parameters;
protected UrlBuilder()
{
parameters = new HashMap<String, String>();
FacesContext facesContext = FacesContext.getCurrentInstance();
characterEncoding = facesContext.getResponseWriter().getCharacterEncoding();
}
public UrlBuilder(String url)
{
setUrl(url);
}
protected void setUrl(String url)
{
this.url = url;
}
protected String urlEncode(String value) throws UnsupportedEncodingException
{
return characterEncoding == null ? URLEncoder.encode(value) : URLEncoder.encode(value,
characterEncoding);
}
protected String getFragment()
{
if (fragment != null && !"".equals(fragment))
{
return "#" + fragment;
}
else
{
return "";
}
}
public String getEncodedUrl()
{
return url + getParametersAsString() + getFragment();
}
protected String getParametersAsString()
{
String params = "";
for (String key : parameters.keySet())
{
params += "&" + key + "=" + parameters.get(key);
}
if (!"".equals(params))
{
params = "?" + params.substring(1);
}
return params;
}
protected Map<String, String> getParameters()
{
return parameters;
}
public void addParameter(String name, String value) throws UnsupportedEncodingException
{
parameters.put(name, urlEncode(value));
}
public void addParameter(UIParameter parameter) throws UnsupportedEncodingException
{
String value = parameter.getValue() == null ? "" : parameter.getValue().toString();
String name = parameter.getName();
addParameter(name, value);
}
}
More information about the jboss-cvs-commits
mailing list