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/17 04:14:11 UTC

svn commit: r955461 - in /myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom: navigation/HtmlNavigationRenderer.java tabbedpane/AbstractHtmlPanelTab.java tabbedpane/HtmlTabbedPaneRenderer.java

Author: lu4242
Date: Thu Jun 17 02:14:11 2010
New Revision: 955461

URL: http://svn.apache.org/viewvc?rev=955461&view=rev
Log:
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/navigation/HtmlNavigationRenderer.java
    myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/tabbedpane/AbstractHtmlPanelTab.java
    myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/tabbedpane/HtmlTabbedPaneRenderer.java

Modified: myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/navigation/HtmlNavigationRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/navigation/HtmlNavigationRenderer.java?rev=955461&r1=955460&r2=955461&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/navigation/HtmlNavigationRenderer.java (original)
+++ myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/navigation/HtmlNavigationRenderer.java Thu Jun 17 02:14:11 2010
@@ -21,6 +21,7 @@ package org.apache.myfaces.custom.naviga
 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.HtmlRendererUtils;
+import org.apache.myfaces.shared_tomahawk.renderkit.html.util.ResourceUtils;
 import org.apache.myfaces.renderkit.html.ext.HtmlLinkRenderer;
 
 import org.apache.commons.logging.Log;
@@ -28,6 +29,7 @@ import org.apache.commons.logging.LogFac
 
 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 java.io.IOException;
@@ -100,12 +102,17 @@ public class HtmlNavigationRenderer
         RendererUtils.checkParamValidity(facesContext, component, HtmlPanelNavigation.class);
         ResponseWriter writer = facesContext.getResponseWriter();
         HtmlPanelNavigation panelNav = (HtmlPanelNavigation)component;
