[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