[jboss-svn-commits] JBoss Portal SVN: r5170 - in trunk: core/src/bin/portal-core-war/layouts/generic core/src/resources/portal-core-sar/conf/data theme/src/main/org/jboss/portal/theme/impl/render theme/src/main/org/jboss/portal/theme/render theme/src/main/org/jboss/portal/theme/render/region theme/src/main/org/jboss/portal/theme/tag

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Sep 11 15:40:19 EDT 2006


Author: roy.russo at jboss.com
Date: 2006-09-11 15:40:16 -0400 (Mon, 11 Sep 2006)
New Revision: 5170

Added:
   trunk/theme/src/main/org/jboss/portal/theme/render/region/
   trunk/theme/src/main/org/jboss/portal/theme/render/region/utilitynavigation.java
Modified:
   trunk/core/src/bin/portal-core-war/layouts/generic/index.jsp
   trunk/core/src/resources/portal-core-sar/conf/data/default-object.xml
   trunk/theme/src/main/org/jboss/portal/theme/impl/render/DivRegionRenderer.java
   trunk/theme/src/main/org/jboss/portal/theme/tag/RegionTagHandler.java
Log:
JBPORTAL-1030 - Added support for injection of region content, not bound to window fragments.

Modified: trunk/core/src/bin/portal-core-war/layouts/generic/index.jsp
===================================================================
--- trunk/core/src/bin/portal-core-war/layouts/generic/index.jsp	2006-09-08 22:05:23 UTC (rev 5169)
+++ trunk/core/src/bin/portal-core-war/layouts/generic/index.jsp	2006-09-11 19:40:16 UTC (rev 5170)
@@ -24,8 +24,7 @@
                <td align="center" valign="top" id="header">
 
                   <!-- TODO: Needs to be defined as a region for access control -->
-                  <div id="utilitynavigation"><a href="#" class="addcontent">Add Content</a></div>
-
+                  <p:region regionName='utilitynavigation' regionID='utilitynavigation'/>
                   <p:region regionName='navigation' regionID='navigation'/>
                   <div id="spacer"></div>
                </td>

Modified: trunk/core/src/resources/portal-core-sar/conf/data/default-object.xml
===================================================================
--- trunk/core/src/resources/portal-core-sar/conf/data/default-object.xml	2006-09-08 22:05:23 UTC (rev 5169)
+++ trunk/core/src/resources/portal-core-sar/conf/data/default-object.xml	2006-09-11 19:40:16 UTC (rev 5170)
@@ -89,6 +89,23 @@
                <instance-ref>CMSPortletInstance</instance-ref>
                <region>center</region>
                <height>0</height>
+               <properties>
+                  <!-- use the window renderer from the emptyRenderer renderSet -->
+                  <property>
+                     <name>theme.windowRendererId</name>
+                     <value>emptyRenderer</value>
+                  </property>
+                  <!-- use the decoration renderer from the emptyRenderer renderSet -->
+                  <property>
+                     <name>theme.decorationRendererId</name>
+                     <value>emptyRenderer</value>
+                  </property>
+                  <!-- use the portlet renderer from the emptyRenderer renderSet -->
+                  <property>
+                     <name>theme.portletRendererId</name>
+                     <value>emptyRenderer</value>
+                  </property>
+               </properties>
             </window>
             <window>
                <window-name>UserPortletWindow</window-name>

Modified: trunk/theme/src/main/org/jboss/portal/theme/impl/render/DivRegionRenderer.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/impl/render/DivRegionRenderer.java	2006-09-08 22:05:23 UTC (rev 5169)
+++ trunk/theme/src/main/org/jboss/portal/theme/impl/render/DivRegionRenderer.java	2006-09-11 19:40:16 UTC (rev 5170)
@@ -27,7 +27,9 @@
 import org.jboss.portal.theme.render.RegionRenderer;
 import org.jboss.portal.theme.render.RenderContext;
 import org.jboss.portal.theme.render.RenderException;
+import org.apache.log4j.Logger;
 
+import java.lang.reflect.Method;
 import java.util.Iterator;
 import java.util.Map;
 
@@ -35,12 +37,15 @@
  * Implementation of a Region renderer, based on div tags.
  *
  * @author <a href="mailto:mholzner at novell.com>Martin Holzner</a>
