[jboss-cvs] jboss-seam/ui/src/main/java/org/jboss/seam/ui/renderkit ...
Peter Muir
peter at bleepbleep.org.uk
Fri Nov 23 16:39:29 EST 2007
User: pmuir
Date: 07/11/23 16:39:29
Modified: ui/src/main/java/org/jboss/seam/ui/renderkit
DefaultActionRendererBase.java
Added: ui/src/main/java/org/jboss/seam/ui/renderkit
ConversationPropagationRendererBase.java
Log:
JBSEAM-1899 and some related refactoring
Revision Changes Path
1.3 +1 -11 jboss-seam/ui/src/main/java/org/jboss/seam/ui/renderkit/DefaultActionRendererBase.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: DefaultActionRendererBase.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/ui/src/main/java/org/jboss/seam/ui/renderkit/DefaultActionRendererBase.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- DefaultActionRendererBase.java 18 Nov 2007 16:24:57 -0000 1.2
+++ DefaultActionRendererBase.java 23 Nov 2007 21:39:29 -0000 1.3
@@ -37,7 +37,7 @@
{
UIComponent actionComponent = component.getParent();
String actionComponentId = actionComponent.getClientId(context);
- UIForm form = getForm(actionComponent);
+ UIForm form = getUtils().getForm(actionComponent);
if (form == null)
{
log.warn("Must embed default action inside a form");
@@ -79,16 +79,6 @@
}
}
- private UIForm getForm(UIComponent component) {
- while (component != null) {
- if (component instanceof UIForm) {
- break;
- }
- component = component.getParent();
- }
- return (UIForm) component;
- }
-
@Override
protected Class getComponentClass()
{
1.1 date: 2007/11/23 21:39:29; author: pmuir; state: Exp;jboss-seam/ui/src/main/java/org/jboss/seam/ui/renderkit/ConversationPropagationRendererBase.java
Index: ConversationPropagationRendererBase.java
===================================================================
package org.jboss.seam.ui.renderkit;
import static org.jboss.seam.ui.util.HTML.SCRIPT_ELEM;
import static org.jboss.seam.ui.util.HTML.SCRIPT_LANGUAGE_ATTR;
import static org.jboss.seam.ui.util.HTML.SCRIPT_LANGUAGE_JAVASCRIPT;
import static org.jboss.seam.ui.util.HTML.SCRIPT_TYPE_ATTR;
import static org.jboss.seam.ui.util.HTML.SCRIPT_TYPE_TEXT_JAVASCRIPT;
import java.io.IOException;
import javax.faces.component.UIComponent;
import javax.faces.component.UIForm;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import org.jboss.seam.log.LogProvider;
import org.jboss.seam.log.Logging;
import org.jboss.seam.ui.component.UIConversationPropagation;
import org.jboss.seam.ui.util.cdk.RendererBase;
/**
* @author Pete Muir
*
*/
public class ConversationPropagationRendererBase extends RendererBase
{
private static LogProvider log = Logging.getLogProvider(ConversationPropagationRendererBase.class);
private static final String PARAMETER_NAME = "conversationPropagation";
@Override
protected void doEncodeEnd(ResponseWriter writer, FacesContext context,
UIComponent component) throws IOException
{
UIComponent actionComponent = component.getParent();
String actionComponentId = actionComponent.getClientId(context);
UIForm form = getUtils().getForm(actionComponent);
UIConversationPropagation conversationPropagation = (UIConversationPropagation) component;
if (getUtils().isCommandButton(actionComponent))
{
String formId = form.getClientId(context);
writer.startElement(SCRIPT_ELEM, component);
writer.writeAttribute(SCRIPT_LANGUAGE_ATTR, SCRIPT_LANGUAGE_JAVASCRIPT, SCRIPT_LANGUAGE_ATTR);
writer.writeAttribute(SCRIPT_TYPE_ATTR, SCRIPT_TYPE_TEXT_JAVASCRIPT, SCRIPT_TYPE_ATTR);
if (actionComponent.getId().startsWith(UIViewRoot.UNIQUE_ID_PREFIX))
{
log.warn("Must set an id for the command buttons with s:conversationPropagation");
}
String functionBody =
"{" +
"if (document.getElementById)" +
"{" +
"var form = document.getElementById('" + formId + "');" +
"var input = document.createElement('input');" +
"if (document.all)" +
"{ " + // what follows should work with NN6 but doesn't in M14"
"input.type = 'hidden';" +
"input.name = '" + PARAMETER_NAME + "';" +
"input.value = '" + conversationPropagation.getValue() + "';" +
"}" +
"else if (document.getElementById) " +
"{" + // so here is theNN6 workaround
"input.setAttribute('type', 'hidden');" +
"input.setAttribute('name', '" + PARAMETER_NAME + "');" +
"input.setAttribute('value', '" + conversationPropagation.getValue() + "');" +
"}" +
"form.appendChild(input);" +
"return true;" +
"}" +
"}";
String functionCode =
"document.forms['" + formId + "'].elements['" + actionComponentId + "'].onclick = " +
"new Function(\"event\", \"" + functionBody + "\");";
writer.write(functionCode);
writer.endElement("script");
}
}
@Override
protected Class getComponentClass()
{
return UIConversationPropagation.class;
}
}
More information about the jboss-cvs-commits
mailing list