You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by bo...@apache.org on 2010/03/29 14:03:07 UTC

svn commit: r928739 - in /myfaces/tobago/trunk: core/src/main/java/org/apache/myfaces/tobago/internal/component/ core/src/main/java/org/apache/myfaces/tobago/taglib/component/ theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/sca...

Author: bommel
Date: Mon Mar 29 12:03:07 2010
New Revision: 928739

URL: http://svn.apache.org/viewvc?rev=928739&view=rev
Log:
(TOBAGO-865) simplify ajax

Modified:
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/internal/component/UIInputBase.java
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/InTagDeclaration.java
    myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/InRenderer.java
    myfaces/tobago/trunk/theme/speyside/src/main/java/org/apache/myfaces/tobago/renderkit/html/speyside/standard/tag/BoxRenderer.java
    myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/CreateComponentAnnotationVisitor.java

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/internal/component/UIInputBase.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/internal/component/UIInputBase.java?rev=928739&r1=928738&r2=928739&view=diff
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/internal/component/UIInputBase.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/internal/component/UIInputBase.java Mon Mar 29 12:03:07 2010
@@ -18,17 +18,13 @@ package org.apache.myfaces.tobago.intern
  */
 
 import org.apache.myfaces.tobago.component.SupportsMarkup;
-import org.apache.myfaces.tobago.internal.ajax.AjaxComponent;
-import org.apache.myfaces.tobago.internal.ajax.AjaxInternalUtils;
-import org.apache.myfaces.tobago.internal.ajax.AjaxResponseRenderer;
 import org.apache.myfaces.tobago.layout.LayoutComponent;
 import org.apache.myfaces.tobago.util.ComponentUtils;
 
 import javax.faces.context.FacesContext;
-import java.io.IOException;
 
 public abstract class UIInputBase extends javax.faces.component.UIInput
-    implements AjaxComponent, SupportsMarkup, LayoutComponent {
+    implements SupportsMarkup, LayoutComponent {
 
   // TODO can this removed?
   public void updateModel(FacesContext facesContext) {
@@ -37,14 +33,6 @@ public abstract class UIInputBase extend
     }
   }
 
-  public void encodeAjax(FacesContext facesContext) throws IOException {
-    AjaxInternalUtils.encodeAjaxComponent(facesContext, this);
-  }
-
-  public int getAjaxResponseCode() {
-    return AjaxResponseRenderer.CODE_SUCCESS;
-  }
-
   public abstract Integer getTabIndex();
 
 }

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/InTagDeclaration.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/InTagDeclaration.java?rev=928739&r1=928738&r2=928739&view=diff
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/InTagDeclaration.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/InTagDeclaration.java Mon Mar 29 12:03:07 2010
@@ -45,8 +45,7 @@ import org.apache.myfaces.tobago.taglib.
     uiComponentBaseClass = "org.apache.myfaces.tobago.internal.component.UIInputBase",
     rendererType = RendererTypes.IN,
     allowedChildComponenents = "NONE",