+ * @author <a href="mailto:roy at jboss.org>Roy Russo</a>
  * @version $LastChangedRevision$, $LastChangedDate$
  * @see org.jboss.portal.theme.render.RegionRenderer
  */
 public class DivRegionRenderer
-   implements RegionRenderer
+      implements RegionRenderer
 {
+   private static Logger log = Logger.getLogger(DivRegionRenderer.class);
+
    /**
     * @see RegionRenderer#render
     */
@@ -49,32 +54,49 @@
       StringBuffer markup = renderContext.getMarkupFragment();
       markup.append("<div");
 
-      if (region == null || region.getWindows().size() <= 0)
+      if(region == null) // || region.getWindows().size() <= 0)
       {
          markup.append(" class='empty-region' />");
          return;
       }
       else
       {
-         if (renderContext.getRegionID() != null)
+         if(renderContext.getRegionID() != null)
          {
             markup.append(" id='").append(renderContext.getRegionID()).append("'>");
          }
       }
 
-      for (Iterator i = region.getWindows().iterator(); i.hasNext();)
+      if(region.getWindows().size() == 0) // non-window display of content
       {
-         WindowContext window = (WindowContext)i.next();
-         WindowContext portletContext = (WindowContext)portletContexts.get(window.getId());
-         WindowResult result = (WindowResult)windowResults.get(window.getId());
-
-         // The result may be null if it has not been added to the page for some reason
-         if (result != null)
+         try
          {
-            renderContext.getWindowRenderer(result).render(renderContext, portletContext, result);
+            Class regionClass = Class.forName("org.jboss.portal.theme.render.region." + region.getId(), true, Thread.currentThread().getContextClassLoader());
+            Class[] argTypes = {String.class};
+            Method m = regionClass.getMethod("render", argTypes);
+            String fragment = (String)m.invoke(regionClass.newInstance(), new Object[]{null});
+            markup.append(fragment);
          }
+         catch(Exception e)
+         {
+            log.error("No region class found for: " + "org.jboss.portal.theme.render.region." + region.getId());
+         }
       }
+      else // process window fragments
+      {
+         for(Iterator i = region.getWindows().iterator(); i.hasNext();)
+         {
+            WindowContext window = (WindowContext) i.next();
+            WindowContext portletContext = (WindowContext) portletContexts.get(window.getId());
+            WindowResult result = (WindowResult) windowResults.get(window.getId());
 
+            // The result may be null if it has not been added to the page for some reason
+            if(result != null)
+            {
+               renderContext.getWindowRenderer(result).render(renderContext, portletContext, result);
+            }
+         }
+      }
       markup.append("</div>");
    }
 

Added: trunk/theme/src/main/org/jboss/portal/theme/render/region/utilitynavigation.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/render/region/utilitynavigation.java	2006-09-08 22:05:23 UTC (rev 5169)
+++ trunk/theme/src/main/org/jboss/portal/theme/render/region/utilitynavigation.java	2006-09-11 19:40:16 UTC (rev 5170)
@@ -0,0 +1,54 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2006, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+
+package org.jboss.portal.theme.render.region;
+
+/**
+ * This is a static div region, that is not bound to a window.
+ *
+ * @author <a href="mailto:roy at jboss.org">Roy Russo</a>
+ */
+
+public class utilitynavigation
+{
+   /**
+    * Returns output for rendering in region tag.
+    *
+    * @param s
+    * @return output for rendering
+    */
+   public String render(String s)
+   {
+      if(s == null)
+      {
+         return "<a href=\"#\" class=\"addcontent\">Add Content</a>" +
+                "&nbsp;&nbsp;|&nbsp;&nbsp;" +
+                "<a href=\"#\">Edit Page</a>" +
+                "&nbsp;&nbsp;|&nbsp;&nbsp;" +
+                "<a href=\"#\" class=\"addcontent\">Add Page</a>";
+      }
+      else
+      {
+         return "";
+      }
+   }
+}

