Author: vbaranov
Date: 2008-03-24 09:08:28 -0400 (Mon, 24 Mar 2008)
New Revision: 7107
Modified:
trunk/ui/toolBar/src/main/java/org/richfaces/renderkit/html/ToolBarRendererBase.java
Log:
http://jira.jboss.com/jira/browse/RF-2443
Modified:
trunk/ui/toolBar/src/main/java/org/richfaces/renderkit/html/ToolBarRendererBase.java
===================================================================
---
trunk/ui/toolBar/src/main/java/org/richfaces/renderkit/html/ToolBarRendererBase.java 2008-03-24
11:37:16 UTC (rev 7106)
+++
trunk/ui/toolBar/src/main/java/org/richfaces/renderkit/html/ToolBarRendererBase.java 2008-03-24
13:08:28 UTC (rev 7107)
@@ -29,9 +29,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.Map.Entry;
-import javax.faces.FacesException;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
@@ -40,6 +38,7 @@
import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.richfaces.component.UIToolBar;
import org.richfaces.component.UIToolBarGroup;
+import org.richfaces.component.util.ViewUtil;
import org.richfaces.renderkit.html.images.DotSeparatorImage;
import org.richfaces.renderkit.html.images.GridSeparatorImage;
import org.richfaces.renderkit.html.images.LineSeparatorImage;
@@ -65,7 +64,7 @@
List<UIComponent> children = toolBar.getChildren();
String contentClass = (String) toolBar.getAttributes().get("contentClass");
String contentStyle = (String) toolBar.getAttributes().get("contentStyle");
-
+
if (null == contentClass) {
contentClass = "";
}
@@ -125,7 +124,40 @@
}
}
+ /**
+ * Inserts separator between toolbar items. Uses facet "itemSeparator" if it
is set
+ * and default separator implementation if facet is not set.
+ * @param context - faces context
+ * @param component - component
+ * @param writer - response writer
+ * @throws IOException - in case of IOException during writing to the ResponseWriter
+ */
protected void insertSeparatorIfNeed(FacesContext context, UIComponent component,
ResponseWriter writer) throws IOException {
+ UIComponent separatorFacet = component.getFacet("itemSeparator");
+ boolean isSeparatorFacetRendered = (separatorFacet != null) ?
separatorFacet.isRendered() : false;
+ if (isSeparatorFacetRendered) {
+ writer.startElement(HTML.td_ELEM, component);
+ writer.writeAttribute(HTML.align_ATTRIBUTE, "center", null);
+ renderChild(context, separatorFacet);
+ writer.endElement(HTML.td_ELEM);
+ }
+ else {
+ insertDefaultSeparatorIfNeed(context, component, writer);
+ }
+ }
+
+ /**
+ * Inserts default separator. Possible values are:
+ * "square", "disc", "grid", "line" - for
separators provided by component inplementation;
+ * "none" - for no separators between toolbar items;
+ * URI string value - for custom images specified by the page author.
+ *
+ * @param context - faces context
+ * @param component - component
+ * @param writer - response writer
+ * @throws IOException - in case of IOException during writing to the ResponseWriter
+ */
+ protected void insertDefaultSeparatorIfNeed(FacesContext context, UIComponent component,
ResponseWriter writer) throws IOException {
String itemSeparator =
(String)component.getAttributes().get("itemSeparator");
if (itemSeparator != null && itemSeparator.length()!=0 && !
itemSeparator.equalsIgnoreCase("none")){
@@ -138,7 +170,10 @@
uri = getResource(GridSeparatorImage.class.getName()).getUri(context,
component);
} else if (itemSeparator.equalsIgnoreCase("line")) {
uri = getResource(LineSeparatorImage.class.getName()).getUri(context, component);
- } else throw new FacesException("Unknown type of separator -
\""+itemSeparator+"\"");
+ } else {
+ // let the user specify URI to custom separator image in
"itemSeparator" attribute
+ uri = ViewUtil.getResourceURL(itemSeparator);
+ }
writer.startElement(HTML.td_ELEM, component);
writer.writeAttribute(HTML.align_ATTRIBUTE, "center", null);
getUtils().writeAttribute(writer, HTML.class_ATTRIBUTE,
component.getAttributes().get("separatorClass"));