-    interfaces = { "org.apache.myfaces.tobago.internal.ajax.AjaxComponent", 
-        "org.apache.myfaces.tobago.component.InputSuggest" },
+    interfaces =  "org.apache.myfaces.tobago.component.InputSuggest",
     facets = {
     @Facet(name = Facets.CHANGE,
         description =

Modified: myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/InRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/InRenderer.java?rev=928739&r1=928738&r2=928739&view=diff
==============================================================================
--- myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/InRenderer.java (original)
+++ myfaces/tobago/trunk/theme/scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/InRenderer.java Mon Mar 29 12:03:07 2010
@@ -23,7 +23,6 @@ import org.apache.myfaces.tobago.compone
 import org.apache.myfaces.tobago.component.UIInput;
 import org.apache.myfaces.tobago.context.TobagoFacesContext;
 import org.apache.myfaces.tobago.internal.ajax.AjaxInternalUtils;
-import org.apache.myfaces.tobago.internal.ajax.AjaxRenderer;
 import org.apache.myfaces.tobago.internal.component.AbstractUIPage;
 import org.apache.myfaces.tobago.internal.component.UIInputBase;
 import org.apache.myfaces.tobago.model.AutoSuggestExtensionItem;
@@ -49,7 +48,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-public class InRenderer extends InputRendererBase implements AjaxRenderer {
+public class InRenderer extends InputRendererBase {
 
   private static final Log LOG = LogFactory.getLog(InRenderer.class);
 
@@ -81,95 +80,103 @@ public class InRenderer extends InputRen
       LOG.error("Wrong type: Need " + UIInputBase.class.getName() + ", but was " + component.getClass().getName());
       return;
     }
-    UIInputBase input = (UIInputBase) component;
 
-    String title = HtmlRendererUtils.getTitleFromTipAndMessages(facesContext, input);
+    String clientId = component.getClientId(facesContext);
+    AbstractUIPage page = ComponentUtils.findPage(component);
+    if (clientId.equals(page.getActionId())) {
+      // this is a inputSuggest
+      encodeAjax(facesContext, component);
+    } else {
 
-    String currentValue = getCurrentValue(facesContext, input);
-    if (LOG.isDebugEnabled()) {
-      LOG.debug("currentValue = '" + currentValue + "'");
-    }
-    String type = ComponentUtils.getBooleanAttribute(input,
-        Attributes.PASSWORD) ? HtmlInputTypes.PASSWORD : HtmlInputTypes.TEXT;
+      UIInputBase input = (UIInputBase) component;
 
-    // Todo: check for valid binding
-    boolean renderAjaxSuggest = false;
-    if (input instanceof UIInput) {
-     renderAjaxSuggest = ((UIInput) input).getSuggestMethod() != null;
-    }
-    String id = input.getClientId(facesContext);
-    TobagoResponseWriter writer = HtmlRendererUtils.getTobagoResponseWriter(facesContext);
-    writer.startElement(HtmlConstants.INPUT, input);
-    writer.writeAttribute(HtmlAttributes.TYPE, type, false);
-    writer.writeNameAttribute(id);
-    writer.writeIdAttribute(id);
-    if (currentValue != null) {
-      writer.writeAttribute(HtmlAttributes.VALUE, currentValue, true);
-    }
-    if (title != null) {
-      writer.writeAttribute(HtmlAttributes.TITLE, title, true);
-    }
-    int maxLength = 0;
-    for (Validator validator : input.getValidators()) {
-      if (validator instanceof LengthValidator) {
-        LengthValidator lengthValidator = (LengthValidator) validator;
-        maxLength = lengthValidator.getMaximum();
-      }
-    }
-    if (maxLength > 0) {
-      writer.writeAttribute(HtmlAttributes.MAXLENGTH, maxLength);
-    }
-    writer.writeAttribute(HtmlAttributes.READONLY, ComponentUtils.getBooleanAttribute(input, Attributes.READONLY));
-    writer.writeAttribute(HtmlAttributes.DISABLED, ComponentUtils.getBooleanAttribute(input, Attributes.DISABLED));
-    Integer tabIndex = input.getTabIndex();
-    if (tabIndex != null) {
-      writer.writeAttribute(HtmlAttributes.TABINDEX, tabIndex);
-    }
-    Style style = new Style(facesContext, input);
-    writer.writeStyleAttribute(style);
-
-    applyExtraStyle(facesContext, input, currentValue);
-    HtmlRendererUtils.renderDojoDndItem(component, writer, true);
-    writer.writeClassAttribute();
-    /*if (component instanceof UIInputBase) {
-      String onchange = HtmlUtils.generateOnchange((UIInputBase) component, facesContext);
-      if (onchange != null) {
-        // TODO: create and use utility method to write attributes without quoting
-    //      writer.writeAttribute(HtmlAttributes.ONCHANGE, onchange, null);
-      }
-    } */
-    writer.endElement(HtmlConstants.INPUT);
-
-    HtmlRendererUtils.checkForCommandFacet(input, facesContext, writer);
-
-    boolean required = ComponentUtils.getBooleanAttribute(input, Attributes.REQUIRED);
-    String rendererName = HtmlRendererUtils.getRendererName(facesContext, input);
-    if (required && !renderAjaxSuggest) {
-      final String[] cmds = {
-          "new Tobago.In(\"" + id + "\", true ,\"" + StyleClasses.PREFIX + rendererName + "\"  );"
-      };
-
-      HtmlRendererUtils.writeScriptLoader(facesContext, null, cmds);
-    }
-
-    // focus
-    HtmlRendererUtils.renderFocusId(facesContext, input);
-
-    // input suggest
-    if (renderAjaxSuggest) {
-
-      final String[] cmds = {
-          "new Tobago.AutocompleterAjax(",
-          "    '" + id + "',",
-          "    " + required + ",",
-          "    '" + StyleClasses.PREFIX + rendererName + "',",
-          "    { });"
-      };
+      String title = HtmlRendererUtils.getTitleFromTipAndMessages(facesContext, input);
+
+      String currentValue = getCurrentValue(facesContext, input);
+      if (LOG.isDebugEnabled()) {
+        LOG.debug("currentValue = '" + currentValue + "'");
+      }
+      String type = ComponentUtils.getBooleanAttribute(input,
+          Attributes.PASSWORD) ? HtmlInputTypes.PASSWORD : HtmlInputTypes.TEXT;
+
+      // Todo: check for valid binding
+      boolean renderAjaxSuggest = false;
+      if (input instanceof UIInput) {
+        renderAjaxSuggest = ((UIInput) input).getSuggestMethod() != null;
+      }
+      String id = input.getClientId(facesContext);
+      TobagoResponseWriter writer = HtmlRendererUtils.getTobagoResponseWriter(facesContext);
+      writer.startElement(HtmlConstants.INPUT, input);
+      writer.writeAttribute(HtmlAttributes.TYPE, type, false);
+      writer.writeNameAttribute(id);
+      writer.writeIdAttribute(id);
+      if (currentValue != null) {
+        writer.writeAttribute(HtmlAttributes.VALUE, currentValue, true);
+      }
+      if (title != null) {
+        writer.writeAttribute(HtmlAttributes.TITLE, title, true);
+      }
+      int maxLength = 0;
+      for (Validator validator : input.getValidators()) {
+        if (validator instanceof LengthValidator) {
+          LengthValidator lengthValidator = (LengthValidator) validator;
+          maxLength = lengthValidator.getMaximum();
+        }
+      }
+      if (maxLength > 0) {
+        writer.writeAttribute(HtmlAttributes.MAXLENGTH, maxLength);
+      }
+      writer.writeAttribute(HtmlAttributes.READONLY, ComponentUtils.getBooleanAttribute(input, Attributes.READONLY));
+      writer.writeAttribute(HtmlAttributes.DISABLED, ComponentUtils.getBooleanAttribute(input, Attributes.DISABLED));
+      Integer tabIndex = input.getTabIndex();
+      if (tabIndex != null) {
+        writer.writeAttribute(HtmlAttributes.TABINDEX, tabIndex);
+      }
+      Style style = new Style(facesContext, input);
+      writer.writeStyleAttribute(style);
+
+      applyExtraStyle(facesContext, input, currentValue);
+      HtmlRendererUtils.renderDojoDndItem(component, writer, true);
+      writer.writeClassAttribute();
+      /*if (component instanceof UIInputBase) {
+       String onchange = HtmlUtils.generateOnchange((UIInputBase) component, facesContext);
+       if (onchange != null) {
+         // TODO: create and use utility method to write attributes without quoting
+     //      writer.writeAttribute(HtmlAttributes.ONCHANGE, onchange, null);
+       }
+     } */
+      writer.endElement(HtmlConstants.INPUT);
+
+      HtmlRendererUtils.checkForCommandFacet(input, facesContext, writer);
+
+      boolean required = ComponentUtils.getBooleanAttribute(input, Attributes.REQUIRED);
+      String rendererName = HtmlRendererUtils.getRendererName(facesContext, input);
+      if (required && !renderAjaxSuggest) {
+        final String[] cmds = {
+            "new Tobago.In(\"" + id + "\", true ,\"" + StyleClasses.PREFIX + rendererName + "\"  );"
+        };
+
+        HtmlRendererUtils.writeScriptLoader(facesContext, null, cmds);
+      }
+
+      // focus
+      HtmlRendererUtils.renderFocusId(facesContext, input);
+
+      // input suggest
+      if (renderAjaxSuggest) {
+
+        final String[] cmds = {
+            "new Tobago.AutocompleterAjax(",
+            "    '" + id + "',",
+            "    " + required + ",",
+            "    '" + StyleClasses.PREFIX + rendererName + "',",
+            "    { });"
+        };
 
 //      HtmlRendererUtils.writeStyleLoader(facesContext, STYLES);
-      HtmlRendererUtils.writeScriptLoader(facesContext, SCRIPTS, cmds);
+        HtmlRendererUtils.writeScriptLoader(facesContext, SCRIPTS, cmds);
+      }
     }
-
   }
 
   protected void applyExtraStyle(FacesContext facesContext, UIInputBase input, String currentValue) {
@@ -181,14 +188,12 @@ public class InRenderer extends InputRen
     }
   }
 
-  public void encodeAjax(FacesContext context, UIComponent component) throws IOException {
+  private void encodeAjax(FacesContext context, UIComponent component) throws IOException {
     if (!(component instanceof UIInputBase)) {
       LOG.error("Wrong type: Need " + UIInputBase.class.getName() + ", but was " + component.getClass().getName());
       return;
     }
 
-    AjaxInternalUtils.checkParamValidity(context, component, UIInput.class);
-
     UIInputBase input = (UIInputBase) component;
 
     MethodBinding mb;

Modified: myfaces/tobago/trunk/theme/speyside/src/main/java/org/apache/myfaces/tobago/renderkit/html/speyside/standard/tag/BoxRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/theme/speyside/src/main/java/org/apache/myfaces/tobago/renderkit/html/speyside/standard/tag/BoxRenderer.java?rev=928739&r1=928738&r2=928739&view=diff
==============================================================================
--- myfaces/tobago/trunk/theme/speyside/src/main/java/org/apache/myfaces/tobago/renderkit/html/speyside/standard/tag/BoxRenderer.java (original)
+++ myfaces/tobago/trunk/theme/speyside/src/main/java/org/apache/myfaces/tobago/renderkit/html/speyside/standard/tag/BoxRenderer.java Mon Mar 29 12:03:07 2010
@@ -21,8 +21,6 @@ import org.apache.myfaces.tobago.compone
 import org.apache.myfaces.tobago.component.Facets;
 import org.apache.myfaces.tobago.component.UIBox;
 import org.apache.myfaces.tobago.component.UIToolBar;
-import org.apache.myfaces.tobago.internal.ajax.AjaxInternalUtils;
-import org.apache.myfaces.tobago.internal.ajax.AjaxRenderer;
 import org.apache.myfaces.tobago.layout.Measure;
 import org.apache.myfaces.tobago.renderkit.BoxRendererBase;
 import org.apache.myfaces.tobago.renderkit.css.Style;
@@ -38,7 +36,7 @@ import javax.faces.context.FacesContext;
 import java.io.IOException;
 import java.util.Map;
 
-public class BoxRenderer extends BoxRendererBase implements AjaxRenderer {
+public class BoxRenderer extends BoxRendererBase {
 
   @Override
   public void prepareRender(FacesContext facesContext, UIComponent component) throws IOException {
@@ -165,13 +163,4 @@ without shadow
     RenderUtil.encode(facesContext, toolbar);
     writer.endElement(HtmlConstants.DIV);
   }
-
-  public void encodeAjax(FacesContext facesContext, UIComponent component) throws IOException {
-    AjaxInternalUtils.checkParamValidity(facesContext, component, UIPanel.class);
-    TobagoResponseWriter writer = HtmlRendererUtils.getTobagoResponseWriter(facesContext);
-
-    encodeBox(facesContext, writer, (UIBox) component);
-    component.encodeChildren(facesContext);
-    facesContext.responseComplete();
-  }
 }

Modified: myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/CreateComponentAnnotationVisitor.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/CreateComponentAnnotationVisitor.java?rev=928739&r1=928738&r2=928739&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/CreateComponentAnnotationVisitor.java (original)
+++ myfaces/tobago/trunk/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/CreateComponentAnnotationVisitor.java Mon Mar 29 12:03:07 2010
@@ -332,20 +332,13 @@ public class CreateComponentAnnotationVi
       }
       renderer.add(className);
       RendererInfo info = new RendererInfo(declaration.getQualifiedName(), className, rendererType);
-      boolean ajaxEnabled =
-          Arrays.asList(componentTag.interfaces()).contains("org.apache.myfaces.tobago.internal.ajax.AjaxComponent");
       if (componentTag.isLayout()) {
         info.setSuperClass("org.apache.myfaces.tobago.renderkit.AbstractLayoutRendererWrapper");
-      } else if (ajaxEnabled) {
-        info.setSuperClass("org.apache.myfaces.tobago.renderkit.AbstractAjaxRendererBaseWrapper");
       } else if (componentTag.isTransparentForLayout()) {
         info.setSuperClass("org.apache.myfaces.tobago.renderkit.AbstractRendererBaseWrapper");
       } else {
         info.setSuperClass("org.apache.myfaces.tobago.renderkit.AbstractLayoutableRendererBaseWrapper");
       }
-      if (ajaxEnabled) {
-        info.addInterface("org.apache.myfaces.tobago.internal.ajax.AjaxRenderer");
-      }
       StringTemplate stringTemplate = rendererStringTemplateGroup.getInstanceOf("renderer");
       stringTemplate.setAttribute("renderInfo", info);
       writeFile(info, stringTemplate);