Modified: trunk/theme/src/main/org/jboss/portal/theme/tag/RegionTagHandler.java
===================================================================
--- trunk/theme/src/main/org/jboss/portal/theme/tag/RegionTagHandler.java	2006-09-08 22:05:23 UTC (rev 5169)
+++ trunk/theme/src/main/org/jboss/portal/theme/tag/RegionTagHandler.java	2006-09-11 19:40:16 UTC (rev 5170)
@@ -43,11 +43,12 @@
  * individual portlets.</p>
  *
  * @author <a href="mailto:mholzner at novell.com>Martin Holzner</a>
+ * @author <a href="mailto:roy at jboss.org>Roy Russo</a>
  * @version $LastChangedRevision$, $LastChangedDate$
  * @see org.jboss.portal.theme.render.PortalRenderSet
  */
 public class RegionTagHandler
-   extends SimpleTagSupport
+      extends SimpleTagSupport
 {
    private static Logger log = Logger.getLogger(RegionTagHandler.class);
    //default to vertical
@@ -63,33 +64,54 @@
     */
    public void doTag() throws JspException, IOException
    {
-      if (regionCssId == null)
+      if(regionCssId == null)
       {
          regionCssId = regionName;
       }
       log.debug("rendering " + regionName + " [" + orientation + "]  cssId[" + regionCssId + "]");
 
       // get page and region
-      PageContext app = (PageContext)getJspContext();
-      HttpServletRequest request = (HttpServletRequest)app.getRequest();
+      PageContext app = (PageContext) getJspContext();
+      HttpServletRequest request = (HttpServletRequest) app.getRequest();
 
-      PageResult page = (PageResult)request.getAttribute(LayoutConstants.ATTR_PAGE);
+      PageResult page = (PageResult) request.getAttribute(LayoutConstants.ATTR_PAGE);
       JspWriter out = this.getJspContext().getOut();
-      if (page == null)
+      if(page == null)
       {
          out.write("<p bgcolor='red'>No page to render!</p>");
          out.write("<p bgcolor='red'>The page to render (PageResult) must be set in the request attribute '" +
-            LayoutConstants.ATTR_PAGE + "'</p>");
+                   LayoutConstants.ATTR_PAGE + "'</p>");
          out.flush();
          return;
       }
-      if (page.getRegion(regionName) == null)
+      if(page.getRegion(regionName) == null) // non-window display of content
       {
-         log.debug("no such region in this page. Page [" + page.getPageName() + "] Region [" + regionName + "]");
+         // create a new region obj, based on region name
+         Region newRegion = new Region(regionName, regionCssId, RegionOrientation.DEFAULT);
+/*
+         if(regionName.equals("utility"))
+         {
+            out.write("<div id=\"utilitynavigation\"><a href=\"#\" class=\"addcontent\">Add Content</a></div>");
+         }
+*/
+         RenderContext renderContext = (RenderContext) request.getAttribute(LayoutConstants.ATTR_RENDERCONTEXT);
+         renderContext = renderContext.getContext(newRegion, regionCssId, orientation);
+         try
+         {
+            renderContext.render();
+            out.write(renderContext.getMarkupFragment().toString());
+            out.flush();
+         }
+         catch(RenderException e)
+         {
+            throw new JspException(e);
+         }
          return;
       }
-      RenderContext renderContext = (RenderContext)request.getAttribute(LayoutConstants.ATTR_RENDERCONTEXT);
-      if (renderContext == null)
+
+      // window-centric display of content
+      RenderContext renderContext = (RenderContext) request.getAttribute(LayoutConstants.ATTR_RENDERCONTEXT);
+      if(renderContext == null)
       {
          log.debug("no render context available in request");
          return;
@@ -103,7 +125,7 @@
          out.write(renderContext.getMarkupFragment().toString());
          out.flush();
       }
-      catch (RenderException e)
+      catch(RenderException e)
       {
          throw new JspException(e);
       }
@@ -120,7 +142,7 @@
     */
    public void setOrientation(String orientation)
    {
-      if (orientation == null)
+      if(orientation == null)
       {
          log.error("no null value allowed");
       }
@@ -129,7 +151,7 @@
       {
          this.orientation = RegionOrientation.parseOrientation(orientation);
       }
-      catch (IllegalArgumentException e)
+      catch(IllegalArgumentException e)
       {
          log.error(e);
          this.orientation = RegionOrientation.DEFAULT;




More information about the jboss-svn-commits mailing list