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 2011/04/28 16:12:17 UTC

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

Author: lu4242
Date: Thu Apr 28 14:12:17 2011
New Revision: 1097468

URL: http://svn.apache.org/viewvc?rev=1097468&view=rev
Log:
TOMAHAWK-1451 [myfaces-example-simple-1.1.9] Popup example doesn't work with Mojarra 1.2/2.0.0

Modified:
    myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/popup/AbstractHtmlPopup.java
    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/AbstractHtmlPopup.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/popup/AbstractHtmlPopup.java?rev=1097468&r1=1097467&r2=1097468&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/popup/AbstractHtmlPopup.java (original)
+++ myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/popup/AbstractHtmlPopup.java Thu Apr 28 14:12:17 2011
@@ -112,4 +112,16 @@ public abstract class AbstractHtmlPopup
      * @JSFProperty
      */
     public abstract Boolean getClosePopupOnExitingPopup();
+    
+    /**
+     * The type of layout markup to use when rendering this group. If the value is "block"
+     * the renderer must produce an HTML "div" element. If the value is "none", no tag is
+     * rendered on the output and instead, onmouseover and onmouseout properties are modified
+     * for children components. Otherwise HTML "span" element must be produced.
+     *
+     * @JSFProperty
+     * @return  the new layout value
+     */
+    public abstract String getLayout();
+    
 }

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=1097468&r1=1097467&r2=1097468&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 Thu Apr 28 14:12:17 2011
@@ -52,6 +52,11 @@ public class HtmlPopupRenderer
 {
     public static final String RENDERER_TYPE = "org.apache.myfaces.Popup";
     //private static final Log log = LogFactory.getLog(HtmlListRenderer.class);
+    
+    private static final String LAYOUT_BLOCK = "block";
+    private static final String LAYOUT_DIV = "div";
+    private static final String LAYOUT_SPAN = "span";
+    private static final String LAYOUT_NONE = "none";
 
     public boolean getRendersChildren()
     {
@@ -100,13 +105,42 @@ public class HtmlPopupRenderer
 
         //writeMouseOverAndOutAttribs(popupId, popupFacet.getChildren());
 
-        writeMouseOverAttribs(popupId, uiComponent.getChildren(),
-            popup.getClosePopupOnExitingElement()==null ||
-                    popup.getClosePopupOnExitingElement().booleanValue());
-
-        RendererUtils.renderChildren(facesContext, uiComponent);
-
         ResponseWriter writer = facesContext.getResponseWriter();
+        
+        String layout = popup.getLayout();
+        
+        if (LAYOUT_BLOCK.equals(layout) || LAYOUT_DIV.equals(layout))
+        {
+            writer.startElement(HTML.DIV_ELEM, popup);
+            writer.writeAttribute(HTML.ONMOUSEOVER_ATTR, popupId + ".display(event);", null);
+            writer.writeAttribute(HTML.ONMOUSEOUT_ATTR, popupId + ".hide(event);", null);
+        }
+        else if (LAYOUT_NONE.equals(layout))
+        {
+            writeMouseOverAttribs(popupId, uiComponent.getChildren(),
+                    popup.getClosePopupOnExitingElement()==null ||
+                            popup.getClosePopupOnExitingElement().booleanValue());
+        }
+        else
+        {
+            writer.startElement(HTML.SPAN_ELEM, popup);
+            writer.writeAttribute(HTML.ONMOUSEOVER_ATTR, popupId + ".display(event);", null);
+            writer.writeAttribute(HTML.ONMOUSEOUT_ATTR, popupId + ".hide(event);", null);
+        }
+        
+        RendererUtils.renderChildren(facesContext, uiComponent);
+        
+        if (LAYOUT_BLOCK.equals(layout) || LAYOUT_DIV.equals(layout))
+        {
+            writer.endElement(HTML.DIV_ELEM);
+        }
+        else if (LAYOUT_NONE.equals(layout))
+        {
+        }
+        else
+        {
+            writer.endElement(HTML.SPAN_ELEM);
+        }
 
         writer.startElement(HTML.DIV_ELEM, popup);
         writer.writeAttribute(HTML.STYLE_ATTR,(popup.getStyle()!=null?(popup.getStyle()+