You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by dr...@apache.org on 2007/07/18 22:32:45 UTC
svn commit: r557388 [1/13] - in /myfaces/trinidad/trunk/trinidad:
trinidad-build/src/main/resources/META-INF/maven-faces-plugin/renderers/trinidad/
trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/
trinidad-impl/src/...
Author: drobinson
Date: Wed Jul 18 13:32:41 2007
New Revision: 557388
URL: http://svn.apache.org/viewvc?view=rev&rev=557388
Log:
Migrated old MessageBoxRenderer.
TRINIDAD-110
Added:
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/MessageBoxRenderer.java
Modified:
myfaces/trinidad/trunk/trinidad/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/renderers/trinidad/Messages.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PanelBoxRenderer.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PanelHeaderRenderer.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SkinSelectors.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/util/MessageUtils.java
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/resources/META-INF/adf/styles/base-desktop.xss
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messages-minimal-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messages-minimalIE-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messages-minimalIERtl-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messages-minimalInacc-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messages-minimalPPC-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messages-minimalSaf-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messages-minimalScrRdr-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesError-minimal-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesError-minimalIE-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesError-minimalIERtl-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesError-minimalInacc-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesError-minimalPPC-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesError-minimalSaf-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesError-minimalScrRdr-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesFatal-minimal-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesFatal-minimalIE-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesFatal-minimalIERtl-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesFatal-minimalInacc-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesFatal-minimalPPC-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesFatal-minimalSaf-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesFatal-minimalScrRdr-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesInfo-minimal-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesInfo-minimalIE-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesInfo-minimalIERtl-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesInfo-minimalInacc-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesInfo-minimalPPC-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesInfo-minimalSaf-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesInfo-minimalScrRdr-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesWarn-minimal-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesWarn-minimalIE-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesWarn-minimalIERtl-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesWarn-minimalInacc-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesWarn-minimalPPC-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesWarn-minimalSaf-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messagesWarn-minimalScrRdr-golden.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/testScripts/messages.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/testScripts/messagesError.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/testScripts/messagesFatal.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/testScripts/messagesInfo.xml
myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/testScripts/messagesWarn.xml
Modified: myfaces/trinidad/trunk/trinidad/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/renderers/trinidad/Messages.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/renderers/trinidad/Messages.xml?view=diff&rev=557388&r1=557387&r2=557388
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/renderers/trinidad/Messages.xml (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/renderers/trinidad/Messages.xml Wed Jul 18 13:32:41 2007
@@ -25,7 +25,8 @@
<renderer>
<component-family>org.apache.myfaces.trinidad.Messages</component-family>
<renderer-type>org.apache.myfaces.trinidad.Messages</renderer-type>
- <renderer-class>org.apache.myfaces.trinidadinternal.renderkit.uix.MessageBoxRenderer</renderer-class>
+ <!--renderer-class>org.apache.myfaces.trinidadinternal.renderkit.uix.MessageBoxRenderer</renderer-class-->
+ <renderer-class>org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.MessageBoxRenderer</renderer-class>
<renderer-extension>
<mfp:component-type>org.apache.myfaces.trinidad.CoreMessages</mfp:component-type>
</renderer-extension>
Added: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/MessageBoxRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/MessageBoxRenderer.java?view=auto&rev=557388
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/MessageBoxRenderer.java (added)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/MessageBoxRenderer.java Wed Jul 18 13:32:41 2007
@@ -0,0 +1,472 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.trinidadinternal.renderkit.core.xhtml;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import org.apache.myfaces.trinidad.bean.FacesBean;
+import org.apache.myfaces.trinidad.bean.PropertyKey;
+import org.apache.myfaces.trinidad.component.core.output.CoreMessages;
+
+import org.apache.myfaces.trinidad.context.RenderingContext;
+import org.apache.myfaces.trinidad.context.RequestContext;
+import org.apache.myfaces.trinidad.skin.Icon;
+import org.apache.myfaces.trinidad.util.LabeledFacesMessage;
+import org.apache.myfaces.trinidadinternal.util.MessageUtils;
+
+/**
+ * Renderer for org.apache.myfaces.trinidad.Messages, family org.apache.myfaces.trinidad.Messages.
+ *
+ */
+public class MessageBoxRenderer extends XhtmlRenderer
+{
+ public MessageBoxRenderer()
+ {
+ this(CoreMessages.TYPE);
+ }
+
+ protected MessageBoxRenderer(FacesBean.Type type)
+ {
+ super(type);
+ }
+
+ @Override
+ protected void findTypeConstants(FacesBean.Type type)
+ {
+ super.findTypeConstants(type);
+ _textKey = type.findKey("text");
+ _messageKey = type.findKey("message");
+ _globalOnlyKey = type.findKey("globalOnly");
+
+ _headerRenderer = new HeaderRenderer(type);
+ _boxRenderer = new BoxRenderer(type);
+ }
+
+ @Override
+ public boolean getRendersChildren()
+ {
+ return true;
+ }
+
+ @Override
+ protected void encodeAll(FacesContext context, RenderingContext arc,
+ UIComponent component, FacesBean bean) throws IOException
+ {
+ // Force MessageBox to be re-rendered via PPR, since the set
+ // of messages may have changed.
+ RequestContext afContext = RequestContext.getCurrentInstance();
+ if (afContext != null)
+ afContext.addPartialTarget(component);
+
+ ResponseWriter writer = context.getResponseWriter();
+
+ // Only when there's at least one message queued
+ if (context.getMessages().hasNext())
+ {
+ // Setup the arc, so that default skin selectors of
+ // delegate renderers are mapped to those of this renderer
+ arc.setSkinResourceKeyMap(_RESOURCE_KEY_MAP);
+
+ // Delegate rendering of the outer shell to the BoxRenderer class
+ // which will call back to this renderer to output the messages
+ _boxRenderer.encodeAll(context, arc, component, bean);
+ }
+ else
+ {
+ // Always render an element, for update at PPR-time
+ writer.startElement(XhtmlConstants.SPAN_ELEMENT, component);
+ renderId(context, component);
+ writer.endElement(XhtmlConstants.SPAN_ELEMENT);
+ }
+ }
+
+ protected void _renderContent(
+ FacesContext context,
+ RenderingContext arc,
+ UIComponent component,
+ FacesBean bean)
+ throws IOException
+ {
+ ResponseWriter writer = context.getResponseWriter();
+
+ boolean globalOnly = isGlobalOnly(bean);
+
+ // TODO - Merge styles into AF_MESSAGES_STYLE_CLASS
+ writer.startElement(XhtmlConstants.DIV_ELEMENT, component);
+ renderStyleClass(context, arc, SkinSelectors.AF_MESSAGES_BODY_STYLE_CLASS);
+
+ _renderHeader(context, arc, component, bean);
+
+ // Render the 'message' attribute if specified
+ String message = getMessage(bean);
+ if (message != null)
+ {
+ writer.startElement(XhtmlConstants.DIV_ELEMENT, null);
+ renderStyleClass(context, arc, SkinSelectors.AF_MESSAGES_MESSAGE_TEXT_STYLE_CLASS);
+ writer.write(message);
+ writer.endElement(XhtmlConstants.DIV_ELEMENT);
+ }
+
+ // Render messages as a list
+ writer.startElement("ol", null);
+
+ // Switch list style depending if no. of messages is 1 or >1
+ String[] styleClasses = null;
+ if (MessageUtils.multipleMessagesQueued(context, globalOnly))
+ styleClasses = new String[] {SkinSelectors.AF_MESSAGES_LIST_STYLE_CLASS};
+ else
+ styleClasses = new String[] {SkinSelectors.AF_MESSAGES_LIST_STYLE_CLASS,
+ SkinSelectors.AF_MESSAGES_LIST_SINGLE_STYLE_CLASS};
+
+ renderStyleClasses(context, arc, styleClasses);
+
+ _renderGlobalMessages(context, arc, component, bean);
+
+ if (!globalOnly)
+ _renderComponentMessages(context, arc, component, bean);
+
+ // End of list
+ writer.endElement("ol");
+
+ writer.endElement(XhtmlConstants.DIV_ELEMENT);
+ }
+
+ @SuppressWarnings("unchecked")
+ protected void _renderGlobalMessages(
+ FacesContext context,
+ RenderingContext arc,
+ UIComponent component,
+ FacesBean bean)
+ throws IOException
+ {
+ ResponseWriter writer = context.getResponseWriter();
+
+ // Get all messages without and id
+ Iterator<FacesMessage> msgIter = context.getMessages(null);
+ while (msgIter.hasNext())
+ {
+ FacesMessage msg = msgIter.next();
+
+ writer.startElement("li", null);
+
+ String text = MessageUtils.getGlobalMessage(arc, msg.getSummary(), msg.getDetail());
+ renderPossiblyFormattedText(context, text);
+
+ writer.endElement("li");
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ protected void _renderComponentMessages(
+ FacesContext context,
+ RenderingContext arc,
+ UIComponent component,
+ FacesBean bean)
+ throws IOException
+ {
+ ResponseWriter writer = context.getResponseWriter();
+
+ Iterator<String> idIter = context.getClientIdsWithMessages();
+ while (idIter.hasNext())
+ {
+ String id = idIter.next();
+
+ // Skip global messages
+ if (id == null)
+ continue;
+
+ Iterator<FacesMessage> msgIter = context.getMessages(id);
+ while (msgIter.hasNext())
+ {
+ FacesMessage msg = msgIter.next();
+
+ writer.startElement("li", null);
+
+ _renderMessageAnchor(context, arc, msg, id);
+
+ String text = MessageUtils.getClientMessage(arc, msg.getSummary(), msg.getDetail());
+
+ renderPossiblyFormattedText(context, text);
+
+ writer.endElement("li");
+ }
+ }
+ }
+
+ protected void _renderHeader(
+ FacesContext context,
+ RenderingContext arc,
+ UIComponent component,
+ FacesBean bean) throws IOException
+ {
+ delegateRenderer(context, arc, component, bean, _headerRenderer);
+ }
+
+ protected void _renderMessageAnchor(
+ FacesContext context,
+ RenderingContext arc,
+ FacesMessage msg,
+ String componentId) throws IOException
+ {
+ ResponseWriter writer = context.getResponseWriter();
+
+ if (componentId == null)
+ return;
+
+ // Anchor rendering currently only possible for messages that
+ // contain a label, but we could use summary text in future
+ if (msg instanceof LabeledFacesMessage)
+ {
+ LabeledFacesMessage labeledMsg = (LabeledFacesMessage)msg;
+ String anchor = MessageUtils.getAnchor(componentId);
+ if (anchor != null)
+ {
+ writer.startElement(XhtmlConstants.LINK_ELEMENT, null);
+ renderStyleClass(context, arc, SkinSelectors.LINK_STYLE_CLASS);
+ writer.writeAttribute(XhtmlConstants.HREF_ATTRIBUTE, "#" + anchor, null);
+ writer.write(labeledMsg.getLabel().toString());
+ writer.endElement(XhtmlConstants.LINK_ELEMENT);
+ }
+ }
+ }
+
+ // Rendering delegate to handle output of the header for the message box
+ private class HeaderRenderer extends PanelHeaderRenderer
+ {
+ public HeaderRenderer(FacesBean.Type type)
+ {
+ super(type);
+ }
+
+ @Override
+ protected boolean shouldRenderId(FacesContext context, UIComponent component)
+ {
+ // Header will always be refreshed as sub-element of parent
+ return false;
+ }
+
+ @Override
+ protected void renderEventHandlers(FacesContext context, FacesBean bean)
+ throws IOException
+ {
+ // Prevent HeaderRenderer from re-rendering event handlers
+ }
+
+ @Override
+ protected String getMessageType(FacesBean bean)
+ {
+ String messageType = null;
+
+ FacesMessage.Severity maxSeverity =
+ FacesContext.getCurrentInstance().getMaximumSeverity();
+
+ // Map FacesMessage severity to levels expected by panelHeaderRenderer
+ if (FacesMessage.SEVERITY_FATAL.equals(maxSeverity))
+ messageType = XhtmlConstants.MESSAGE_TYPE_ERROR;
+ else if (FacesMessage.SEVERITY_ERROR.equals(maxSeverity))
+ messageType = XhtmlConstants.MESSAGE_TYPE_ERROR;
+ else if (FacesMessage.SEVERITY_WARN.equals(maxSeverity))
+ messageType = XhtmlConstants.MESSAGE_TYPE_WARNING;
+ else if (FacesMessage.SEVERITY_INFO.equals(maxSeverity))
+ messageType = XhtmlConstants.MESSAGE_TYPE_INFO;
+
+ return messageType;
+ }
+
+ @Override
+ protected String getText(RenderingContext arc, FacesBean bean,
+ String messageType)
+ {
+ String text = MessageBoxRenderer.this.getText(bean);
+ if (text != null)
+ // Use Text attribute of this component for header text
+ return text;
+
+ // Otherwise parent will decide text & style based on messageType
+ return super.getText(arc, bean, messageType);
+ }
+
+ @Override
+ protected String getMessageIconName(String messageType)
+ {
+ String iconName = null;
+
+ // Use the af|messages skin selectors instead of those
+ // used by panelHeader
+ if (XhtmlConstants.MESSAGE_TYPE_ERROR.equals(messageType))
+ iconName = SkinSelectors.AF_MESSAGES_ERROR_ICON_NAME;
+ else if (XhtmlConstants.MESSAGE_TYPE_WARNING.equals(messageType))
+ iconName = SkinSelectors.AF_MESSAGES_WARNING_ICON_NAME;
+ else if (XhtmlConstants.MESSAGE_TYPE_INFO.equals(messageType))
+ iconName = SkinSelectors.AF_MESSAGES_INFO_ICON_NAME;
+ else if (XhtmlConstants.MESSAGE_TYPE_CONFIRMATION.equals(messageType))
+ iconName = SkinSelectors.AF_MESSAGES_CONFIRMATION_ICON_NAME;
+
+ assert ((iconName != null) ||
+ XhtmlConstants.MESSAGE_TYPE_NONE.equals(messageType));
+
+ return iconName;
+ }
+
+ }
+
+ // Delegate renderer, handles the outer element rendering and
+ // provides option to wrap message box using rounded borders etc.
+ private class BoxRenderer extends PanelBoxRenderer
+ {
+
+ public BoxRenderer(FacesBean.Type type)
+ {
+ super(type);
+ }
+
+ @Override
+ protected boolean shouldRenderId(FacesContext context, UIComponent component)
+ {
+ // As panelBox is handling the outer rendering, then it should render
+ // the id of the MessageBox component
+ return true;
+ }
+
+ @Override
+ protected String getBackground(FacesBean bean)
+ {
+ // Force use of 'light' style, so we know which style
+ // to re-map in _RESOURCE_KEY_MAP
+ return "light";
+ }
+
+ @Override
+ protected boolean hasChildren(UIComponent component)
+ {
+ // Required to force panelBox to call render properly
+ return true;
+ }
+
+ @Override
+ protected void renderBody(FacesContext context, RenderingContext arc,
+ UIComponent component, FacesBean bean, Object icon, Object text) throws IOException
+ {
+ // Pass control back to MessageBoxRenderer to continue rendering
+ // the content of the message box.
+ MessageBoxRenderer.this._renderContent(context, arc, component, bean);
+ }
+ }
+
+ @Override
+ protected boolean shouldRenderId(FacesContext context, UIComponent component)
+ {
+ // Normally BoxRenderer will output the id for this component, but
+ // if we're just outputting an empty element for PPR purposes, then
+ // this renderer should output the id.
+ return true;
+ }
+
+ protected String getText(FacesBean bean)
+ {
+ if (_textKey == null)
+ return null;
+ return toString(bean.getProperty(_textKey));
+ }
+
+ protected String getMessage(FacesBean bean)
+ {
+ if (_messageKey == null)
+ return null;
+ return toString(bean.getProperty(_messageKey));
+ }
+
+ protected boolean isGlobalOnly(FacesBean bean)
+ {
+ Object o = bean.getProperty(_globalOnlyKey);
+ if (o == null)
+ o = _globalOnlyKey.getDefault();
+ return Boolean.TRUE.equals(o);
+ }
+
+ private PropertyKey _textKey;
+ private PropertyKey _messageKey;
+ private PropertyKey _globalOnlyKey;
+ private XhtmlRenderer _headerRenderer;
+ private PanelBoxRenderer _boxRenderer;
+
+ // Map panelHeader & panelBox Styles/Icons etc. to this renderer's selectors.
+ private static final Map<String, String> _RESOURCE_KEY_MAP;
+
+ static
+ {
+ _RESOURCE_KEY_MAP = new HashMap<String, String>();
+
+ // translation keys
+ _RESOURCE_KEY_MAP.put("af_panelHeader.INFORMATION",
+ "af_messages.INFORMATION");
+ _RESOURCE_KEY_MAP.put("af_panelHeader.WARNING",
+ "af_messages.WARNING");
+ _RESOURCE_KEY_MAP.put("af_panelHeader.ERROR",
+ "af_messages.ERROR");
+ _RESOURCE_KEY_MAP.put("af_panelHeader.CONFIRMATION",
+ "af_messages.CONFIRMATION");
+ // icons
+ _RESOURCE_KEY_MAP.put(SkinSelectors.AF_PANEL_HEADER_ERROR_ICON_NAME,
+ SkinSelectors.AF_MESSAGES_ERROR_ICON_NAME);
+ _RESOURCE_KEY_MAP.put(SkinSelectors.AF_PANEL_HEADER_WARNING_ICON_NAME,
+ SkinSelectors.AF_MESSAGES_WARNING_ICON_NAME);
+ _RESOURCE_KEY_MAP.put(SkinSelectors.AF_PANEL_HEADER_INFO_ICON_NAME,
+ SkinSelectors.AF_MESSAGES_INFO_ICON_NAME);
+ _RESOURCE_KEY_MAP.put(SkinSelectors.AF_PANEL_HEADER_CONFIRMATION_ICON_NAME,
+ SkinSelectors.AF_MESSAGES_CONFIRMATION_ICON_NAME);
+
+ // styles
+ _RESOURCE_KEY_MAP.put(SkinSelectors.AF_PANEL_HEADER_ERROR_STYLE_CLASS,
+ SkinSelectors.AF_MESSAGES_ERROR_STYLE_CLASS);
+ _RESOURCE_KEY_MAP.put(SkinSelectors.AF_PANEL_HEADER_STYLE_CLASS,
+ SkinSelectors.AF_MESSAGES_HEADER_STYLE_CLASS);
+
+ // We forced the use of 'light' style above, so now map it
+ _RESOURCE_KEY_MAP.put(SkinSelectors.AF_PANEL_BOX_LIGHT_STYLE_CLASS,
+ SkinSelectors.AF_MESSAGES_STYLE_CLASS);
+
+ // frame styles
+ _RESOURCE_KEY_MAP.put(SkinSelectors.AF_PANEL_BOX_TOP_START_STYLE_CLASS,
+ SkinSelectors.AF_MESSAGES_TOP_START_STYLE_CLASS);
+ _RESOURCE_KEY_MAP.put(SkinSelectors.AF_PANEL_BOX_TOP_STYLE_CLASS,
+ SkinSelectors.AF_MESSAGES_TOP_STYLE_CLASS);
+ _RESOURCE_KEY_MAP.put(SkinSelectors.AF_PANEL_BOX_TOP_END_STYLE_CLASS,
+ SkinSelectors.AF_MESSAGES_TOP_END_STYLE_CLASS);
+ _RESOURCE_KEY_MAP.put(SkinSelectors.AF_PANEL_BOX_START_STYLE_CLASS,
+ SkinSelectors.AF_MESSAGES_START_STYLE_CLASS);
+ _RESOURCE_KEY_MAP.put(SkinSelectors.AF_PANEL_BOX_END_STYLE_CLASS,
+ SkinSelectors.AF_MESSAGES_END_STYLE_CLASS);
+ _RESOURCE_KEY_MAP.put(SkinSelectors.AF_PANEL_BOX_BOTTOM_START_STYLE_CLASS,
+ SkinSelectors.AF_MESSAGES_BOTTOM_START_STYLE_CLASS);
+ _RESOURCE_KEY_MAP.put(SkinSelectors.AF_PANEL_BOX_BOTTOM_STYLE_CLASS,
+ SkinSelectors.AF_MESSAGES_BOTTOM_STYLE_CLASS);
+ _RESOURCE_KEY_MAP.put(SkinSelectors.AF_PANEL_BOX_BOTTOM_END_STYLE_CLASS,
+ SkinSelectors.AF_MESSAGES_BOTTOM_END_STYLE_CLASS);
+ }
+
+}
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PanelBoxRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PanelBoxRenderer.java?view=diff&rev=557388&r1=557387&r2=557388
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PanelBoxRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PanelBoxRenderer.java Wed Jul 18 13:32:41 2007
@@ -264,7 +264,7 @@
// Render body
writer.startElement(XhtmlConstants.TABLE_DATA_ELEMENT, null);
- _renderBody(context, arc, component, bean, icon, text);
+ renderBody(context, arc, component, bean, icon, text);
writer.endElement(XhtmlConstants.TABLE_DATA_ELEMENT);
// Render right edge
@@ -288,7 +288,7 @@
writer.endElement(XhtmlConstants.TABLE_ROW_ELEMENT);
}
- private void _renderBody(
+ protected void renderBody(
FacesContext context,
RenderingContext arc,
UIComponent component,
@@ -319,7 +319,7 @@
// Render content
writer.startElement(XhtmlConstants.TABLE_ROW_ELEMENT, null);
writer.startElement(XhtmlConstants.TABLE_DATA_ELEMENT, null);
- _renderContent(context, arc, bean, component);
+ renderContent(context, arc, bean, component);
writer.endElement(XhtmlConstants.TABLE_DATA_ELEMENT);
writer.endElement(XhtmlConstants.TABLE_ROW_ELEMENT);
@@ -337,7 +337,7 @@
{
// We only have a content, use a div as style class placeholder
writer.startElement(XhtmlConstants.DIV_ELEMENT, null);
- _renderContent(context, arc, bean, component);
+ renderContent(context, arc, bean, component);
writer.endElement(XhtmlConstants.DIV_ELEMENT);
}
}
@@ -392,7 +392,7 @@
}
}
- private void _renderContent(
+ protected void renderContent(
FacesContext context,
RenderingContext arc,
FacesBean bean,
@@ -415,21 +415,29 @@
protected String getText(FacesBean bean)
{
+ if (_textKey == null)
+ return null;
return toString(bean.getProperty(_textKey));
}
protected String getIcon(FacesBean bean)
{
+ if (_iconKey == null)
+ return null;
return toUri(bean.getProperty(_iconKey));
}
protected String getContentStyle(FacesBean bean)
{
+ if (_contentStyleKey == null)
+ return null;
return toString(bean.getProperty(_contentStyleKey));
}
protected String getBackground(FacesBean bean)
{
+ if (_backgroundKey == null)
+ return null;
return toString(bean.getProperty(_backgroundKey));
}
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PanelHeaderRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PanelHeaderRenderer.java?view=diff&rev=557388&r1=557387&r2=557388
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PanelHeaderRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/PanelHeaderRenderer.java Wed Jul 18 13:32:41 2007
@@ -163,7 +163,7 @@
!XhtmlConstants.MESSAGE_TYPE_NONE.equals(messageType))
{
// If we've got a message type, get the Icon
- String iconName = _getMessageIconName(messageType);
+ String iconName = getMessageIconName(messageType);
if (iconName != null)
{
Icon icon = arc.getIcon(iconName);
@@ -198,8 +198,6 @@
}
}
-
-
/**
* Returns text of header
*/
@@ -240,17 +238,23 @@
protected String getIconUri(
FacesBean bean)
{
+ if (_iconKey == null)
+ return null;
return toUri(bean.getProperty(_iconKey));
}
protected Number getSize(FacesBean bean)
{
+ if (_sizeKey == null)
+ return null;
return (Number) bean.getProperty(_sizeKey);
}
protected String getMessageType(FacesBean bean)
{
+ if (_messageTypeKey == null)
+ return null;
return toString(bean.getProperty(_messageTypeKey));
}
@@ -318,9 +322,16 @@
Integer.valueOf(headerNestLevel - 1));
}
-
- // Returns the icon name for the specfied messageType
- private String _getMessageIconName(String messageType)
+ /**
+ * This method compares the messageType to a number of
+ * possible message types (e.g. SkinSelectors.MESSAGE_TYPE_ERROR)
+ * and returns an icon name for the appropriate type.
+ * This method should be overridden to change the standard
+ * icons used for this component.
+ * @param messageType
+ * @return The icon name for the specfied messageType.
+ */
+ protected String getMessageIconName(String messageType)
{
String iconName = null;
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SkinSelectors.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SkinSelectors.java?view=diff&rev=557388&r1=557387&r2=557388
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SkinSelectors.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/SkinSelectors.java Wed Jul 18 13:32:41 2007
@@ -549,6 +549,8 @@
"af|messages::message-text";
public static final String AF_MESSAGES_LIST_STYLE_CLASS =
"af|messages::list";
+ public static final String AF_MESSAGES_LIST_SINGLE_STYLE_CLASS =
+ "af|messages::list-single";
// ================================ Icons ================================ //
public static final String AF_MESSAGES_ERROR_ICON_NAME =
@@ -560,6 +562,23 @@
public static final String AF_MESSAGES_CONFIRMATION_ICON_NAME =
"af|messages::confirmation-icon";
+ // ================================ Frame ================================ //
+ public static final String AF_MESSAGES_TOP_START_STYLE_CLASS =
+ AF_MESSAGES_STYLE_CLASS + "::top-start";
+ public static final String AF_MESSAGES_TOP_STYLE_CLASS =
+ AF_MESSAGES_STYLE_CLASS + "::top";
+ public static final String AF_MESSAGES_TOP_END_STYLE_CLASS =
+ AF_MESSAGES_STYLE_CLASS + "::top-end";
+ public static final String AF_MESSAGES_START_STYLE_CLASS =
+ AF_MESSAGES_STYLE_CLASS + "::start";
+ public static final String AF_MESSAGES_END_STYLE_CLASS =
+ AF_MESSAGES_STYLE_CLASS + "::end";
+ public static final String AF_MESSAGES_BOTTOM_START_STYLE_CLASS =
+ AF_MESSAGES_STYLE_CLASS + "::bottom-start";
+ public static final String AF_MESSAGES_BOTTOM_STYLE_CLASS =
+ AF_MESSAGES_STYLE_CLASS + "::bottom";
+ public static final String AF_MESSAGES_BOTTOM_END_STYLE_CLASS =
+ AF_MESSAGES_STYLE_CLASS + "::bottom-end";
// //
// //
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/util/MessageUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/util/MessageUtils.java?view=diff&rev=557388&r1=557387&r2=557388
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/util/MessageUtils.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/util/MessageUtils.java Wed Jul 18 13:32:41 2007
@@ -21,15 +21,18 @@
import java.util.Iterator;
import javax.faces.application.FacesMessage;
+import javax.faces.application.FacesMessage.Severity;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import org.apache.myfaces.trinidad.component.core.output.CoreMessage;
+import org.apache.myfaces.trinidad.context.RenderingContext;
import org.apache.myfaces.trinidad.render.RenderUtils;
+import org.apache.myfaces.trinidad.util.FastMessageFormat;
-import org.apache.myfaces.trinidadinternal.share.util.FastMessageFormat;
import org.apache.myfaces.trinidadinternal.ui.UIXRenderingContext;
import org.apache.myfaces.trinidadinternal.ui.laf.base.BaseLafRenderer;
+import org.apache.myfaces.trinidadinternal.ui.laf.base.desktop.MessageWrapper;
/**
* Utility functions used for messaging.
@@ -84,8 +87,40 @@
{
return RenderUtils.getRelativeId(context, from, forParam);
}
+
+ /**
+ * Returns true if there is more than one FacesMessage queued.
+ * @param context
+ * @param globalOnly Count only global messages
+ * @return true if multiple messages queued.
+ */
+ @SuppressWarnings("unchecked")
+ public static boolean multipleMessagesQueued(
+ FacesContext context,
+ boolean globalOnly)
+ {
+ Iterator<FacesMessage> msgIter = null;
+ if (globalOnly)
+ // All messages without id's
+ msgIter = context.getMessages(null);
+ else
+ // All messages, inc those without id's
+ msgIter = context.getMessages();
+
+ if (msgIter.hasNext())
+ {
+ // At least one message
+ msgIter.next();
-
+ if (msgIter.hasNext())
+ {
+ // At least two messages
+ return true;
+ }
+ }
+ return false;
+ }
+
/**
* @todo right now I'm just appending '_msgAnc_' to the front of the
* client id for the anchor.
@@ -95,8 +130,7 @@
* return an anchor on ie6.
*/
public static String getAnchor(
- String clientID
- )
+ String clientID)
{
if (clientID == null)
return null;
@@ -104,23 +138,51 @@
return "_msgAnc_" + clientID;
}
+ @Deprecated
public static String getGlobalMessage(
- UIXRenderingContext context,
- String summary,
- String detail)
+ UIXRenderingContext context,
+ String summary,
+ String detail)
+ {
+ if ((summary != null) && summary.equals(detail))
+ return summary;
+
+ String[] parameters = new String[] { summary, detail };
+ String pattern = BaseLafRenderer.getTranslatedString(context,
+ _GLOBAL_FORMAT_KEY);
+
+ return (new FastMessageFormat(pattern)).format(parameters);
+ }
+
+ public static String getGlobalMessage(
+ RenderingContext arc,
+ String summary,
+ String detail)
{
if ((summary != null) && summary.equals(detail))
return summary;
String[] parameters = new String[] { summary, detail };
- String pattern = BaseLafRenderer.getTranslatedString(context,
- _GLOBAL_FORMAT_KEY);
+ String pattern = arc.getTranslatedString(_GLOBAL_FORMAT_KEY);
return (new FastMessageFormat(pattern)).format(parameters);
}
+ public static String getClientMessage(
+ RenderingContext arc,
+ String summary,
+ String detail)
+ {
+
+ String[] parameters = new String[] { summary };
+ String pattern = arc.getTranslatedString(_MESSAGE_BOX_LIST_FORMAT_KEY);
+ return (new FastMessageFormat(pattern)).format(parameters);
+ }
static private final String _GLOBAL_FORMAT_KEY =
"af_messages.GLOBAL_MESSAGE_FORMAT";
+ static private final String _MESSAGE_BOX_LIST_FORMAT_KEY =
+ "af_messages.LIST_FORMAT_private";
+
}
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/resources/META-INF/adf/styles/base-desktop.xss
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/resources/META-INF/adf/styles/base-desktop.xss?view=diff&rev=557388&r1=557387&r2=557388
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/resources/META-INF/adf/styles/base-desktop.xss (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/resources/META-INF/adf/styles/base-desktop.xss Wed Jul 18 13:32:41 2007
@@ -2176,6 +2176,7 @@
<includeStyle name="AFDefaultFont"/>
<!--includeStyle name="AFMediumAccentBackground"/-->
<includeStyle name="AFVeryDarkForeground"/>
+ <property name="width">100%</property>
</style>
<!-- since we render in standards mode, images don't take up the entire
table cell unless we use vertical-align:bottom.-->
@@ -3156,7 +3157,8 @@
-->
<style name="MessageBoxMargin">
- <property name="margin-left">25px</property>
+ <property name="margin">0px 0px 0px 0px</property>
+ <property name="padding">5px 30px 5px 30px</property>
</style>
<!--style selector=".OraMessageBoxList"-->
@@ -3164,9 +3166,12 @@
<includeStyle name="AFDefaultFont"/>
<includeStyle name="AFDarkForeground"/>
<includeStyle name="MessageBoxMargin"/>
- <property name="margin-top">5px</property>
</style>
+ <!-- List with only one entry -->
+ <style selector="af|messages::list-single">
+ <property name="list-style-type">none</property>
+ </style>
<style selector="af|singleStepButtonBar"/>
Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messages-minimal-golden.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messages-minimal-golden.xml?view=diff&rev=557388&r1=557387&r2=557388
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messages-minimal-golden.xml (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/messages-minimal-golden.xml Wed Jul 18 13:32:41 2007
@@ -6,50 +6,100 @@
class="af_messages"
id="mainId"
summary=""
- width="100%"
>
- <tr
+ <tbody
>
- <td
- class="af_messages_body"
+ <tr
>
- <div
+ <td
+ class="af_messages_top-start"
>
- <h1
- class="af_messages_header"
+ </td>
+ <td
+ class="af_messages_top"
+ >
+
+ </td>
+ <td
+ class="af_messages_top-end"
+ >
+
+ </td>
+ </tr>
+ <tr
+ >
+
+ <td
+ class="af_messages_start"
+ >
+
+ </td>
+ <td
+ >
+
+ <div
+ class="af_messages_body"
>
- <span
- class="af_messages_error"
+ <div
>
- Error
- </span>
- </h1>
- </div>
- <div
- class="af_messages_message-text"
+
+ <h1
+ class="af_messages_header"
+ >
+
+ <span
+ class="af_messages_error"
+ >
+ Error
+ </span>
+ </h1>
+ </div>
+ <ol
+ class="af_messages_list af_messages_list-single"
+ >
+
+ <li
+ >
+ message summary - message detail
+ </li>
+ <li
+ >
+ - message summary
+ </li>
+ </ol>
+ </div>
+ </td>
+ <td
+ class="af_messages_end"
+ >
+
+ </td>
+ </tr>
+ <tr
+ >
+
+ <td
+ class="af_messages_bottom-start"
>
- </div>
- <ol
- class="af_messages_list"
+ </td>
+ <td
+ class="af_messages_bottom"
>
- <li
- >
- message summary - message detail
- </li>
- <li
- >
- - message summary
- </li>
- </ol>
- </td>
- </tr>
+ </td>
+ <td
+ class="af_messages_bottom-end"
+ >
+
+ </td>
+ </tr>
+ </tbody>
</table>
<!-- MessageTest[ id:null,ERROR ]-->
@@ -60,50 +110,100 @@
class="af_messages"
id="mainId"
summary=""
- width="100%"
>
- <tr
+ <tbody
>
- <td
- class="af_messages_body"
+ <tr
+ >
+
+ <td
+ class="af_messages_top-start"
+ >
+
+ </td>
+ <td
+ class="af_messages_top"
+ >
+
+ </td>
+ <td
+ class="af_messages_top-end"
+ >
+
+ </td>
+ </tr>
+ <tr
>
- <div
+ <td
+ class="af_messages_start"
>
- <h1
- class="af_messages_header"
+ </td>
+ <td
+ >
+
+ <div
+ class="af_messages_body"
>
- <span
- class="af_messages_error"
+ <div
+ >
+
+ <h1
+ class="af_messages_header"
+ >
+
+ <span
+ class="af_messages_error"
+ >
+ Error
+ </span>
+ </h1>
+ </div>
+ <ol
+ class="af_messages_list af_messages_list-single"
>
- Error
- </span>
- </h1>
- </div>
- <div
- class="af_messages_message-text"
+
+ <li
+ >
+ message summary - message detail
+ </li>
+ <li
+ >
+ - message summary
+ </li>
+ </ol>
+ </div>
+ </td>
+ <td
+ class="af_messages_end"
+ >
+
+ </td>
+ </tr>
+ <tr
+ >
+
+ <td
+ class="af_messages_bottom-start"
>
- </div>
- <ol
- class="af_messages_list"
+ </td>
+ <td
+ class="af_messages_bottom"
>
- <li
- >
- message summary - message detail
- </li>
- <li
- >
- - message summary
- </li>
- </ol>
- </td>
- </tr>
+ </td>
+ <td
+ class="af_messages_bottom-end"
+ >
+
+ </td>
+ </tr>
+ </tbody>
</table>
<!--AttributeTest[id,id_val]-->
@@ -114,50 +214,100 @@
class="af_messages"
id="id_val"
summary=""
- width="100%"
>
- <tr
+ <tbody
>
- <td
- class="af_messages_body"
+ <tr
>
- <div
+ <td
+ class="af_messages_top-start"
+ >
+
+ </td>
+ <td
+ class="af_messages_top"
+ >
+
+ </td>
+ <td
+ class="af_messages_top-end"
>
- <h1
- class="af_messages_header"
+ </td>
+ </tr>
+ <tr
+ >
+
+ <td
+ class="af_messages_start"
+ >
+
+ </td>
+ <td
+ >
+
+ <div
+ class="af_messages_body"
>
- <span
- class="af_messages_error"
+ <div
+ >
+
+ <h1
+ class="af_messages_header"
+ >
+
+ <span
+ class="af_messages_error"
+ >
+ Error
+ </span>
+ </h1>
+ </div>
+ <ol
+ class="af_messages_list af_messages_list-single"
>
- Error
- </span>
- </h1>
- </div>
- <div
- class="af_messages_message-text"
+
+ <li
+ >
+ message summary - message detail
+ </li>
+ <li
+ >
+ - message summary
+ </li>
+ </ol>
+ </div>
+ </td>
+ <td
+ class="af_messages_end"
+ >
+
+ </td>
+ </tr>
+ <tr
+ >
+
+ <td
+ class="af_messages_bottom-start"
>
- </div>
- <ol
- class="af_messages_list"
+ </td>
+ <td
+ class="af_messages_bottom"
>
- <li
- >
- message summary - message detail
- </li>
- <li
- >
- - message summary
- </li>
- </ol>
- </td>
- </tr>
+ </td>
+ <td
+ class="af_messages_bottom-end"
+ >
+
+ </td>
+ </tr>
+ </tbody>
</table>
<!--AttributeTest[inlineStyle,background-color:red]-->
@@ -169,50 +319,101 @@
id="mainId"
style="background-color:red"
summary=""
- width="100%"
>
- <tr
+ <tbody
>
- <td
- class="af_messages_body"
+ <tr
+ >
+
+ <td
+ class="af_messages_top-start"
+ >
+
+ </td>
+ <td
+ class="af_messages_top"
+ >
+
+ </td>
+ <td
+ class="af_messages_top-end"
+ >
+
+ </td>
+ </tr>
+ <tr
>
- <div
+ <td
+ class="af_messages_start"
>
- <h1
- class="af_messages_header"
+ </td>
+ <td
+ >
+
+ <div
+ class="af_messages_body"
>
- <span
- class="af_messages_error"
+ <div
+ style="background-color:red"
+ >
+
+ <h1
+ class="af_messages_header"
+ >
+
+ <span
+ class="af_messages_error"
+ >
+ Error
+ </span>
+ </h1>
+ </div>
+ <ol
+ class="af_messages_list af_messages_list-single"
>
- Error
- </span>
- </h1>
- </div>
- <div
- class="af_messages_message-text"
+
+ <li
+ >
+ message summary - message detail
+ </li>
+ <li
+ >
+ - message summary
+ </li>
+ </ol>
+ </div>
+ </td>
+ <td
+ class="af_messages_end"
+ >
+
+ </td>
+ </tr>
+ <tr
+ >
+
+ <td
+ class="af_messages_bottom-start"
>
- </div>
- <ol
- class="af_messages_list"
+ </td>
+ <td
+ class="af_messages_bottom"
>
- <li
- >
- message summary - message detail
- </li>
- <li
- >
- - message summary
- </li>
- </ol>
- </td>
- </tr>
+ </td>
+ <td
+ class="af_messages_bottom-end"
+ >
+
+ </td>
+ </tr>
+ </tbody>
</table>
<!--AttributeTest[message,message_val]-->
@@ -223,50 +424,105 @@
class="af_messages"
id="mainId"
summary=""
- width="100%"
>
- <tr
+ <tbody
>
- <td
- class="af_messages_body"
+ <tr
>
- <div
+ <td
+ class="af_messages_top-start"
+ >
+
+ </td>
+ <td
+ class="af_messages_top"
>
- <h1
- class="af_messages_header"
+ </td>
+ <td
+ class="af_messages_top-end"
+ >
+
+ </td>
+ </tr>
+ <tr
+ >
+
+ <td
+ class="af_messages_start"
+ >
+
+ </td>
+ <td
+ >
+
+ <div
+ class="af_messages_body"
>
- <span
- class="af_messages_error"
+ <div
+ >
+
+ <h1
+ class="af_messages_header"
+ >
+
+ <span
+ class="af_messages_error"
+ >
+ Error
+ </span>
+ </h1>
+ </div>
+ <div
+ class="af_messages_message-text"
>
- Error
- </span>
- </h1>
- </div>
- <div
- class="af_messages_message-text"
- >
- message_val
- </div>
- <ol
- class="af_messages_list"
+ message_val
+ </div>
+ <ol
+ class="af_messages_list af_messages_list-single"
+ >
+
+ <li
+ >
+ message summary - message detail
+ </li>
+ <li
+ >
+ - message summary
+ </li>
+ </ol>
+ </div>
+ </td>
+ <td
+ class="af_messages_end"
+ >
+
+ </td>
+ </tr>
+ <tr
+ >
+
+ <td
+ class="af_messages_bottom-start"
>
- <li
- >
- message summary - message detail
- </li>
- <li
- >
- - message summary
- </li>
- </ol>
- </td>
- </tr>
+ </td>
+ <td
+ class="af_messages_bottom"
+ >
+
+ </td>
+ <td
+ class="af_messages_bottom-end"
+ >
+
+ </td>
+ </tr>
+ </tbody>
</table>
<!--AttributeTest[messageType,error]-->
@@ -277,50 +533,100 @@
class="af_messages"
id="mainId"
summary=""
- width="100%"
>
- <tr
+ <tbody
>
- <td
- class="af_messages_body"
+ <tr
+ >
+
+ <td
+ class="af_messages_top-start"
+ >
+
+ </td>
+ <td
+ class="af_messages_top"
+ >
+
+ </td>
+ <td
+ class="af_messages_top-end"
+ >
+
+ </td>
+ </tr>
+ <tr
>
- <div
+ <td
+ class="af_messages_start"
>
- <h1
- class="af_messages_header"
+ </td>
+ <td
+ >
+
+ <div
+ class="af_messages_body"
>
- <span
- class="af_messages_error"
+ <div
+ >
+
+ <h1
+ class="af_messages_header"
+ >
+
+ <span
+ class="af_messages_error"
+ >
+ Error
+ </span>
+ </h1>
+ </div>
+ <ol
+ class="af_messages_list af_messages_list-single"
>
- Error
- </span>
- </h1>
- </div>
- <div
- class="af_messages_message-text"
+
+ <li
+ >
+ message summary - message detail
+ </li>
+ <li
+ >
+ - message summary
+ </li>
+ </ol>
+ </div>
+ </td>
+ <td
+ class="af_messages_end"
+ >
+
+ </td>
+ </tr>
+ <tr
+ >
+
+ <td
+ class="af_messages_bottom-start"
>
- </div>
- <ol
- class="af_messages_list"
+ </td>
+ <td
+ class="af_messages_bottom"
>
- <li
- >
- message summary - message detail
- </li>
- <li
- >
- - message summary
- </li>
- </ol>
- </td>
- </tr>
+ </td>
+ <td
+ class="af_messages_bottom-end"
+ >
+
+ </td>
+ </tr>
+ </tbody>
</table>
<!--AttributeTest[shortDesc,shortDesc_val]-->
@@ -332,50 +638,101 @@
id="mainId"
summary=""
title="shortDesc_val"
- width="100%"
>
- <tr
+ <tbody
>
- <td
- class="af_messages_body"
+ <tr
>
- <div
+ <td
+ class="af_messages_top-start"
+ >
+
+ </td>
+ <td
+ class="af_messages_top"
+ >
+
+ </td>
+ <td
+ class="af_messages_top-end"
>
- <h1
- class="af_messages_header"
+ </td>
+ </tr>
+ <tr
+ >
+
+ <td
+ class="af_messages_start"
+ >
+
+ </td>
+ <td
+ >
+
+ <div
+ class="af_messages_body"
>
- <span
- class="af_messages_error"
+ <div
+ title="shortDesc_val"
+ >
+
+ <h1
+ class="af_messages_header"
+ >
+
+ <span
+ class="af_messages_error"
+ >
+ Error
+ </span>
+ </h1>
+ </div>
+ <ol
+ class="af_messages_list af_messages_list-single"
>
- Error
- </span>
- </h1>
- </div>
- <div
- class="af_messages_message-text"
+
+ <li
+ >
+ message summary - message detail
+ </li>
+ <li
+ >
+ - message summary
+ </li>
+ </ol>
+ </div>
+ </td>
+ <td
+ class="af_messages_end"
+ >
+
+ </td>
+ </tr>
+ <tr
+ >
+
+ <td
+ class="af_messages_bottom-start"
>
- </div>
- <ol
- class="af_messages_list"
+ </td>
+ <td
+ class="af_messages_bottom"
>
- <li
- >
- message summary - message detail
- </li>
- <li
- >
- - message summary
- </li>
- </ol>
- </td>
- </tr>
+ </td>
+ <td
+ class="af_messages_bottom-end"
+ >
+
+ </td>
+ </tr>
+ </tbody>
</table>
<!--AttributeTest[styleClass,styleClass_val]-->
@@ -383,53 +740,104 @@
border="0"
cellpadding="0"
cellspacing="0"
- class="af_messages"
+ class="styleClass_val af_messages"
id="mainId"
summary=""
- width="100%"
>
- <tr
+ <tbody
>
- <td
- class="af_messages_body"
+ <tr
+ >
+
+ <td
+ class="af_messages_top-start"
+ >
+
+ </td>
+ <td
+ class="af_messages_top"
+ >
+
+ </td>
+ <td
+ class="af_messages_top-end"
+ >
+
+ </td>
+ </tr>
+ <tr
>
- <div
+ <td
+ class="af_messages_start"
+ >
+
+ </td>
+ <td
>
- <h1
- class="af_messages_header"
+ <div
+ class="af_messages_body"
>
- <span
- class="af_messages_error"
+ <div
+ class="styleClass_val"
>
- Error
- </span>
- </h1>
- </div>
- <div
- class="af_messages_message-text"
+
+ <h1
+ class="af_messages_header"
+ >
+
+ <span
+ class="af_messages_error"
+ >
+ Error
+ </span>
+ </h1>
+ </div>
+ <ol
+ class="af_messages_list af_messages_list-single"
+ >
+
+ <li
+ >
+ message summary - message detail
+ </li>
+ <li
+ >
+ - message summary
+ </li>
+ </ol>
+ </div>
+ </td>
+ <td
+ class="af_messages_end"
+ >
+
+ </td>
+ </tr>
+ <tr
+ >
+
+ <td
+ class="af_messages_bottom-start"
>
- </div>
- <ol
- class="af_messages_list"
+ </td>
+ <td
+ class="af_messages_bottom"
>
- <li
- >
- message summary - message detail
- </li>
- <li
- >
- - message summary
- </li>
- </ol>
- </td>
- </tr>
+ </td>
+ <td
+ class="af_messages_bottom-end"
+ >
+
+ </td>
+ </tr>
+ </tbody>
</table>
<!--AttributeTest[text,text_val]-->
@@ -440,49 +848,99 @@
class="af_messages"
id="mainId"
summary=""
- width="100%"
>
- <tr
+ <tbody
>
- <td
- class="af_messages_body"
+ <tr
+ >
+
+ <td
+ class="af_messages_top-start"
+ >
+
+ </td>
+ <td
+ class="af_messages_top"
+ >
+
+ </td>
+ <td
+ class="af_messages_top-end"
+ >
+
+ </td>
+ </tr>
+ <tr
>
- <div
+ <td
+ class="af_messages_start"
>
- <h1
- class="af_messages_header"
+ </td>
+ <td
+ >
+
+ <div
+ class="af_messages_body"
>
- <span
- class="af_messages_error"
+ <div
+ >
+
+ <h1
+ class="af_messages_header"
+ >
+
+ <span
+ class="af_messages_error"
+ >
+ text_val
+ </span>
+ </h1>
+ </div>
+ <ol
+ class="af_messages_list af_messages_list-single"
>
- text_val
- </span>
- </h1>
- </div>
- <div
- class="af_messages_message-text"
+
+ <li
+ >
+ message summary - message detail
+ </li>
+ <li
+ >
+ - message summary
+ </li>
+ </ol>
+ </div>
+ </td>
+ <td
+ class="af_messages_end"
+ >
+
+ </td>
+ </tr>
+ <tr
+ >
+
+ <td
+ class="af_messages_bottom-start"
>
- </div>
- <ol
- class="af_messages_list"
+ </td>
+ <td
+ class="af_messages_bottom"
>
- <li
- >
- message summary - message detail
- </li>
- <li
- >
- - message summary
- </li>
- </ol>
- </td>
- </tr>
+ </td>
+ <td
+ class="af_messages_bottom-end"
+ >
+
+ </td>
+ </tr>
+ </tbody>
</table>
</results>