You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by to...@apache.org on 2005/11/25 00:58:36 UTC

svn commit: r348834 - in /myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/navmenu/htmlnavmenu: HtmlNavigationMenuRenderer.java HtmlNavigationMenuRendererUtils.java HtmlPanelNavigationMenu.java

Author: tomsp
Date: Thu Nov 24 15:58:31 2005
New Revision: 348834

URL: http://svn.apache.org/viewcvs?rev=348834&view=rev
Log:
NavigationItem.value is now passed over

Modified:
    myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/navmenu/htmlnavmenu/HtmlNavigationMenuRenderer.java
    myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/navmenu/htmlnavmenu/HtmlNavigationMenuRendererUtils.java
    myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/navmenu/htmlnavmenu/HtmlPanelNavigationMenu.java

Modified: myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/navmenu/htmlnavmenu/HtmlNavigationMenuRenderer.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/navmenu/htmlnavmenu/HtmlNavigationMenuRenderer.java?rev=348834&r1=348833&r2=348834&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/navmenu/htmlnavmenu/HtmlNavigationMenuRenderer.java (original)
+++ myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/navmenu/htmlnavmenu/HtmlNavigationMenuRenderer.java Thu Nov 24 15:58:31 2005
@@ -95,32 +95,47 @@
         HtmlPanelNavigationMenu panelNav = (HtmlPanelNavigationMenu)component;
         if (HtmlNavigationMenuRendererUtils.isListLayout(panelNav))
         {
-            UIViewRoot previousViewRoot = (UIViewRoot)
-                facesContext.getExternalContext().getRequestMap().get(HtmlPanelNavigationMenu.PREVIOUS_VIEW_ROOT);
-            // get old view
-            // preprocess component tree
+            UIViewRoot previousViewRoot;
             boolean preprocess = true;
-            if (previousViewRoot != null)
+            if (facesContext.getApplication().getStateManager().isSavingStateInClient(facesContext))
             {
-                HtmlPanelNavigationMenu panelNavPrev =
-                    (HtmlPanelNavigationMenu) previousViewRoot.findComponent(panelNav.getClientId(facesContext));
-                if (panelNavPrev != null)
+                // client statesaving
+                previousViewRoot = (UIViewRoot)facesContext.getExternalContext().getRequestMap().get(HtmlPanelNavigationMenu.PREVIOUS_VIEW_ROOT);
+                // get old view
+                // preprocess component tree
+                if (previousViewRoot != null)
                 {
-                    preprocess = false;
-                    if (!panelNavPrev.equals(panelNav))
+                    HtmlPanelNavigationMenu panelNavPrev =
+                        (HtmlPanelNavigationMenu) previousViewRoot.findComponent(panelNav.getClientId(facesContext));
+                    facesContext.getApplication().getStateManager().isSavingStateInClient(facesContext);
+                    if (panelNavPrev != null)
                     {
-                        // substitute panelnav
-                        UIComponent parent = panelNav.getParent();
-                        int insertPos = parent.getChildren().indexOf(panelNav);
-                        parent.getChildren().set(insertPos, panelNavPrev);
-                        panelNavPrev.setParent(parent);
-                        panelNav.setParent(null);
-                        panelNav = panelNavPrev;
+                        preprocess = false;
+                        if (!panelNavPrev.equals(panelNav))
+                        {
+                            // substitute panelnav
+                            UIComponent parent = panelNav.getParent();
+                            int insertPos = parent.getChildren().indexOf(panelNav);
+                            parent.getChildren().set(insertPos, panelNavPrev);
+                            panelNavPrev.setParent(parent);
+                            panelNav.setParent(null);
+                            panelNav = panelNavPrev;
+                        }
                     }
                 }
             }
+            else
+            {
+                previousViewRoot = facesContext.getViewRoot();
+                // server statesaving
+                if (panelNav.getPreprocessed() != null && panelNav.getPreprocessed().booleanValue())
+                    preprocess = false;
+            }
             if (preprocess)
+            {
+                panelNav.setPreprocessed(Boolean.TRUE);
                 preprocessNavigationItems(facesContext, panelNav, previousViewRoot, panelNav.getChildren(), new UniqueId());
+            }
             // render list
             if (log.isDebugEnabled())
                 HtmlNavigationMenuRendererUtils.debugTree(log, facesContext, panelNav.getChildren(), 0);
@@ -236,6 +251,7 @@
             newItem.setItemLabel(uiNavMenuItem.getLabel());
             newItem.setOpen(uiNavMenuItem.isOpen());
             newItem.setActive(uiNavMenuItem.isActive());
+            newItem.setValue(uiNavMenuItem.getValue());
             newItem.setTransient(false);
             if (uiNavMenuItem.getNavigationMenuItems() != null && uiNavMenuItem.getNavigationMenuItems().length > 0)
             {
@@ -268,8 +284,10 @@
             newItem.addActionListener(listeners[j]);
 
         }
+        // value
+        newItem.setValue(uiNavMenuItem.getValue());
         // immeditate
-        newItem.setImmediate(uiNavMenuItem.isImmediate());
+         newItem.setImmediate(uiNavMenuItem.isImmediate());
         // transient, rendered
         newItem.setTransient(uiNavMenuItem.isTransient());
         newItem.setRendered(uiNavMenuItem.isRendered());

Modified: myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/navmenu/htmlnavmenu/HtmlNavigationMenuRendererUtils.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/navmenu/htmlnavmenu/HtmlNavigationMenuRendererUtils.java?rev=348834&r1=348833&r2=348834&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/navmenu/htmlnavmenu/HtmlNavigationMenuRendererUtils.java (original)
+++ myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/navmenu/htmlnavmenu/HtmlNavigationMenuRendererUtils.java Thu Nov 24 15:58:31 2005
@@ -58,11 +58,14 @@
                 writer.startElement(HTML.LI_ELEM, panelNav);
                 HtmlNavigationMenuRendererUtils.writeStyleAttributes(writer, style, styleClass);
 
+                Object value = navItem.getValue();
+                navItem.setValue(null); // unset value, value must not be rendered
                 navItem.encodeBegin(facesContext);
                 HtmlNavigationMenuRendererUtils.renderChildren(facesContext, navItem);
                 navItem.encodeEnd(facesContext);
+                navItem.setValue(value); // restore value
 
-                if (child.getChildCount() > 0)
+                if (hasCommandNavigationItemChildren(navItem))
                 {
                     writer.startElement(HTML.UL_ELEM, panelNav);
                     //HtmlRendererUtils.renderHTMLAttributes(writer, panelNav, HTML.UL_PASSTHROUGH_ATTRIBUTES);
@@ -74,6 +77,19 @@
         }
     }
 
