[jboss-cvs] jboss-seam/ui/src/main/java/org/jboss/seam/ui/renderkit ...

Peter Muir peter at bleepbleep.org.uk
Fri Nov 23 17:59:45 EST 2007


  User: pmuir   
  Date: 07/11/23 17:59:45

  Modified:    ui/src/main/java/org/jboss/seam/ui/renderkit   
                        ConversationPropagationRendererBase.java
  Added:       ui/src/main/java/org/jboss/seam/ui/renderkit   
                        ConversationNameRendererBase.java
                        CommandButtonParameterRendererBase.java
  Log:
  JBSEAM-2124 (part 1, Shane will do part2)
  
  Revision  Changes    Path
  1.2       +13 -61    jboss-seam/ui/src/main/java/org/jboss/seam/ui/renderkit/ConversationPropagationRendererBase.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ConversationPropagationRendererBase.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/ui/src/main/java/org/jboss/seam/ui/renderkit/ConversationPropagationRendererBase.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- ConversationPropagationRendererBase.java	23 Nov 2007 21:39:29 -0000	1.1
  +++ ConversationPropagationRendererBase.java	23 Nov 2007 22:59:45 -0000	1.2
  @@ -1,84 +1,36 @@
   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
  +public class ConversationPropagationRendererBase extends CommandButtonParameterRendererBase
   {   
      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))
  +   protected Class getComponentClass()
            {
  -            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");
  +      return UIConversationPropagation.class;
         }
  +
  +   @Override
  +   protected LogProvider getLog()
  +   {
  +      return log;
      }
   
      @Override
  -   protected Class getComponentClass()
  +   protected String getParameterName()
      {
  -      return UIConversationPropagation.class;
  +      return PARAMETER_NAME;
      }
   }
  \ No newline at end of file
  
  
  
  1.1      date: 2007/11/23 22:59:45;  author: pmuir;  state: Exp;jboss-seam/ui/src/main/java/org/jboss/seam/ui/renderkit/ConversationNameRendererBase.java
  
  Index: ConversationNameRendererBase.java
  ===================================================================
  package org.jboss.seam.ui.renderkit;
  
  import org.jboss.seam.log.LogProvider;
  import org.jboss.seam.log.Logging;
  import org.jboss.seam.ui.component.UIConversationName;
  
  /**
   * @author Pete Muir
   *
   */
  public class ConversationNameRendererBase extends CommandButtonParameterRendererBase
  {
     
     private static LogProvider log = Logging.getLogProvider(ConversationNameRendererBase.class);
     private static final String PARAMETER_NAME = "conversationName";
  
     @Override
     protected LogProvider getLog()
     {
        return log;
     }
  
     @Override
     protected String getParameterName()
     {
        return PARAMETER_NAME;
     }
  
     @Override
     protected Class getComponentClass()
     {
        return UIConversationName.class;
     }
  
  }
  
  
  
  1.1      date: 2007/11/23 22:59:45;  author: pmuir;  state: Exp;jboss-seam/ui/src/main/java/org/jboss/seam/ui/renderkit/CommandButtonParameterRendererBase.java
  
  Index: CommandButtonParameterRendererBase.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.UIParameter;
  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.ui.component.UIConversationPropagation;
  import org.jboss.seam.ui.util.cdk.RendererBase;
  
  /**
   * @author Pete Muir
   *
   */
  public abstract class CommandButtonParameterRendererBase extends RendererBase
  {
     
     protected abstract LogProvider getLog();
     
     protected abstract String getParameterName();
  
     @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);
        UIParameter parameter = (UIParameter) 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))
           {
              getLog().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 = '" + getParameterName() + "';" + 
                       "input.value = '" + parameter.getValue() + "';" +
                    "}" +
                    "else if (document.getElementById) " +
                    "{" +  // so here is theNN6 workaround
                       "input.setAttribute('type', 'hidden');" + 
                       "input.setAttribute('name', '" + getParameterName() + "');" + 
                       "input.setAttribute('value', '" + parameter.getValue() + "');" +
                    "}" +
                    "form.appendChild(input);" +
                    "return true;" +
                 "}" +
              "}";
           String functionCode = 
              "document.forms['" + formId + "'].elements['" + actionComponentId + "'].onclick = " +
              "new Function(\"event\", \"" + functionBody + "\");"; 
           writer.write(functionCode);
           writer.endElement("script");
        }
     }
  
  }
  
  



More information about the jboss-cvs-commits mailing list