Author: nbelaevski
Date: 2010-07-01 15:21:53 -0400 (Thu, 01 Jul 2010)
New Revision: 17700
Added:
root/core/trunk/impl/src/main/java/org/richfaces/renderkit/SequenceRendererHelper.java
Modified:
root/core/trunk/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java
Log:
https://jira.jboss.org/browse/RF-8753
Modified: root/core/trunk/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java
===================================================================
---
root/core/trunk/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java 2010-07-01
19:11:26 UTC (rev 17699)
+++
root/core/trunk/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java 2010-07-01
19:21:53 UTC (rev 17700)
@@ -44,8 +44,8 @@
import javax.faces.component.UIParameter;
import javax.faces.component.UIViewRoot;
import javax.faces.component.ValueHolder;
+import javax.faces.component.behavior.ClientBehaviorContext.Parameter;
import javax.faces.component.behavior.ClientBehaviorHolder;
-import javax.faces.component.behavior.ClientBehaviorContext.Parameter;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import javax.faces.convert.Converter;
@@ -187,7 +187,7 @@
* @throws IOException
*/
public void encodeCustomId(FacesContext context, UIComponent component) throws
IOException {
- if ((component.getId() != null) &&
!component.getId().startsWith(UIViewRoot.UNIQUE_ID_PREFIX)) {
+ if (hasExplicitId(component)) {
context.getResponseWriter().writeAttribute(HTML.ID_ATTRIBUTE,
component.getClientId(context),
HTML.ID_ATTRIBUTE);
}
@@ -1135,6 +1135,18 @@
}
}
+ public void encodeChildren(FacesContext context, UIComponent component) throws
IOException {
+ if (component.getChildCount() > 0) {
+ for (UIComponent child : component.getChildren()) {
+ child.encodeAll(context);
+ }
+ }
+ }
+
+ public boolean hasExplicitId(UIComponent component) {
+ return component.getId() != null &&
!component.getId().startsWith(UIViewRoot.UNIQUE_ID_PREFIX);
+ }
+
/**
* Common HTML elements and attributes names.
*
@@ -1157,6 +1169,7 @@
public static final String COL_ELEMENT = "col";
public static final String DISABLED_ATTR = "disabled";
public static final String DIV_ELEM = "div";
+ public static final String DD_ELEMENT = "dd";
public static final String DL_ELEMENT = "dl";
public static final String DT_ELEMENT = "dt";
public static final String FORM_ELEMENT = "form";
@@ -1176,7 +1189,10 @@
public static final String TR_ELEMENT = "tr";
public static final String TH_ELEM = "th";
public static final String TITLE_ELEM = "title";
-
+ public static final String UL_ELEMENT = "ul";
+ public static final String OL_ELEMENT = "ol";
+ public static final String LI_ELEMENT = "li";
+
// attributes
public static final String FRAME_ATTRIBUTE = "frame";
public static final String BORDER_ATTRIBUTE = "border";
Added:
root/core/trunk/impl/src/main/java/org/richfaces/renderkit/SequenceRendererHelper.java
===================================================================
---
root/core/trunk/impl/src/main/java/org/richfaces/renderkit/SequenceRendererHelper.java
(rev 0)
+++
root/core/trunk/impl/src/main/java/org/richfaces/renderkit/SequenceRendererHelper.java 2010-07-01
19:21:53 UTC (rev 17700)
@@ -0,0 +1,100 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software 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 software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.richfaces.renderkit;
+
+import org.richfaces.component.UISequence;
+import org.richfaces.component.util.HtmlUtil;
+
+/**
+ * @author Nick Belaevski
+ *
+ */
+public class SequenceRendererHelper {
+
+ private UISequence sequence;
+
+ private int rowIndex = -1;
+
+ private int columnIndex = 0;
+
+ private String[] rowClasses = null;
+
+ private String[] columnClasses = null;
+
+ private static String[] splitClassesString(String s) {
+ if (s != null) {
+ return s.split(",");
+ }
+
+ return null;
+ }
+
+ private static String getCorrespondingArrayItem(String[] strings, int idx) {
+ if (strings != null && strings.length > 0) {
+ return strings[idx % strings.length];
+ }
+
+ return null;
+ }
+
+ public SequenceRendererHelper(UISequence sequence) {
+ super();
+ this.sequence = sequence;
+
+ this.rowClasses = splitClassesString((String)
sequence.getAttributes().get("rowClasses"));
+ this.columnClasses = splitClassesString((String)
sequence.getAttributes().get("columnClasses"));
+ }
+
+ public UISequence getSequence() {
+ return sequence;
+ }
+
+ private void initialize() {
+ rowIndex = sequence.getRowIndex();
+ }
+
+ public void nextRow() {
+ if (rowIndex == -1) {
+ initialize();
+ }
+
+ rowIndex++;
+ columnIndex = 0;
+ }
+
+ public void nextColumn() {
+ columnIndex++;
+ }
+
+ public String getRowClass() {
+ String rowClass = (String) sequence.getAttributes().get("rowClass");
+ return HtmlUtil.concatClasses(getCorrespondingArrayItem(rowClasses, rowIndex),
rowClass);
+ }
+
+ public String getColumnClass() {
+ return getCorrespondingArrayItem(columnClasses, columnIndex);
+ }
+
+ public boolean hasWalkedOverRows() {
+ return rowIndex != -1;
+ }
+}