[jboss-cvs] jboss-seam/seam-ui-cdk/jboss-seam-ui/src/main/java/org/jboss/seam/ui/util ...
Peter Muir
peter at bleepbleep.org.uk
Wed Mar 28 08:52:14 EDT 2007
User: pmuir
Date: 07/03/28 08:52:14
Added: seam-ui-cdk/jboss-seam-ui/src/main/java/org/jboss/seam/ui/util
UrlBuilder.java
Log:
More ui examples, better ant integration for cdk, lots of fixes to button and link
Revision Changes Path
1.1 date: 2007/03/28 12:52:14; author: pmuir; state: Exp;jboss-seam/seam-ui-cdk/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;
import org.jboss.seam.core.Pages;
import org.jboss.seam.pages.Page;
import org.jboss.seam.ui.component.UISeamCommandBase;
public class UrlBuilder
{
/**
*
*/
private final UISeamCommandBase base;
private String encodedUrl;
private Map<String, String> parameters;
private String fragment;
private String characterEncoding;
private Page page;
public UrlBuilder(UISeamCommandBase base, String viewId, String fragment)
{
this.base = base;
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);
characterEncoding = facesContext.getResponseWriter().getCharacterEncoding();
page = Pages.instance().getPage(viewId);
this.encodedUrl = url;
this.fragment = fragment;
this.parameters = new HashMap<String, String>();
}
private String urlEncode(String value) throws UnsupportedEncodingException
{
return characterEncoding == null ? URLEncoder.encode(value) : URLEncoder.encode(value,
characterEncoding);
}
public void addParameter(UIParameter parameter) throws UnsupportedEncodingException
{
String value = parameter.getValue() == null ? "" : parameter.getValue().toString();
String name = parameter.getName();
boolean append = true;
if (name.equals(page.getConversationIdParameter().getParameterName())
&& parameters.containsKey(name))
{
append = false;
}
if (append)
{
parameters.put(name, urlEncode(value));
}
}
private String getParameters()
{
String params = "";
for (String key : parameters.keySet())
{
params += "&" + key + "=" + parameters.get(key);
}
if (!"".equals(params))
{
params = "?" + params.substring(1);
}
return params;
}
private String getFragment()
{
if (fragment != null && !"".equals(fragment))
{
return "#" + fragment;
}
else
{
return "";
}
}
public String getEncodedUrl()
{
return encodedUrl + getParameters() + getFragment();
}
}
More information about the jboss-cvs-commits
mailing list