+    private static boolean hasCommandNavigationItemChildren(HtmlCommandNavigationItem item)
+    {
+        List children = item.getChildren();
+        for (int i = 0, sizei = children.size(); i < sizei; i++)
+        {
+            if (children.get(i) instanceof HtmlCommandNavigationItem)
+            {
+                return true;
+            }
+        }
+        return false;
+    }
+
     public static void renderChildrenTableLayout(FacesContext facesContext,
                                                  ResponseWriter writer,
                                                  HtmlPanelNavigationMenu panelNav,
@@ -140,7 +156,7 @@
                 if (style != null || styleClass != null)
                 {
                     writer.endElement(HTML.SPAN_ELEM);
-                }
+                }                                                             
 
                 writer.endElement(HTML.TD_ELEM);
                 writer.endElement(HTML.TR_ELEM);

Modified: myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/navmenu/htmlnavmenu/HtmlPanelNavigationMenu.java
URL: http://svn.apache.org/viewcvs/myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/navmenu/htmlnavmenu/HtmlPanelNavigationMenu.java?rev=348834&r1=348833&r2=348834&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/navmenu/htmlnavmenu/HtmlPanelNavigationMenu.java (original)
+++ myfaces/tomahawk/trunk/src/java/org/apache/myfaces/custom/navmenu/htmlnavmenu/HtmlPanelNavigationMenu.java Thu Nov 24 15:58:31 2005
@@ -97,8 +97,6 @@
         }
     }
 
-//------------------ GENERATED CODE BEGIN (do not modify!) --------------------
-
     public static final String COMPONENT_TYPE = "org.apache.myfaces.HtmlPanelNavigationMenu";
     public static final String COMPONENT_FAMILY = "javax.faces.Panel";
     private static final String DEFAULT_RENDERER_TYPE = "org.apache.myfaces.NavigationMenu";
@@ -112,6 +110,7 @@
     private String _activeItemStyle = null;
     private String _separatorStyle = null;
     private String _layout = null;
+    private Boolean _preprocessed = Boolean.FALSE;
 
     public HtmlPanelNavigationMenu()
     {
@@ -231,10 +230,19 @@
         _layout = layout;
     }
 
+    public Boolean getPreprocessed()
+    {
+        return _preprocessed;
+    }
+
+    public void setPreprocessed(Boolean preprocessed)
+    {
+        _preprocessed = preprocessed;
+    }
 
     public Object saveState(FacesContext context)
     {
-        Object values[] = new Object[10];
+        Object values[] = new Object[11];
         values[0] = super.saveState(context);
         values[1] = _itemClass;
         values[2] = _openItemClass;
@@ -245,6 +253,7 @@
         values[7] = _activeItemStyle;
         values[8] = _separatorStyle;
         values[9] = _layout;
+        values[10] = _preprocessed;
         return ((Object) (values));
     }
 
@@ -261,6 +270,6 @@
         _activeItemStyle = (String)values[7];
         _separatorStyle = (String)values[8];
         _layout = (String)values[9];
+        _preprocessed = (Boolean)values[10];
     }
-//------------------ GENERATED CODE END ---------------------------------------
 }