You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2010/06/15 19:04:23 UTC

svn commit: r954969 - /myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/popup/HtmlPopupRenderer.java

Author: lu4242
Date: Tue Jun 15 17:04:22 2010
New Revision: 954969

URL: http://svn.apache.org/viewvc?rev=954969&view=rev
Log:
TOMAHAWK-1520 t:popup implements EventAware but does not render all properties and TOMAHAWK-1474 Behavior support for components that contains event aware properties in jsf 2.0 module

Modified:
    myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/popup/HtmlPopupRenderer.java

Modified: myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/popup/HtmlPopupRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/popup/HtmlPopupRenderer.java?rev=954969&r1=954968&r2=954969&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/popup/HtmlPopupRenderer.java (original)
+++ myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/popup/HtmlPopupRenderer.java Tue Jun 15 17:04:22 2010
@@ -20,16 +20,22 @@ package org.apache.myfaces.custom.popup;
 
 import java.io.IOException;
 import java.util.List;
+import java.util.Map;
 
 import javax.faces.application.ResourceDependency;
 import javax.faces.component.UIComponent;
+import javax.faces.component.behavior.ClientBehavior;
+import javax.faces.component.behavior.ClientBehaviorHolder;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
 
+import org.apache.myfaces.shared_tomahawk.renderkit.ClientBehaviorEvents;
 import org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils;
 import org.apache.myfaces.shared_tomahawk.renderkit.html.HTML;
 import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRenderer;
+import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRendererUtils;
 import org.apache.myfaces.shared_tomahawk.renderkit.html.util.JavascriptUtils;
+import org.apache.myfaces.shared_tomahawk.renderkit.html.util.ResourceUtils;
 
 /**
  * @JSFRenderer
@@ -52,6 +58,14 @@ public class HtmlPopupRenderer
         return true;
     }
 
+    @Override
+    public void decode(FacesContext context, UIComponent component)
+    {
+        super.decode(context, component);
+        
+        HtmlRendererUtils.decodeClientBehaviors(context, component);
+    }
+
     public void encodeBegin(FacesContext facesContext, UIComponent uiComponent) throws IOException
     {
     }
@@ -68,6 +82,16 @@ public class HtmlPopupRenderer
 
         HtmlPopup popup = (HtmlPopup) uiComponent;
 
+        Map<String, List<ClientBehavior>> behaviors = null;
+        if (uiComponent instanceof ClientBehaviorHolder)
+        {
+            behaviors = ((ClientBehaviorHolder) uiComponent).getClientBehaviors();
+            if (!behaviors.isEmpty())
+            {
+                ResourceUtils.renderDefaultJsfJsInlineIfNecessary(facesContext, facesContext.getResponseWriter());
+            }
+        }
+        
         UIComponent popupFacet = popup.getPopup();
 
         String popupId = writePopupScript(
@@ -93,13 +117,48 @@ public class HtmlPopupRenderer
             writer.writeAttribute(HTML.CLASS_ATTR,popup.getStyleClass(),null);
         }
         writer.writeAttribute(HTML.ID_ATTR, popup.getClientId(facesContext),null);
-        writer.writeAttribute(HTML.ONMOUSEOVER_ATTR, new String(popupId+".redisplay();"),null);
+        if (behaviors != null && !behaviors.isEmpty())
+        {
+            HtmlRendererUtils.renderBehaviorizedAttribute(facesContext, writer,
+                    HTML.ONMOUSEOVER_ATTR, popup, ClientBehaviorEvents.MOUSEOVER, null, behaviors,
+                    HTML.ONMOUSEOVER_ATTR, popup.getOnmouseover(), new String(popupId+".redisplay();"));
+            
+            Boolean closeExitPopup = popup.getClosePopupOnExitingPopup();
 
-        Boolean closeExitPopup = popup.getClosePopupOnExitingPopup();
+            if(closeExitPopup==null || closeExitPopup.booleanValue())
+            {
+                HtmlRendererUtils.renderBehaviorizedAttribute(facesContext, writer,
+                        HTML.ONMOUSEOUT_ATTR, popup, ClientBehaviorEvents.MOUSEOUT, null, behaviors,
+                        HTML.ONMOUSEOUT_ATTR, popup.getOnmouseover(), popupId + ".hide();");
+            }
+            else
+            {
+                HtmlRendererUtils.renderBehaviorizedAttribute(facesContext, writer,
+                        HTML.ONMOUSEOUT_ATTR, popup, ClientBehaviorEvents.MOUSEOUT, null, behaviors,
+                        HTML.ONMOUSEOUT_ATTR, popup.getOnmouseover(), null);
+            }
+            
+            HtmlRendererUtils.renderBehaviorizedEventHandlersWithoutOnmouseoverAndOnmouseout(facesContext, writer, uiComponent, behaviors);
+        }
+        else
+        {
+            writer.writeAttribute(HTML.ONMOUSEOVER_ATTR, new String(popupId+".redisplay();"),null);
 
-        if(closeExitPopup==null || closeExitPopup.booleanValue())
-            writer.writeAttribute(HTML.ONMOUSEOUT_ATTR, popupId + ".hide();",null);
+            Boolean closeExitPopup = popup.getClosePopupOnExitingPopup();
 
+            if(closeExitPopup==null || closeExitPopup.booleanValue())
+                writer.writeAttribute(HTML.ONMOUSEOUT_ATTR, popupId + ".hide();",null);
+            
+            HtmlRendererUtils.renderHTMLAttribute(writer, HTML.ONCLICK_ATTR, HTML.ONCLICK_ATTR, popup.getOnclick());
+            HtmlRendererUtils.renderHTMLAttribute(writer, HTML.ONDBLCLICK_ATTR, HTML.ONDBLCLICK_ATTR, popup.getOndblclick());
+            HtmlRendererUtils.renderHTMLAttribute(writer, HTML.ONMOUSEDOWN_ATTR, HTML.ONMOUSEDOWN_ATTR, popup.getOnmousedown());
+            HtmlRendererUtils.renderHTMLAttribute(writer, HTML.ONMOUSEUP_ATTR, HTML.ONMOUSEUP_ATTR, popup.getOnmouseup());
+            HtmlRendererUtils.renderHTMLAttribute(writer, HTML.ONMOUSEMOVE_ATTR, HTML.ONMOUSEMOVE_ATTR, popup.getOnmousemove());
+            HtmlRendererUtils.renderHTMLAttribute(writer, HTML.ONKEYPRESS_ATTR, HTML.ONKEYPRESS_ATTR, popup.getOnkeypress());
+            HtmlRendererUtils.renderHTMLAttribute(writer, HTML.ONKEYDOWN_ATTR, HTML.ONKEYDOWN_ATTR, popup.getOnkeydown());
+            HtmlRendererUtils.renderHTMLAttribute(writer, HTML.ONKEYUP_ATTR, HTML.ONKEYUP_ATTR, popup.getOnkeyup());
+        }
+        
         RendererUtils.renderChild(facesContext, popupFacet);
         writer.endElement(HTML.DIV_ELEM);
     }