You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ma...@apache.org on 2008/11/27 13:38:16 UTC
svn commit: r721168 - in
/myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main:
java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/
java/org/apache/myfaces/trinidadinternal/ui/laf/base/pda/
resources/META-INF/adf/styles/
Author: matzew
Date: Thu Nov 27 04:38:15 2008
New Revision: 721168
URL: http://svn.apache.org/viewvc?rev=721168&view=rev
Log:
TRINIDAD-1314 - For Basic HTML Browsers (no JavaScript), support all PDA components
Thanks to Mamallan Uthaman for the patch
Modified:
myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ColumnGroupRenderer.java
myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PanelAccordionRenderer.java
myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ShowDetailRenderer.java
myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SkinSelectors.java
myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlConstants.java
myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/pda/LinkRenderer.java
myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/pda/ShowItemRenderer.java
myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/resources/META-INF/adf/styles/minimal-pda.xss
Modified: myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ColumnGroupRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ColumnGroupRenderer.java?rev=721168&r1=721167&r2=721168&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ColumnGroupRenderer.java (original)
+++ myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ColumnGroupRenderer.java Thu Nov 27 04:38:15 2008
@@ -444,8 +444,12 @@
if (rowSpan > 1)
rw.writeAttribute("rowspan", IntegerUtils.getString(rowSpan), null);
-
- String sortOnclick = getSortingOnclick(arc, tContext, column, sortability);
+ String sortOnclick = "";
+ if (supportsScripting(arc))
+ {
+ sortOnclick = getSortingOnclick(arc, tContext, column, sortability);
+ }
+
//=-=AEW Review: Does this need to support any other handlers?
//=-=AEW Apparently in PDA, we don't bother rendering
@@ -507,24 +511,8 @@
String value = getSortProperty(bean);
// Note that "state" refers to the current state, not
// the state will be set after clicking
- String state;
- if (sortability == SORT_ASCENDING)
- {
- state = XhtmlConstants.SORTABLE_ASCENDING;
- }
- else if (sortability == SORT_DESCENDING)
- {
- state = XhtmlConstants.SORTABLE_DESCENDING;
- }
- else if ("descending".equals(getDefaultSortOrder(bean)))
- {
- state = XhtmlConstants.SORTABLE_ASCENDING;
- }
- else
- {
- state = "";
- }
-
+ String state = findSortState(sortability, bean);
+
StringBuffer buffer = new StringBuffer(33+
formName.length() +
source.length() +
@@ -575,15 +563,20 @@
rw.writeText(headerText, "headerText");
}
- renderSortOrderSymbol(context, arc, sortability, sortIcon, sortOnclick);
+ renderSortOrderSymbol(context, arc, column, tContext,
+ sortability, sortIcon, sortOnclick);
+
}
-
+
+
/**
* @todo IMPLEMENT
*/
protected void renderSortOrderSymbol(
FacesContext context,
RenderingContext arc,
+ UIComponent column,
+ TableRenderingContext tContext,
int sortability,
Icon icon,
String sortOnclick
@@ -593,15 +586,76 @@
return;
ResponseWriter writer = context.getResponseWriter();
- boolean renderAnchor = supportsNavigation(arc);
- if (renderAnchor)
+ boolean supportNav = supportsNavigation(arc);
+ boolean NonJavaScriptBrowser = false;
+ boolean renderedInput = false;
+ if (supportNav)
{
if (isPDA(arc))
writer.writeText(XhtmlConstants.NBSP_STRING, null);
+
+ NonJavaScriptBrowser = !supportsScripting(arc);
+ if (NonJavaScriptBrowser)
+ {
+ renderedInput = true;
+ writer.startElement("input", null);
+ writer.writeAttribute("type", "submit", null);
+ String source = tContext.getTableId();
+ FacesBean bean = getFacesBean(column);
+ String value = getSortProperty(bean);
+ String state = findSortState(sortability, bean);
+ String nameAttri;
+ if (state != "")
+ {
+ nameAttri = XhtmlUtils.getEncodedParameter
+ (XhtmlConstants.SOURCE_PARAM)
+ + XhtmlUtils.getEncodedParameter(source)
+ + XhtmlUtils.getEncodedParameter
+ (XhtmlConstants.VALUE_PARAM)
+ + XhtmlUtils.getEncodedParameter(value)
+ + XhtmlUtils.getEncodedParameter
+ (XhtmlConstants.EVENT_PARAM)
+ + XhtmlUtils.getEncodedParameter
+ (XhtmlConstants.SORT_EVENT)
+ + XhtmlUtils.getEncodedParameter
+ (XhtmlConstants.STATE_PARAM)
+ + state;
+ }
+ else
+ {
+ nameAttri = XhtmlUtils.getEncodedParameter
+ (XhtmlConstants.SOURCE_PARAM)
+ + XhtmlUtils.getEncodedParameter(source)
+ + XhtmlUtils.getEncodedParameter
+ (XhtmlConstants.EVENT_PARAM)
+ + XhtmlUtils.getEncodedParameter
+ (XhtmlConstants.SORT_EVENT)
+ + XhtmlUtils.getEncodedParameter
+ (XhtmlConstants.VALUE_PARAM)
+ + value;
+ }
+
+ writer.writeAttribute("name", nameAttri, null);
+ if (state.equals(XhtmlConstants.SORTABLE_ASCENDING))
+ {
+ writer.writeAttribute("value",
+ XhtmlConstants.NON_JS_DESC_ICON, null);
+ }
+ else
+ {
+ writer.writeAttribute("value",
+ XhtmlConstants.NON_JS_ASC_ICON, null);
+ }
- writer.startElement("a", null);
- writer.writeURIAttribute("href", "#", null);
- writer.writeAttribute("onclick", sortOnclick, null);
+ writer.writeAttribute("class",
+ SkinSelectors.SORTABLE_HEADER_SORT_ICON_STYLE_CLASS, null);
+ }
+ else
+ {
+ writer.startElement("a", null);
+ writer.writeURIAttribute("href", "#", null);
+ writer.writeAttribute("onclick", sortOnclick, null);
+ }
}
String altTextKey = null;
@@ -622,20 +676,33 @@
String altText = arc.getTranslatedString(altTextKey);
Object align = OutputUtils.getMiddleIconAlignment(arc);
+
+ //Don't render any child element for input element
+ if (!renderedInput)
+ {
+ // Render the icon, specifying embedded=true. This
+ // allows text-based Icons to render their style class
+ // and altText directly on the anchor itself
+ OutputUtils.renderIcon(context,
+ arc,
+ icon,
+ altText,
+ align,
+ true);
+ }
- // Render the icon, specifying embedded=true. This
- // allows text-based Icons to render their style class
- // and altText directly on the anchor itself
- OutputUtils.renderIcon(context,
- arc,
- icon,
- altText,
- align,
- true);
-
- // If we're an anchor, render the destination
- if (renderAnchor)
- writer.endElement("a");
+ if (supportNav)
+ {
+ if(NonJavaScriptBrowser)
+ {
+ writer.writeAttribute("title", altText, null);
+ writer.endElement("input");
+ }
+ else
+ {
+ writer.endElement("a");
+ }
+ }
}
@@ -903,6 +970,34 @@
return _kids[index];
}
}
+
+ /**
+ * @return the state of the sorting after the page submition
+ */
+ private String findSortState(
+ int sortability,
+ FacesBean bean )
+ {
+ String state;
+ if (sortability == SORT_ASCENDING)
+ {
+ state = XhtmlConstants.SORTABLE_ASCENDING;
+ }
+ else if (sortability == SORT_DESCENDING)
+ {
+ state = XhtmlConstants.SORTABLE_DESCENDING;
+ }
+ else if ("descending".equals(getDefaultSortOrder(bean)))
+ {
+ state = XhtmlConstants.SORTABLE_ASCENDING;
+ }
+ else
+ {
+ state = "";
+ }
+
+ return state;
+ }
private PropertyKey _headerTextKey;
private PropertyKey _headerNoWrapKey;
Modified: myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PanelAccordionRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PanelAccordionRenderer.java?rev=721168&r1=721167&r2=721168&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PanelAccordionRenderer.java (original)
+++ myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PanelAccordionRenderer.java Thu Nov 27 04:38:15 2008
@@ -307,9 +307,23 @@
encodeChild(context, toolbar);
out.endElement("div");
}
-
- out.startElement("a", null);
- out.writeAttribute("name", detailItemId, null);
+
+ boolean javaScriptSupport = supportsScripting(arc);
+
+ if (javaScriptSupport)
+ {
+ out.startElement("a", null);
+ out.writeAttribute("name", detailItemId, null);
+ }
+ else
+ {
+ // For Non-JavaScript browsers, render an input element(type=submit) to
+ // submit the page. Encode the name attribute with the parameter name
+ // and value thus it would enable the browsers to include the name of
+ // this element in its payLoad if it submits the page.
+ out.startElement("input", null);
+ out.writeAttribute("type", "submit", null);
+ }
renderStyleClass(context, arc,
disabled
@@ -323,32 +337,74 @@
{
boolean isImmediate = detailItem.isImmediate();
String event = disclosed ? "hide" : "show";
- String onClickHandler = _getFormSubmitScript(component,
- arc,
- event,
- detailItemId,
- formName,
- compId,
- isImmediate);
- out.writeAttribute("onclick", onClickHandler, null);
- out.writeAttribute("href", "#", null);
+
+ if (javaScriptSupport)
+ {
+ String onClickHandler = _getFormSubmitScript(component,
+ arc,
+ event,
+ detailItemId,
+ formName,
+ compId,
+ isImmediate);
+ out.writeAttribute("onclick", onClickHandler, null);
+ out.writeAttribute("href", "#", null);
+ }
+ else
+ {
+ String nameAttri = XhtmlUtils.getEncodedParameter
+ (XhtmlConstants.SOURCE_PARAM)
+ + XhtmlUtils.getEncodedParameter(compId)
+ + XhtmlUtils.getEncodedParameter
+ (XhtmlConstants.EVENT_PARAM)
+ + XhtmlUtils.getEncodedParameter(event)
+ + XhtmlUtils.getEncodedParameter
+ (XhtmlConstants.TARGETITEM_PARAM)
+ + detailItemId;
+
+ out.writeAttribute("name", nameAttri, null);
+ }
}
-
- // =-=rbaranwa Per the UI Review, no icon to be rendered when
- // panel is disabled.
- if (! disabled)
+
+ if (javaScriptSupport)
+ {
+ // =-=rbaranwa Per the UI Review, no icon to be rendered when
+ // panel is disabled.
+ if (! disabled)
+ {
+ ShowDetailRenderer.renderDisclosureIcon(context,
+ arc,
+ disclosed,
+ getDisclosedTipKey(),
+ getUndisclosedTipKey());
+ }
+ if (titleText != null)
+ {
+ out.writeText(titleText, null);
+ }
+ out.endElement("a");
+ }
+ else
{
- ShowDetailRenderer.renderDisclosureIcon(context,
- arc,
- disclosed,
- getDisclosedTipKey(),
- getUndisclosedTipKey());
+ // Since we cannot render any image element as a child of input element,
+ // just render the icon symbol along with the text.
+ String icon = disclosed ? XhtmlConstants.NON_JS_DETAIL_DISCLOSED_ICON :
+ XhtmlConstants.NON_JS_DETAIL_UNDISCLOSED_ICON;
+ if (titleText != null)
+ {
+ icon = icon + titleText;
+ }
+
+ out.writeAttribute("value", icon, null);
+
+ if (disabled)
+ {
+ out.writeAttribute("disabled", Boolean.TRUE, "disabled");
+ }
+
+ out.endElement("input");
}
- if (titleText != null)
- out.writeText(titleText, null);
- out.endElement("a");
-
out.endElement("div"); // Ending div for an individual panel
@@ -498,11 +554,11 @@
.append("',")
.append(validate)
.append(", {event:'")
- .append(event)
- .append("',source:'")
- .append(compId)
- .append("',targetItem:'")
- .append(detailItemId)
+ .append(event)
+ .append("',source:'")
+ .append(compId)
+ .append("',targetItem:'")
+ .append(detailItemId)
.append("'});return false;");
onClickHandler = onClickHandlerBuff.toString();
Modified: myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ShowDetailRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ShowDetailRenderer.java?rev=721168&r1=721167&r2=721168&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ShowDetailRenderer.java (original)
+++ myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ShowDetailRenderer.java Thu Nov 27 04:38:15 2008
@@ -67,6 +67,8 @@
UIComponent component,
FacesBean bean) throws IOException
{
+
+ boolean javaScriptSupport = supportsScripting(arc);
boolean disclosed = getDisclosed(bean);
ResponseWriter rw = context.getResponseWriter();
@@ -75,13 +77,31 @@
renderId(context, component);
renderPromptStart(context, arc, component, bean);
- _renderScripts(context, arc, component);
- String onClickString =
- _generateOnClickString(context, arc, component, bean, disclosed);
String sourceValue = getClientId(context, component);
String linkId = getLinkId(sourceValue, disclosed);
+
+ String parameterString;
+ if (javaScriptSupport)
+ {
+ _renderScripts(context, arc, component);
+ parameterString = _generateOnClickString(context,
+ arc,
+ component,
+ bean,
+ disclosed);
+ }
+ else
+ {
+ parameterString = _encodedParam(context,
+ arc,
+ component,
+ bean,
+ disclosed);
+
+ }
+
+ _renderLinkStart(context, arc, parameterString);
- _renderLinkStart(context, arc, onClickString);
if (linkId != null)
rw.writeAttribute("id", linkId, null);
@@ -100,11 +120,20 @@
if (text != null)
{
if (!isTableAllDisclosure())
- _renderLinkStart(context, arc, onClickString);
+ _renderLinkStart(context, arc, parameterString);
renderStyleClasses(context, arc, getLinkStyleClasses());
- rw.writeText(text,
+ if (javaScriptSupport)
+ {
+ rw.writeText(text,
disclosed ? "disclosedText" : "undisclosedText");
-
+ }
+ else
+ {
+ // Since for Non-JavaScript browsers we render an input tag, set the
+ // value attribute to text
+ rw.writeAttribute("value", text,
+ disclosed ? "disclosedText" : "undisclosedText");
+ }
_renderLinkEnd(context, arc);
}
}
@@ -169,19 +198,33 @@
boolean disclosed,
String disclosedAltTextKey,
String undisclosedAltTextKey) throws IOException
- {
- Icon icon = _getDisclosureIcon(arc, disclosed);
-
- if (icon != null)
+ {
+ String key = disclosed ? disclosedAltTextKey : undisclosedAltTextKey;
+ // Get the alt text
+ String altText = arc.getTranslatedString(key);
+ // Since we render input element for Non-JavaScript browsers, we cannot
+ // render image element as its child. So set the value attribute of
+ // input element to the icon symbol
+ if (!supportsScripting(arc))
{
- // Get the alt text
- String key = disclosed ? disclosedAltTextKey : undisclosedAltTextKey;
- String altText = arc.getTranslatedString(key);
- // Get the align
- String align = OutputUtils.getMiddleIconAlignment(arc);
-
- // Render the icon with the specified attrs
- OutputUtils.renderIcon(context, arc, icon, altText, align);
+ ResponseWriter rw = context.getResponseWriter();
+ String icon = disclosed ? XhtmlConstants.NON_JS_DETAIL_DISCLOSED_ICON :
+ XhtmlConstants.NON_JS_DETAIL_UNDISCLOSED_ICON;
+ rw.writeAttribute("title", altText, null);
+ rw.writeAttribute("value", icon, null);
+ String linkConverter = "border: none; background: inherit;";
+ rw.writeAttribute("style", linkConverter,null);
+ }
+ else
+ {
+ Icon icon = _getDisclosureIcon(arc, disclosed);
+ if (icon != null)
+ {
+ // Get the align
+ String align = OutputUtils.getMiddleIconAlignment(arc);
+ // Render the icon with the specified attrs
+ OutputUtils.renderIcon(context, arc, icon, altText, align);
+ }
}
}
@@ -344,18 +387,28 @@
private void _renderLinkStart(
FacesContext context,
RenderingContext arc,
- String onclickString ) throws IOException
+ String parameterString ) throws IOException
{
ResponseWriter rw = context.getResponseWriter();
if (!supportsNavigation(arc)) {
rw.startElement("span", null);
}
- else
+ else if (supportsScripting(arc))
{
rw.startElement("a", null);
- rw.writeAttribute("onclick", onclickString, null);
+ rw.writeAttribute("onclick", parameterString, null);
rw.writeURIAttribute("href", "#", null);
}
+ // For Non-JavaScript browsers, render an input element(type=submit) to
+ // submit the page. Encode the name attribute with the parameter name
+ // and value thus it would enable the browsers to include the name of
+ // this element in its payLoad if it submits the page.
+ else
+ {
+ rw.startElement("input", null);
+ rw.writeAttribute("type", "submit", null);
+ rw.writeURIAttribute("name", parameterString, null);
+ }
}
private String _generateOnClickString(
@@ -419,8 +472,45 @@
ResponseWriter rw = context.getResponseWriter();
if (!supportsNavigation(arc))
rw.endElement("span");
- else
+ else if (supportsScripting(arc))
rw.endElement("a");
+ else
+ rw.endElement("input");
+ }
+
+ /**
+ * @return encoded parameter name and value pairs for Non-JavaScript
+ * browsers
+ */
+ private String _encodedParam(
+ FacesContext context,
+ RenderingContext arc,
+ UIComponent component,
+ FacesBean bean,
+ boolean disclosed)
+ {
+ FormData fData = arc.getFormData();
+ if (fData == null)
+ return null;
+
+ String sourceValue = getClientId(context, component);
+ String eventValue = (disclosed
+ ? XhtmlConstants.HIDE_EVENT
+ : XhtmlConstants.SHOW_EVENT);
+
+ String valueValue = getValueParameter(component);
+ String linkId = getLinkId(sourceValue, disclosed);
+
+ String nameAttri = XhtmlUtils.getEncodedParameter
+ (XhtmlConstants.SOURCE_PARAM)
+ + XhtmlUtils.getEncodedParameter(sourceValue)
+ + XhtmlUtils.getEncodedParameter
+ (XhtmlConstants.EVENT_PARAM)
+ + XhtmlUtils.getEncodedParameter(eventValue)
+ + XhtmlUtils.getEncodedParameter
+ (XhtmlConstants.VALUE_PARAM)
+ + valueValue;
+ return nameAttri;
}
/**
Modified: myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SkinSelectors.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SkinSelectors.java?rev=721168&r1=721167&r2=721168&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SkinSelectors.java (original)
+++ myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SkinSelectors.java Thu Nov 27 04:38:15 2008
@@ -1213,6 +1213,15 @@
public static final String AF_SHOW_DETAIL_DISCLOSURE_ICON_LINK_STYLE_CLASS =
"af|showDetail::disclosure-icon-link";
+
+ // //
+ // //
+ // ============================ tr:showDetailItem ============================ //
+ // //
+ // //
+ public static final String AF_SHOW_DETAIL_ITEM_SELECTED =
+ "af|showDetailItem::selected";
+
// ================================ Icons ================================ //
public static final String AF_SHOW_DETAIL_DISCLOSED_ICON_NAME =
"af|showDetail::disclosed-icon";
Modified: myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlConstants.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlConstants.java?rev=721168&r1=721167&r2=721168&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlConstants.java (original)
+++ myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlConstants.java Thu Nov 27 04:38:15 2008
@@ -309,5 +309,8 @@
public static final String MULTIPLE_VALUE_PARAM = "multipleValueParam";
public static final String NON_JS_BROWSER = "_noJavaScript";
public static final String NON_JS_BROWSER_TRUE = "true";
-
+ public static final String NON_JS_DETAIL_DISCLOSED_ICON = "-";
+ public static final String NON_JS_DETAIL_UNDISCLOSED_ICON = "+";
+ public static final String NON_JS_ASC_ICON = "v";
+ public static final String NON_JS_DESC_ICON = "^";
}
Modified: myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/pda/LinkRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/pda/LinkRenderer.java?rev=721168&r1=721167&r2=721168&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/pda/LinkRenderer.java (original)
+++ myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/pda/LinkRenderer.java Thu Nov 27 04:38:15 2008
@@ -18,6 +18,13 @@
*/
package org.apache.myfaces.trinidadinternal.ui.laf.base.pda;
+import java.io.IOException;
+
+import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.XhtmlConstants;
+import org.apache.myfaces.trinidadinternal.ui.action.ClientAction;
+import org.apache.myfaces.trinidadinternal.ui.action.ClientActionUtils;
+import org.apache.myfaces.trinidadinternal.ui.action.FireAction;
+import org.apache.myfaces.trinidadinternal.ui.laf.base.BaseLafUtils;
import org.apache.myfaces.trinidadinternal.ui.laf.base.xhtml.LinkUtils;
import org.apache.myfaces.trinidadinternal.ui.UINode;
import org.apache.myfaces.trinidadinternal.ui.UIXRenderingContext;
@@ -54,4 +61,131 @@
return styleClass;
}
+
+ @Override
+ protected String getElementName(
+ UIXRenderingContext context,
+ UINode node
+ )
+ {
+ // Check if the request is from a Non-JavaScript browsers and the
+ // destination is null. If so, we need to render an input tag element
+ if (_isInput(context,node))
+ {
+ return "input";
+ }
+
+ return super.getElementName(context, node);
+ }
+
+
+ @Override
+ protected void renderAttributes(
+ UIXRenderingContext context,
+ UINode node
+ ) throws IOException
+ {
+ // if the element is an input tag, it means the request is from
+ // a Non-JavaScript browser so encode the param name and value in
+ // the name attribute and set the type attribute to "submit"
+ if (_isInput(context, node))
+ {
+ // render the id
+ renderID(context, node);
+ renderAttributesExceptID(context, node);
+ ClientAction action = ClientActionUtils.getPrimaryClientAction
+ (context, node);
+ String nameAttr = null;
+ if(action != null)
+ {
+ String source = ((FireAction) action).getSource();
+ nameAttr = XhtmlConstants.SOURCE_PARAM +
+ XhtmlConstants.NO_JS_PARAMETER_KEY + source;
+ }
+ else
+ {
+ Object id = getID(context, node);
+ if(id != null)
+ {
+ nameAttr = id.toString();
+ }
+ }
+
+ renderAttribute(context, "type", "submit");
+ if (nameAttr != null)
+ {
+ renderAttribute(context, "name", nameAttr);
+ }
+ renderAttribute(context, "value", getText(context,node));
+ String linkConverter =
+ "border: none; background: inherit; text-decoration: underline;";
+ renderAttribute(context, "style", linkConverter);
+ if (isDisabled(context, node))
+ {
+ renderAttribute(context, "disabled", Boolean.TRUE);
+ }
+ }
+ else
+ {
+ super.renderAttributes(context, node);
+ }
+ }
+
+ @Override
+ protected void renderContent(
+ UIXRenderingContext context,
+ UINode node
+ ) throws IOException
+ {
+ if (isEmpty(context, node))
+ return;
+
+ // Since the value attribute of input element is already set to the content,
+ // render the content only for elements other than input.
+ if (!_isInput(context,node))
+ {
+ super.renderContent(context, node);
+ }
+ }
+
+ @Override
+ protected void renderID(
+ UIXRenderingContext context,
+ UINode node
+ ) throws IOException
+ {
+ Object id = getID(context, node);
+
+ if (id != null)
+ {
+ if (supportsID(context))
+ {
+ // For links, "name" and thus "id" is a URI attribute.
+ renderURIID(context, id);
+ }
+ // Don't render name attribute for input element since it is already been
+ // rendered with encoded param name and value pair in renderAttribute method.
+ if (!_isInput(context, node) && supportsNameIdentification(context)
+ && makeNameAndIDSame(context))
+ {
+ renderURIAttribute(context, "name", id);
+ }
+ }
+ }
+
+ /**
+ * Returns true if the request is from a Non-JavaScript browsers and the
+ * destination is not available.
+ */
+
+ private boolean _isInput(
+ UIXRenderingContext context,
+ UINode node
+ )
+ {
+ String destination = getDestination(context, node);
+
+ return (((destination == null) || ("#".equals(destination)))
+ && (!supportsScripting(context)));
+ }
}
Modified: myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/pda/ShowItemRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/pda/ShowItemRenderer.java?rev=721168&r1=721167&r2=721168&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/pda/ShowItemRenderer.java (original)
+++ myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/pda/ShowItemRenderer.java Thu Nov 27 04:38:15 2008
@@ -20,12 +20,15 @@
import java.io.IOException;
+import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.SkinSelectors;
+import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.XhtmlConstants;
+import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.XhtmlUtils;
import org.apache.myfaces.trinidadinternal.share.url.URLEncoder;
-import org.apache.myfaces.trinidadinternal.ui.UIXRenderingContext;
-import org.apache.myfaces.trinidadinternal.ui.UINode;
import org.apache.myfaces.trinidadinternal.ui.laf.base.BaseLafUtils;
import org.apache.myfaces.trinidadinternal.ui.laf.base.xhtml.FormValueRenderer;
-import org.apache.myfaces.trinidadinternal.ui.laf.base.xhtml.LinkRenderer;
+import org.apache.myfaces.trinidadinternal.ui.laf.base.xhtml.LinkUtils;
+import org.apache.myfaces.trinidadinternal.ui.UINode;
+import org.apache.myfaces.trinidadinternal.ui.UIXRenderingContext;
/**
* @deprecated This class comes from the old Java 1.2 UIX codebase and should not be used anymore.
@@ -83,4 +86,79 @@
return partialChangeScript;
}
+
+ @Override
+ protected void renderAttributes(
+ UIXRenderingContext context,
+ UINode node
+ ) throws IOException
+ {
+ // For Non-JavaScript browsers, render an input element(type=submit) to
+ // submit the page. Encode the name attribute with the parameter name
+ // and value thus it would enable the browsers to include the name of
+ // this element in its payLoad if it submits the page.
+ if (!supportsScripting(context))
+ {
+ // render the id
+ renderID(context, node);
+ renderAttributesExceptID(context, node);
+ renderAttribute(context, "type", "submit");
+ String sourceParam = BaseLafUtils.getStringAttributeValue(
+ context, node, ID_ATTR);
+ String nameAttri = XhtmlUtils.getEncodedParameter
+ (XhtmlConstants.SOURCE_PARAM)
+ + XhtmlUtils.getEncodedParameter(sourceParam)
+ + XhtmlUtils.getEncodedParameter
+ (XhtmlConstants.EVENT_PARAM)
+ + SHOW_EVENT;
+ renderAttribute(context, "name", nameAttri);
+ renderAttribute(context, "value", getText(context,node));
+ String linkConverter =
+ "border: none; background: inherit; text-decoration: underline;";
+ renderAttribute(context, "style", linkConverter);
+ if (isDisabled(context, node))
+ {
+ renderAttribute(context, "disabled", Boolean.TRUE);
+ }
+ }
+ else
+ {
+ super.renderAttributes(context, node);
+ }
+ }
+
+ /**
+ * Returns the StyleClass to use to render this node.
+ */
+ @Override
+ protected Object getStyleClass(
+ UIXRenderingContext context,
+ UINode node
+ )
+ {
+ // Handle CSS for Basic HTML browser separately since we are rendering
+ // input element for Basic HTML browser instead of an anchor element
+ if (!supportsScripting(context) &&
+ Boolean.TRUE.equals(node.getAttributeValue(context, DISCLOSED_ATTR)))
+ {
+ return SkinSelectors.AF_SHOW_DETAIL_ITEM_SELECTED;
+ }
+
+ String nodeStyleClass =
+ (String)node.getAttributeValue(context, STYLE_CLASS_ATTR);
+ if (nodeStyleClass != null)
+ return nodeStyleClass;
+
+ String styleClass = null;
+
+ // We provide a default style class for links, as long
+ // as our parent hasn't explicitly disabled this.
+ if (!LinkUtils.isDefaultStyleClassDisabled(context))
+ {
+ styleClass = (isDisabled(context, node)) ?
+ LINK_DISABLED_STYLE_CLASS :
+ LINK_STYLE_CLASS;
+ }
+ return styleClass;
+ }
}
Modified: myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/resources/META-INF/adf/styles/minimal-pda.xss
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/resources/META-INF/adf/styles/minimal-pda.xss?rev=721168&r1=721167&r2=721168&view=diff
==============================================================================
--- myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/resources/META-INF/adf/styles/minimal-pda.xss (original)
+++ myfaces/trinidad/branches/1.2.10.1-branch/trinidad-impl/src/main/resources/META-INF/adf/styles/minimal-pda.xss Thu Nov 27 04:38:15 2008
@@ -420,4 +420,14 @@
<property name="font-size">xx-small</property>
</style>
</styleSheet>
+
+ <styleSheet platforms="genericpda">
+
+ <style selector="af|showDetailItem::selected">
+ <includeStyle name="AFDefaultBoldFont"/>
+ <includeStyle name="AFDarkForeground"/>
+ </style>
+
+ </styleSheet>
+
</styleSheetDocument>