You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2014/12/18 14:05:28 UTC

svn commit: r1646450 - in /myfaces/tobago/branches/tobago-3.0.x: tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/ tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/ tobago-core/src/main/java/org/apache...

Author: lofwyr
Date: Thu Dec 18 13:05:27 2014
New Revision: 1646450

URL: http://svn.apache.org/r1646450
Log:
TOBAGO-1368: Create a new theme which uses Bootstrap
 - implementing the menuBar of the page

Added:
    myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-bootstrap/src/main/java/org/apache/myfaces/tobago/renderkit/html/bootstrap/standard/tag/MenuBarRenderer.java
    myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-bootstrap/src/main/java/org/apache/myfaces/tobago/renderkit/html/bootstrap/standard/tag/MenuRenderer.java
Modified:
    myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIMenu.java
    myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIMenuBar.java
    myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/MenuBarTagDeclaration.java
    myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/MenuTagDeclaration.java
    myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/Css.java
    myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-bootstrap/src/main/java/org/apache/myfaces/tobago/renderkit/html/bootstrap/BootstrapClass.java
    myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-bootstrap/src/main/java/org/apache/myfaces/tobago/renderkit/html/bootstrap/standard/tag/PageRenderer.java
    myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/MenuRenderer.java
    myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/PageRenderer.java

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIMenu.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIMenu.java?rev=1646450&r1=1646449&r2=1646450&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIMenu.java (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIMenu.java Thu Dec 18 13:05:27 2014
@@ -19,9 +19,10 @@
 
 package org.apache.myfaces.tobago.internal.component;
 
+import org.apache.myfaces.tobago.component.SupportsCss;
 import org.apache.myfaces.tobago.layout.LayoutComponent;
 
-public abstract class AbstractUIMenu extends javax.faces.component.UIPanel implements LayoutComponent {
+public abstract class AbstractUIMenu extends javax.faces.component.UIPanel implements LayoutComponent, SupportsCss {
 
   public abstract String getLabel();
 }

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIMenuBar.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIMenuBar.java?rev=1646450&r1=1646449&r2=1646450&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIMenuBar.java (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIMenuBar.java Thu Dec 18 13:05:27 2014
@@ -20,6 +20,7 @@
 package org.apache.myfaces.tobago.internal.component;
 
 import org.apache.myfaces.tobago.component.OnComponentCreated;
+import org.apache.myfaces.tobago.component.SupportsCss;
 import org.apache.myfaces.tobago.layout.LayoutComponent;
 import org.apache.myfaces.tobago.renderkit.RendererBase;
 
@@ -28,7 +29,7 @@ import javax.faces.component.UIPanel;
 import javax.faces.context.FacesContext;
 import javax.faces.render.Renderer;
 
-public abstract class AbstractUIMenuBar extends UIPanel implements LayoutComponent, OnComponentCreated {
+public abstract class AbstractUIMenuBar extends UIPanel implements LayoutComponent, OnComponentCreated, SupportsCss {
 
   public void onComponentCreated(final FacesContext context, final UIComponent parent) {
     final Renderer renderer = getRenderer(getFacesContext());

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/MenuBarTagDeclaration.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/MenuBarTagDeclaration.java?rev=1646450&r1=1646449&r2=1646450&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/MenuBarTagDeclaration.java (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/MenuBarTagDeclaration.java Thu Dec 18 13:05:27 2014
@@ -23,6 +23,8 @@ import org.apache.myfaces.tobago.apt.ann
 import org.apache.myfaces.tobago.apt.annotation.Tag;
 import org.apache.myfaces.tobago.apt.annotation.UIComponentTag;
 import org.apache.myfaces.tobago.component.RendererTypes;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasCss;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasCurrentCss;
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasCurrentMarkup;
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasIdBindingAndRendered;
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasMarkup;
@@ -57,5 +59,5 @@ import javax.faces.component.UIPanel;
         "org.apache.myfaces.tobago.MenuSeparator"
         })
 public interface MenuBarTagDeclaration
-    extends HasIdBindingAndRendered, IsGridLayoutComponent, HasMarkup, HasCurrentMarkup {
+    extends HasIdBindingAndRendered, IsGridLayoutComponent, HasMarkup, HasCurrentMarkup, HasCss, HasCurrentCss {
 }

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/MenuTagDeclaration.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/MenuTagDeclaration.java?rev=1646450&r1=1646449&r2=1646450&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/MenuTagDeclaration.java (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/MenuTagDeclaration.java Thu Dec 18 13:05:27 2014
@@ -23,6 +23,8 @@ import org.apache.myfaces.tobago.apt.ann
 import org.apache.myfaces.tobago.apt.annotation.Tag;
 import org.apache.myfaces.tobago.apt.annotation.UIComponentTag;
 import org.apache.myfaces.tobago.component.RendererTypes;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasCss;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasCurrentCss;
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasCurrentMarkup;
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasIdBindingAndRendered;
 import org.apache.myfaces.tobago.internal.taglib.declaration.HasImage;
@@ -57,5 +59,5 @@ import javax.faces.component.UIPanel;
         "org.apache.myfaces.tobago.MenuSelectOne",
         "org.apache.myfaces.tobago.MenuSeparator"})
 public interface MenuTagDeclaration extends HasIdBindingAndRendered, HasLabelAndAccessKey,
-    IsDisabled, HasImage, IsGridLayoutComponent, HasMarkup, HasCurrentMarkup {
+    IsDisabled, HasImage, IsGridLayoutComponent, HasMarkup, HasCurrentMarkup, HasCss, HasCurrentCss {
 }

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/Css.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/Css.java?rev=1646450&r1=1646449&r2=1646450&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/Css.java (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/Css.java Thu Dec 18 13:05:27 2014
@@ -28,6 +28,9 @@ import java.util.HashSet;
 import java.util.Set;
 import java.util.StringTokenizer;
 
+/**
+ * @since 3.0.0
+ */
 public class Css {
 
   private static final Logger LOG = LoggerFactory.getLogger(Css.class);
@@ -37,14 +40,28 @@ public class Css {
   public Css() {
   }
 
-  public void add(String css) {
-    // todo: check for forbidden letters: regexp
-    if (css.contains(" ")) {
-      LOG.warn("Not a valid css class name: " + css);
+  public void add(String... cssList) {
+    for (String css : cssList) {
+      // todo: check for forbidden letters: regexp
+      if (css.contains(" ")) {
+        LOG.warn("Not a valid css class name: " + css);
+      }
+      list.add(css);
     }
-    list.add(css);
   }
 
+/* todo
+  public void add(BootstrapClass... cssList) {
+    for (String css : cssList) {
+      // todo: check for forbidden letters: regexp
+      if (css.contains(" ")) {
+        LOG.warn("Not a valid css class name: " + css);
+      }
+      list.add(css);
+    }
+  }
+*/
+
   public static Css valueOf(final String string) {
 
     final StringTokenizer tokenizer = new StringTokenizer(string, " ");

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-bootstrap/src/main/java/org/apache/myfaces/tobago/renderkit/html/bootstrap/BootstrapClass.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-bootstrap/src/main/java/org/apache/myfaces/tobago/renderkit/html/bootstrap/BootstrapClass.java?rev=1646450&r1=1646449&r2=1646450&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-bootstrap/src/main/java/org/apache/myfaces/tobago/renderkit/html/bootstrap/BootstrapClass.java (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-bootstrap/src/main/java/org/apache/myfaces/tobago/renderkit/html/bootstrap/BootstrapClass.java Thu Dec 18 13:05:27 2014
@@ -24,17 +24,21 @@ package org.apache.myfaces.tobago.render
  */
 public enum BootstrapClass {
 
-    CONTAINER("container"),
-    CONTAINER_FLUID("container-fluid");
+  CONTAINER("container"),
+  CONTAINER_FLUID("container-fluid"),
+  DROPDOWN("dropdown"),
+  DROPDOWN_MENU("dropdown-menu"),
+  NAV("nav"),
+  NAVBAR_NAV("navbar-nav");
 
-    private final String name;
+  private final String name;
 
-    private BootstrapClass(final String name) {
-        this.name = name;
-    }
+  private BootstrapClass(final String name) {
+    this.name = name;
+  }
 
-    public String getName() {
-        return name;
-    }
+  public String getName() {
+    return name;
+  }
 
 }

Added: myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-bootstrap/src/main/java/org/apache/myfaces/tobago/renderkit/html/bootstrap/standard/tag/MenuBarRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-bootstrap/src/main/java/org/apache/myfaces/tobago/renderkit/html/bootstrap/standard/tag/MenuBarRenderer.java?rev=1646450&view=auto
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-bootstrap/src/main/java/org/apache/myfaces/tobago/renderkit/html/bootstrap/standard/tag/MenuBarRenderer.java (added)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-bootstrap/src/main/java/org/apache/myfaces/tobago/renderkit/html/bootstrap/standard/tag/MenuBarRenderer.java Thu Dec 18 13:05:27 2014
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.myfaces.tobago.renderkit.html.bootstrap.standard.tag;
+
+import org.apache.myfaces.tobago.component.SupportsCss;
+import org.apache.myfaces.tobago.renderkit.html.bootstrap.BootstrapClass;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import java.io.IOException;
+
+/**
+ * @since 3.0.0
+ */
+public class MenuBarRenderer extends org.apache.myfaces.tobago.renderkit.html.standard.standard.tag.MenuBarRenderer {
+
+  @Override
+  public void prepareRender(
+      final FacesContext facesContext, final UIComponent component) throws IOException {
+    super.prepareRender(facesContext, component);
+
+    SupportsCss css = (SupportsCss) component;
+    css.getCurrentCss().add(BootstrapClass.NAV.getName(), BootstrapClass.NAVBAR_NAV.getName());
+  }
+
+}

Added: myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-bootstrap/src/main/java/org/apache/myfaces/tobago/renderkit/html/bootstrap/standard/tag/MenuRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-bootstrap/src/main/java/org/apache/myfaces/tobago/renderkit/html/bootstrap/standard/tag/MenuRenderer.java?rev=1646450&view=auto
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-bootstrap/src/main/java/org/apache/myfaces/tobago/renderkit/html/bootstrap/standard/tag/MenuRenderer.java (added)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-bootstrap/src/main/java/org/apache/myfaces/tobago/renderkit/html/bootstrap/standard/tag/MenuRenderer.java Thu Dec 18 13:05:27 2014
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.myfaces.tobago.renderkit.html.bootstrap.standard.tag;
+
+import org.apache.myfaces.tobago.component.SupportsCss;
+import org.apache.myfaces.tobago.renderkit.html.bootstrap.BootstrapClass;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import java.io.IOException;
+
+/**
+ * @since 3.0.0
+ */
+public class MenuRenderer extends org.apache.myfaces.tobago.renderkit.html.standard.standard.tag.MenuRenderer {
+
+  @Override
+  public void prepareRender(
+      final FacesContext facesContext, final UIComponent component) throws IOException {
+    super.prepareRender(facesContext, component);
+
+    SupportsCss css = (SupportsCss) component;
+    css.getCurrentCss().add(BootstrapClass.DROPDOWN.getName());
+  }
+
+}

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-bootstrap/src/main/java/org/apache/myfaces/tobago/renderkit/html/bootstrap/standard/tag/PageRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-bootstrap/src/main/java/org/apache/myfaces/tobago/renderkit/html/bootstrap/standard/tag/PageRenderer.java?rev=1646450&r1=1646449&r2=1646450&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-bootstrap/src/main/java/org/apache/myfaces/tobago/renderkit/html/bootstrap/standard/tag/PageRenderer.java (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-bootstrap/src/main/java/org/apache/myfaces/tobago/renderkit/html/bootstrap/standard/tag/PageRenderer.java Thu Dec 18 13:05:27 2014
@@ -19,12 +19,21 @@
 package org.apache.myfaces.tobago.renderkit.html.bootstrap.standard.tag;
 
 import org.apache.myfaces.tobago.component.SupportsCss;
+import org.apache.myfaces.tobago.component.UIPage;
+import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
+import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
+import org.apache.myfaces.tobago.renderkit.html.HtmlRoleValues;
 import org.apache.myfaces.tobago.renderkit.html.bootstrap.BootstrapClass;
+import org.apache.myfaces.tobago.renderkit.html.util.HtmlRendererUtils;
+import org.apache.myfaces.tobago.webapp.TobagoResponseWriter;
 
 import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import java.io.IOException;
 
+/**
+ * @since 3.0.0
+ */
 public class PageRenderer extends org.apache.myfaces.tobago.renderkit.html.standard.standard.tag.PageRenderer {
 
   @Override
@@ -35,4 +44,28 @@ public class PageRenderer extends org.ap
     SupportsCss css = (SupportsCss) component;
     css.getCurrentCss().add(BootstrapClass.CONTAINER_FLUID.getName());
   }
+
+  @Override
+  protected void encodePageMenu(FacesContext facesContext, UIPage page) throws IOException {
+
+    final TobagoResponseWriter writer = HtmlRendererUtils.getTobagoResponseWriter(facesContext);
+
+    writer.startElement(HtmlElements.NAV);
+    writer.writeClassAttribute("navbar navbar-inverse navbar-fixed-top");
+    writer.writeAttribute(HtmlAttributes.ROLE, HtmlRoleValues.NAVIGATION.toString(), false);
+
+    writer.startElement(HtmlElements.DIV);
+    writer.writeClassAttribute("container-fluid");
+
+    writer.startElement(HtmlElements.DIV);
+    writer.writeClassAttribute("collapse navbar-collapse");
+
+    super.encodePageMenu(facesContext, page);
+
+    writer.endElement(HtmlElements.DIV);
+
+    writer.endElement(HtmlElements.DIV);
+
+    writer.endElement(HtmlElements.NAV);
+  }
 }

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/MenuRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/MenuRenderer.java?rev=1646450&r1=1646449&r2=1646450&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/MenuRenderer.java (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/MenuRenderer.java Thu Dec 18 13:05:27 2014
@@ -118,6 +118,8 @@ public class MenuRenderer extends Layout
     writer.endElement(HtmlElements.A);
     if (isParentMenu) {
       writer.startElement(HtmlElements.OL, menu);
+
+      writer.writeClassAttribute("dropdown-menu");// fixme: this comes from BootstrapClass, but isn't accessible
     }
   }
 

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/PageRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/PageRenderer.java?rev=1646450&r1=1646449&r2=1646450&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/PageRenderer.java (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/PageRenderer.java Thu Dec 18 13:05:27 2014
@@ -337,11 +337,7 @@ public class PageRenderer extends PageRe
     }
 */
 
-    final UIMenuBar menuBar = ComponentUtils.findFacetDescendant(page, Facets.MENUBAR, UIMenuBar.class);
-    if (menuBar != null) {
-      menuBar.getAttributes().put(Attributes.PAGE_MENU, Boolean.TRUE);
-      RenderUtils.encode(facesContext, menuBar);
-    }
+    encodePageMenu(facesContext, page);
     // write the previously rendered page content
 //    AbstractUILayoutBase.getLayout(component).encodeChildrenOfComponent(facesContext, component);
 
@@ -364,6 +360,13 @@ public class PageRenderer extends PageRe
     writer.writeStyleAttribute(style);
   }
 
+  protected void encodePageMenu(FacesContext facesContext, UIPage page) throws IOException {
+    final UIMenuBar menuBar = ComponentUtils.findFacetDescendant(page, Facets.MENUBAR, UIMenuBar.class);
+    if (menuBar != null) {
+      RenderUtils.encode(facesContext, menuBar);
+    }
+  }
+
   private void checkDuplicates(final String[] resources, final Collection<String> files) {
     for (final String resource : resources) {
       if (files.contains(resource)) {