+        
+        Map<String, List<ClientBehavior>> behaviors = panelNav.getClientBehaviors();
+        if (!behaviors.isEmpty())
+        {
+            ResourceUtils.renderDefaultJsfJsInlineIfNecessary(facesContext, writer);
+        }
 
         if (panelNav.getChildCount() > 0)
         {
             HtmlRendererUtils.writePrettyLineSeparator(facesContext);
             writer.startElement(HTML.TABLE_ELEM, component);
-            Map<String, List<ClientBehavior>> behaviors = panelNav.getClientBehaviors();
             
             if (behaviors != null && !behaviors.isEmpty())
             {

Modified: myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/tabbedpane/AbstractHtmlPanelTab.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/tabbedpane/AbstractHtmlPanelTab.java?rev=955461&r1=955460&r2=955461&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/tabbedpane/AbstractHtmlPanelTab.java (original)
+++ myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/tabbedpane/AbstractHtmlPanelTab.java Thu Jun 17 02:14:11 2010
@@ -19,6 +19,7 @@
 package org.apache.myfaces.custom.tabbedpane;
 
 import javax.faces.component.NamingContainer;
+import javax.faces.component.behavior.ClientBehaviorHolder;
 import javax.faces.component.html.HtmlPanelGroup;
 
 import org.apache.myfaces.component.EventAware;
@@ -41,7 +42,7 @@ import org.apache.myfaces.component.User
  */
 public abstract class AbstractHtmlPanelTab
         extends HtmlPanelGroup  implements NamingContainer, 
-        UserRoleAware, EventAware, UniversalProperties
+        UserRoleAware, EventAware, UniversalProperties, ClientBehaviorHolder
 {
     //private static final Log log = LogFactory.getLog(HtmlPanelTab.class);
 

Modified: myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/tabbedpane/HtmlTabbedPaneRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/tabbedpane/HtmlTabbedPaneRenderer.java?rev=955461&r1=955460&r2=955461&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/tabbedpane/HtmlTabbedPaneRenderer.java (original)
+++ myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/custom/tabbedpane/HtmlTabbedPaneRenderer.java Thu Jun 17 02:14:11 2010
@@ -30,6 +30,7 @@ import javax.faces.component.UIComponent
 import javax.faces.component.UIForm;
 import javax.faces.component.UINamingContainer;
 import javax.faces.component.behavior.ClientBehavior;
+import javax.faces.component.behavior.ClientBehaviorHolder;
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
 import javax.faces.event.ComponentSystemEvent;
@@ -37,12 +38,14 @@ import javax.faces.event.ComponentSystem
 import javax.faces.event.ListenerFor;
 
 import org.apache.myfaces.component.UserRoleUtils;
+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.FormInfo;
 import org.apache.myfaces.shared_tomahawk.renderkit.html.util.JavascriptUtils;
+import org.apache.myfaces.shared_tomahawk.renderkit.html.util.ResourceUtils;
 import org.apache.myfaces.tomahawk.application.PreRenderViewAddResourceEvent;
 import org.apache.myfaces.tomahawk.util.TomahawkResourceUtils;
 
@@ -140,6 +143,24 @@ public class HtmlTabbedPaneRenderer
 
         ResponseWriter writer = facesContext.getResponseWriter();
 
+        Map<String, List<ClientBehavior>> behaviors = tabbedPane.getClientBehaviors();
+        if (!behaviors.isEmpty())
+        {
+            ResourceUtils.renderDefaultJsfJsInlineIfNecessary(facesContext, writer);
+        }
+        
+        for (UIComponent child : tabbedPane.getChildren())
+        {
+            if (child instanceof HtmlPanelTab)
+            {
+                Map<String, List<ClientBehavior>> bh = ((HtmlPanelTab) child).getClientBehaviors();
+                if (!bh.isEmpty())
+                {
+                    ResourceUtils.renderDefaultJsfJsInlineIfNecessary(facesContext, writer);
+                }
+            }
+        }
+
         HtmlRendererUtils.writePrettyLineSeparator(facesContext);
 
         int selectedIndex = tabbedPane.getSelectedIndex();
@@ -481,21 +502,29 @@ public class HtmlTabbedPaneRenderer
                 String inactiveUserClass = tabbedPane.getInactiveTabStyleClass();
                 String activeSubStyleUserClass = tabbedPane.getActiveSubStyleClass();
                 String inactiveSubStyleUserClass = tabbedPane.getInactiveSubStyleClass();
-                String onclickEvent = tab.getAttributes().get(HTML.ONCLICK_ATTR) != null ? (String) tab.getAttributes().get(HTML.ONCLICK_ATTR) : "";
                 
-                if(!("").equals(onclickEvent) && onclickEvent.charAt(onclickEvent.length()-1) !=  ';') {
-                    onclickEvent += ";";
-                }
+                String serverSideScript = "return myFaces_showPanelTab("
+                    +tabIndex+",'"+getTabIndexSubmitFieldIDAndName(tabbedPane, facesContext)+"',"
+                    +'\''+getHeaderCellID(tab, facesContext)+"','"+tab.getClientId(facesContext) + TAB_DIV_SUFFIX +"',"
+                    +getHeaderCellsIDsVar(tabbedPane,facesContext)+','+getTabsIDsVar(tabbedPane,facesContext)+','
+                    + (activeUserClass==null ? "null" : '\''+activeUserClass+'\'')+','+ (inactiveUserClass==null ? "null" : '\''+inactiveUserClass+'\'')+','
+                    + (activeSubStyleUserClass==null ? "null" : '\''+activeSubStyleUserClass+'\'')+','+ (inactiveSubStyleUserClass==null ? "null" : '\''+inactiveSubStyleUserClass+'\'')+");";
                 
-                writer.writeAttribute(HTML.ONCLICK_ATTR,
-                                      onclickEvent
-                                      + "return myFaces_showPanelTab("
-                                      +tabIndex+",'"+getTabIndexSubmitFieldIDAndName(tabbedPane, facesContext)+"',"
-                                      +'\''+getHeaderCellID(tab, facesContext)+"','"+tab.getClientId(facesContext) + TAB_DIV_SUFFIX +"',"
-                                      +getHeaderCellsIDsVar(tabbedPane,facesContext)+','+getTabsIDsVar(tabbedPane,facesContext)+','
-                                      + (activeUserClass==null ? "null" : '\''+activeUserClass+'\'')+','+ (inactiveUserClass==null ? "null" : '\''+inactiveUserClass+'\'')+','
-                                      + (activeSubStyleUserClass==null ? "null" : '\''+activeSubStyleUserClass+'\'')+','+ (inactiveSubStyleUserClass==null ? "null" : '\''+inactiveSubStyleUserClass+'\'')+");",
-                                      null);
+                Map<String, List<ClientBehavior>> behaviors = tab.getClientBehaviors();
+                HtmlRendererUtils.renderBehaviorizedAttribute(facesContext, writer, HTML.ONCLICK_ATTR, 
+                        tab, ClientBehaviorEvents.CLICK, null, behaviors, HTML.ONCLICK_ATTR, 
+                        (String) tab.getAttributes().get(HTML.ONCLICK_ATTR), serverSideScript);
+                
+                //String onclickEvent = tab.getAttributes().get(HTML.ONCLICK_ATTR) != null ? (String) tab.getAttributes().get(HTML.ONCLICK_ATTR) : "";
+
+                //if(!("").equals(onclickEvent) && onclickEvent.charAt(onclickEvent.length()-1) !=  ';') {
+                //    onclickEvent += ";";
+                //}
+                
+                //writer.writeAttribute(HTML.ONCLICK_ATTR,
+                //                      onclickEvent +
+                //                      serverSideScript,
+                //                      null);
             }
 
             writer.endElement(HTML.INPUT_ELEM);