You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2005/01/24 15:18:54 UTC

svn commit: r126285 - in cocoon/trunk/src: blocks/portal/samples/coplets/login blocks/portal/samples/profiles/copletinstancedata blocks/portal/samples/profiles/layout blocks/portal/samples/resources blocks/portal/samples/skins/basic/styles blocks/portal/samples/skins/common/images blocks/portal/samples/skins/common/styles core/java/org/apache/cocoon/core/container/handler

Author: cziegeler
Date: Mon Jan 24 06:18:52 2005
New Revision: 126285

URL: http://svn.apache.org/viewcvs?view=rev&rev=126285
Log:
Improved layout
Added:
   cocoon/trunk/src/blocks/portal/samples/skins/basic/styles/borderless-window.xsl   (contents, props changed)
   cocoon/trunk/src/blocks/portal/samples/skins/common/styles/borderless-window.xsl   (contents, props changed)
   cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/NewPoolableComponentHandler.java   (contents, props changed)
Modified:
   cocoon/trunk/src/blocks/portal/samples/coplets/login/login.xml
   cocoon/trunk/src/blocks/portal/samples/profiles/copletinstancedata/portal-user-anonymous.xml
   cocoon/trunk/src/blocks/portal/samples/profiles/layout/portal-user-anonymous.xml
   cocoon/trunk/src/blocks/portal/samples/resources/login.xml
   cocoon/trunk/src/blocks/portal/samples/skins/common/images/customize.gif
   cocoon/trunk/src/blocks/portal/samples/skins/common/images/delete.gif
   cocoon/trunk/src/blocks/portal/samples/skins/common/images/maximize.gif
   cocoon/trunk/src/blocks/portal/samples/skins/common/images/minimize.gif
   cocoon/trunk/src/blocks/portal/samples/skins/common/images/show.gif
   cocoon/trunk/src/blocks/portal/samples/skins/common/styles/login-html.xsl
   cocoon/trunk/src/blocks/portal/samples/skins/common/styles/portal-page.xsl
   cocoon/trunk/src/blocks/portal/samples/skins/common/styles/window.xsl

Modified: cocoon/trunk/src/blocks/portal/samples/coplets/login/login.xml
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/samples/coplets/login/login.xml?view=diff&rev=126285&p1=cocoon/trunk/src/blocks/portal/samples/coplets/login/login.xml&r1=126284&p2=cocoon/trunk/src/blocks/portal/samples/coplets/login/login.xml&r2=126285
==============================================================================
--- cocoon/trunk/src/blocks/portal/samples/coplets/login/login.xml	(original)
+++ cocoon/trunk/src/blocks/portal/samples/coplets/login/login.xml	Mon Jan 24 06:18:52 2005
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
-  Copyright 1999-2004 The Apache Software Foundation
+  Copyright 1999-2005 The Apache Software Foundation
 
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
@@ -15,15 +15,16 @@
   limitations under the License.
 -->
 
-<!-- $Id: login.xml,v 1.2 2004/03/06 02:25:58 antonio Exp $ 
+<!-- $Id$ 
  Description: The login form for the portal
 
 -->
 
 <content>
+      <h3>Personalized Area</h3>
 	<form>
 		<url>auth</url>
 		<field name="name" type="text" length="24" description="User"/>
-		<field name="password" type="password" length="10" description="Password"/>
+		<field name="password" type="password" length="24" description="Password"/>
 	</form>
 </content>

Modified: cocoon/trunk/src/blocks/portal/samples/profiles/copletinstancedata/portal-user-anonymous.xml
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/samples/profiles/copletinstancedata/portal-user-anonymous.xml?view=diff&rev=126285&p1=cocoon/trunk/src/blocks/portal/samples/profiles/copletinstancedata/portal-user-anonymous.xml&r1=126284&p2=cocoon/trunk/src/blocks/portal/samples/profiles/copletinstancedata/portal-user-anonymous.xml&r2=126285
==============================================================================
--- cocoon/trunk/src/blocks/portal/samples/profiles/copletinstancedata/portal-user-anonymous.xml	(original)
+++ cocoon/trunk/src/blocks/portal/samples/profiles/copletinstancedata/portal-user-anonymous.xml	Mon Jan 24 06:18:52 2005
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  Copyright 1999-2004 The Apache Software Foundation
+  Copyright 1999-2005 The Apache Software Foundation
 
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<!-- SVN $Id:$ -->
+<!-- SVN $Id$ -->
 <coplets>
    <coplet-instance-data id="Portal-Intro-1" name="standard">
       <coplet-data>Portal-Intro</coplet-data>
@@ -28,10 +28,6 @@
    <coplet-instance-data id="Portal-Bottom-1" name="standard">
       <coplet-data>Portal-Bottom</coplet-data>
    </coplet-instance-data>
-   <coplet-instance-data id="Portal-Demo-1" name="standard">
-      <coplet-data>Portal-Demo</coplet-data>
-   </coplet-instance-data>
-
    <coplet-instance-data id="Login-1" name="standard">
       <coplet-data>Login</coplet-data>
    </coplet-instance-data>

Modified: cocoon/trunk/src/blocks/portal/samples/profiles/layout/portal-user-anonymous.xml
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/samples/profiles/layout/portal-user-anonymous.xml?view=diff&rev=126285&p1=cocoon/trunk/src/blocks/portal/samples/profiles/layout/portal-user-anonymous.xml&r1=126284&p2=cocoon/trunk/src/blocks/portal/samples/profiles/layout/portal-user-anonymous.xml&r2=126285
==============================================================================
--- cocoon/trunk/src/blocks/portal/samples/profiles/layout/portal-user-anonymous.xml	(original)
+++ cocoon/trunk/src/blocks/portal/samples/profiles/layout/portal-user-anonymous.xml	Mon Jan 24 06:18:52 2005
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  Copyright 1999-2004 The Apache Software Foundation
+  Copyright 1999-2005 The Apache Software Foundation
 
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
@@ -14,13 +14,13 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<!-- SVN $Id:$ -->
+<!-- SVN $Id$ -->
 <composite-layout name="row">
   <item>
     <composite-layout name="column">
       <item>
         <parameter name="width" value="60%"/>
-        <coplet-layout name="coplet">
+        <coplet-layout name="coplet" layout-renderer-name="borderless-window">
           <coplet-instance-data>Portal-Intro-1</coplet-instance-data>
         </coplet-layout>
       </item>
@@ -37,13 +37,13 @@
     <composite-layout name="column">
       <item>
         <parameter name="width" value="25%"/>
-        <coplet-layout name="coplet">
+        <coplet-layout name="coplet" layout-renderer-name="borderless-window">
           <coplet-instance-data>Portal-Left-1</coplet-instance-data>
         </coplet-layout>
       </item>
       <item>
         <parameter name="width" value="75%"/>
-        <coplet-layout name="coplet">
+        <coplet-layout name="coplet" layout-renderer-name="borderless-window">
           <coplet-instance-data>Portal-Right-1</coplet-instance-data>
         </coplet-layout>
       </item>
@@ -51,7 +51,7 @@
   </item>
   <item>
     <parameter name="height" value="500"/>
-    <coplet-layout name="coplet">
+    <coplet-layout name="coplet" layout-renderer-name="borderless-window">
       <coplet-instance-data>Portal-Bottom-1</coplet-instance-data>
     </coplet-layout>
   </item>

Modified: cocoon/trunk/src/blocks/portal/samples/resources/login.xml
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/samples/resources/login.xml?view=diff&rev=126285&p1=cocoon/trunk/src/blocks/portal/samples/resources/login.xml&r1=126284&p2=cocoon/trunk/src/blocks/portal/samples/resources/login.xml&r2=126285
==============================================================================
--- cocoon/trunk/src/blocks/portal/samples/resources/login.xml	(original)
+++ cocoon/trunk/src/blocks/portal/samples/resources/login.xml	Mon Jan 24 06:18:52 2005
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
-  Copyright 1999-2004 The Apache Software Foundation
+  Copyright 1999-2005 The Apache Software Foundation
 
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
@@ -15,7 +15,7 @@
   limitations under the License.
 -->
 
-<!-- $Id: login.xml,v 1.3 2004/03/06 02:26:05 antonio Exp $ 
+<!-- $Id$ 
  Description: The login form for the portal
 
 -->
@@ -24,6 +24,6 @@
 	<form>
 		<url>auth</url>
 		<field name="name" type="text" length="24" description="User"/>
-		<field name="password" type="password" length="10" description="Password"/>
+		<field name="password" type="password" length="24" description="Password"/>
 	</form>
 </content>

Added: cocoon/trunk/src/blocks/portal/samples/skins/basic/styles/borderless-window.xsl
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/samples/skins/basic/styles/borderless-window.xsl?view=auto&rev=126285
==============================================================================
--- (empty file)
+++ cocoon/trunk/src/blocks/portal/samples/skins/basic/styles/borderless-window.xsl	Mon Jan 24 06:18:52 2005
@@ -0,0 +1,128 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 1999-2005 The Apache Software Foundation
+
+  Licensed 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.
+-->
+<!-- SVN $Id$ -->
+<xsl:stylesheet version="1.0" 
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:template match="window">
+
+<xsl:variable name="bgColor">
+  <xsl:choose>
+    <xsl:when test="@bgColor">
+        <xsl:value-of select="@bgColor" />
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:text>#CCCCCC</xsl:text>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:variable>
+
+<table border="0" cellSpacing="0" cellpadding="0" width="100%">
+	<tr vAlign="top">
+		<td bgColor="{$bgColor}" valign="middle">
+			<font>
+				<xsl:attribute name="color">#ffffff</xsl:attribute>
+				<xsl:attribute name="face">Arial</xsl:attribute>
+				<xsl:attribute name="size">2</xsl:attribute>	
+				<xsl:choose>
+				    <xsl:when test="@title">
+					    <b><xsl:value-of select="@title"/></b>
+					</xsl:when>
+				    <xsl:otherwise>
+					    <b><xsl:value-of select="title"/></b>
+					</xsl:otherwise>
+				</xsl:choose>	
+			</font>
+	    </td>
+		<td align="right" bgColor="{$bgColor}">
+			<xsl:if test="basket-add-link">
+				<a href="{basket-add-link}">
+	  			    <img src="images/basket.gif" border="0" alt="Add Link"/>
+	  			</a>
+			</xsl:if>
+			<xsl:if test="basket-add-content">
+				<a href="{basket-add-content}">
+	  			    <img src="images/basket.gif" border="0" alt="Add Content"/>
+	  			</a>
+			</xsl:if>
+			<xsl:if test="edit-uri">
+				<a href="{edit-uri}">
+	  			    <img src="images/edit.gif" border="0" alt="Edit"/>
+	  			</a>
+			</xsl:if>
+			<xsl:if test="help-uri">
+				<a href="{help-uri}">
+	  			    <img src="images/help.gif" border="0" alt="Help"/>
+	  			</a>
+			</xsl:if>
+			<xsl:if test="view-uri">
+				<a href="{view-uri}">
+	  			    <img src="images/view.gif" border="0" alt="View"/>
+	  			</a>
+			</xsl:if>
+			<xsl:if test="fullscreen-uri and not(maximize-uri)">
+				<a href="{fullscreen-uri}">
+	  			    <img src="images/customize.gif" border="0" alt="Full Screen"/>
+	  			</a>
+			</xsl:if>
+			<xsl:if test="maxpage-uri">
+				<a href="{maxpage-uri}">
+	  			    <img src="images/show.gif" border="0" alt="Max Page"/>
+	  			</a>
+			</xsl:if>
+			<xsl:if test="minpage-uri">
+				<a href="{minpage-uri}">
+	  			    <img src="images/show.gif" border="0" alt="Min Page"/>
+	  			</a>
+			</xsl:if>
+			<xsl:if test="maximize-uri">
+				<a href="{maximize-uri}">
+	  			    <img src="images/maximize.gif" border="0" alt="Maximize"/>
+	  			</a>
+			</xsl:if>
+			<xsl:if test="minimize-uri">
+				<a href="{minimize-uri}">
+	  			    <img src="images/minimize.gif" border="0" alt="Minimize"/>
+	  			</a>
+			</xsl:if>
+			<xsl:if test="remove-uri">
+				<a href="{remove-uri}">
+	  			    <img src="images/delete.gif" border="0" alt="Delete"/>
+	  			</a>
+			</xsl:if>
+		</td>
+	</tr>
+	<tr>
+		<td colSpan="2">
+               <xsl:apply-templates select="content"/>
+		</td>
+	</tr>
+</table>
+</xsl:template>
+
+<xsl:template match="content">
+    <xsl:apply-templates/>
+</xsl:template>
+
+<!-- Copy all and apply templates -->
+<xsl:template match="@*|node()">
+  <xsl:copy>
+    <xsl:apply-templates select="@*|node()" />
+  </xsl:copy>
+</xsl:template>
+
+</xsl:stylesheet>

Modified: cocoon/trunk/src/blocks/portal/samples/skins/common/images/customize.gif
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/samples/skins/common/images/customize.gif?view=diff&rev=126285&p1=cocoon/trunk/src/blocks/portal/samples/skins/common/images/customize.gif&r1=126284&p2=cocoon/trunk/src/blocks/portal/samples/skins/common/images/customize.gif&r2=126285
==============================================================================
Binary files. No diff available.

Modified: cocoon/trunk/src/blocks/portal/samples/skins/common/images/delete.gif
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/samples/skins/common/images/delete.gif?view=diff&rev=126285&p1=cocoon/trunk/src/blocks/portal/samples/skins/common/images/delete.gif&r1=126284&p2=cocoon/trunk/src/blocks/portal/samples/skins/common/images/delete.gif&r2=126285
==============================================================================
Binary files. No diff available.

Modified: cocoon/trunk/src/blocks/portal/samples/skins/common/images/maximize.gif
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/samples/skins/common/images/maximize.gif?view=diff&rev=126285&p1=cocoon/trunk/src/blocks/portal/samples/skins/common/images/maximize.gif&r1=126284&p2=cocoon/trunk/src/blocks/portal/samples/skins/common/images/maximize.gif&r2=126285
==============================================================================
Binary files. No diff available.

Modified: cocoon/trunk/src/blocks/portal/samples/skins/common/images/minimize.gif
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/samples/skins/common/images/minimize.gif?view=diff&rev=126285&p1=cocoon/trunk/src/blocks/portal/samples/skins/common/images/minimize.gif&r1=126284&p2=cocoon/trunk/src/blocks/portal/samples/skins/common/images/minimize.gif&r2=126285
==============================================================================
Binary files. No diff available.

Modified: cocoon/trunk/src/blocks/portal/samples/skins/common/images/show.gif
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/samples/skins/common/images/show.gif?view=diff&rev=126285&p1=cocoon/trunk/src/blocks/portal/samples/skins/common/images/show.gif&r1=126284&p2=cocoon/trunk/src/blocks/portal/samples/skins/common/images/show.gif&r2=126285
==============================================================================
Binary files. No diff available.

Added: cocoon/trunk/src/blocks/portal/samples/skins/common/styles/borderless-window.xsl
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/samples/skins/common/styles/borderless-window.xsl?view=auto&rev=126285
==============================================================================
--- (empty file)
+++ cocoon/trunk/src/blocks/portal/samples/skins/common/styles/borderless-window.xsl	Mon Jan 24 06:18:52 2005
@@ -0,0 +1,158 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 1999-2005 The Apache Software Foundation
+
+  Licensed 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.
+-->
+<!-- SVN $Id$ -->
+<xsl:stylesheet version="1.0" 
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:template match="window">
+
+<xsl:variable name="bgColor">
+  <xsl:choose>
+    <xsl:when test="@bgColor">
+        <xsl:value-of select="@bgColor" />
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:text>#294563</xsl:text>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:variable>
+
+  <table cellSpacing="0" cellpadding="0" width="100%" border="0"><tbody>
+    <tr vAlign="top" height="20">
+      <td width="5" style="background-color:#294563;" valign="top">
+        <img src="images/window-top-left.gif" border="0" width="5" height="5" alt="top-left"/>
+      </td>
+      <td bgColor="{$bgColor}" align="left" valign="middle">
+        <font color="#ffffff" face="Arial" size="2"><b>
+          <xsl:choose>
+            <xsl:when test="@title">
+              <xsl:value-of select="@title"/>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:value-of select="title"/>
+            </xsl:otherwise>
+          </xsl:choose>	
+        </b></font>
+      </td>
+      <td align="right" valign="middle" bgColor="{$bgColor}">
+        <table cellSpacing="0" cellpadding="0" border="0"><tbody><tr>
+          <xsl:if test="basket-add-link">
+            <td width="15">
+              <a href="{basket-add-link}">
+                <img src="images/basket.gif" border="0" alt="Add Link"/>
+              </a>
+            </td>
+          </xsl:if>
+          <xsl:if test="basket-add-content">
+            <td width="15">
+              <a href="{basket-add-content}">
+                <img src="images/basket.gif" border="0" alt="Add Content"/>
+              </a>
+            </td>
+          </xsl:if>
+          <xsl:if test="edit-uri">
+            <td width="15">
+              <a href="{edit-uri}">
+                <img src="images/edit.gif" border="0" alt="Edit"/>
+              </a>
+            </td>
+          </xsl:if>
+          <xsl:if test="help-uri">
+            <td width="15">
+              <a href="{help-uri}">
+                <img src="images/help.gif" border="0" alt="Help"/>
+              </a>
+            </td>
+          </xsl:if>
+          <xsl:if test="view-uri">
+            <td width="15">
+              <a href="{view-uri}">
+                <img src="images/view.gif" border="0" alt="View"/>
+              </a>
+            </td>
+          </xsl:if>
+          <xsl:if test="fullscreen-uri and not(maximize-uri)">
+            <td width="15">
+              <a href="{fullscreen-uri}">
+                <img src="images/customize.gif" border="0" alt="Full Screen"/>
+              </a>
+            </td>
+          </xsl:if>
+          <xsl:if test="maxpage-uri">
+            <td width="15">
+              <a href="{maxpage-uri}">
+                <img src="images/show.gif" border="0" alt="Max Page"/>
+              </a>
+            </td>
+          </xsl:if>
+          <xsl:if test="minpage-uri">
+            <td width="15">
+              <a href="{minpage-uri}">
+                <img src="images/show.gif" border="0" alt="Min Page"/>
+              </a>
+            </td>
+          </xsl:if>
+          <xsl:if test="maximize-uri">
+            <td width="15">
+              <a href="{maximize-uri}">
+                <img src="images/maximize.gif" border="0" alt="Maximize"/>
+              </a>
+            </td>
+          </xsl:if>
+          <xsl:if test="minimize-uri">
+            <td width="15">
+              <a href="{minimize-uri}">
+                <img src="images/minimize.gif" border="0" alt="Minimize"/>
+              </a>
+            </td>
+          </xsl:if>
+          <xsl:if test="remove-uri">
+            <td width="15">
+              <a href="{remove-uri}">
+                <img src="images/delete.gif" border="0" alt="Delete"/>
+              </a>
+            </td>
+          </xsl:if>
+        </tr></tbody></table>
+      </td>
+      <td width="5" style="background-color:#294563;" valign="top">
+        <img src="images/window-top-right.gif" border="0" width="5" height="5" alt="top-right"/>
+      </td>
+      <td width="1"/>
+    </tr>
+    <tr>
+      <td width="5"></td>
+      <td colSpan="2">
+        <xsl:apply-templates select="content"/>
+      </td>
+      <td width="6" colSpan="2"></td>
+    </tr>
+  </tbody></table>
+</xsl:template>
+
+<xsl:template match="content">
+    <xsl:apply-templates/>
+</xsl:template>
+
+<!-- Copy all and apply templates -->
+<xsl:template match="@*|node()">
+  <xsl:copy>
+    <xsl:apply-templates select="@*|node()" />
+  </xsl:copy>
+</xsl:template>
+
+</xsl:stylesheet>

Modified: cocoon/trunk/src/blocks/portal/samples/skins/common/styles/login-html.xsl
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/samples/skins/common/styles/login-html.xsl?view=diff&rev=126285&p1=cocoon/trunk/src/blocks/portal/samples/skins/common/styles/login-html.xsl&r1=126284&p2=cocoon/trunk/src/blocks/portal/samples/skins/common/styles/login-html.xsl&r2=126285
==============================================================================
--- cocoon/trunk/src/blocks/portal/samples/skins/common/styles/login-html.xsl	(original)
+++ cocoon/trunk/src/blocks/portal/samples/skins/common/styles/login-html.xsl	Mon Jan 24 06:18:52 2005
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
-  Copyright 1999-2004 The Apache Software Foundation
+  Copyright 1999-2005 The Apache Software Foundation
 
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
@@ -15,7 +15,7 @@
   limitations under the License.
 -->
 
-<!--+ $Id: login-html.xsl,v 1.5 2004/03/06 02:25:56 antonio Exp $ 
+<!--+ $Id$ 
     |
     | Description: Login page to HTML
     |
@@ -77,10 +77,10 @@
 
 <xsl:template match="field">
 	<tr>
-		<td>
+		<td align="left">
 			<xsl:value-of select="@description"/>:
 		</td>
-		<td>
+		<td align="left">
 			<input>
 				<xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
 				<xsl:attribute name="type"><xsl:value-of select="@type"/></xsl:attribute>

Modified: cocoon/trunk/src/blocks/portal/samples/skins/common/styles/portal-page.xsl
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/samples/skins/common/styles/portal-page.xsl?view=diff&rev=126285&p1=cocoon/trunk/src/blocks/portal/samples/skins/common/styles/portal-page.xsl&r1=126284&p2=cocoon/trunk/src/blocks/portal/samples/skins/common/styles/portal-page.xsl&r2=126285
==============================================================================
--- cocoon/trunk/src/blocks/portal/samples/skins/common/styles/portal-page.xsl	(original)
+++ cocoon/trunk/src/blocks/portal/samples/skins/common/styles/portal-page.xsl	Mon Jan 24 06:18:52 2005
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
-  Copyright 1999-2004 The Apache Software Foundation
+  Copyright 1999-2005 The Apache Software Foundation
 
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
@@ -14,83 +14,74 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<!-- SVN $Id:$ -->
+<!-- SVN $Id$ -->
 <xsl:stylesheet version="1.0" 
                 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
 <xsl:param name="user"/>
+
 <xsl:template match="/">
-<html>
-	<head>
-		<link type="text/css" rel="stylesheet" href="css/page.css"/>
-	</head>
-	<body>
-	<table bgColor="#ffffff" border="0" cellPadding="0" cellSpacing="0" width="100%"><tbody> 
-	<!-- header row -->
-	<tr>
-	<td colspan="2"> 
-		<table border="0" cellPadding="0" cellSpacing="0" width="100%">
-		<tbody> 
-			<tr> 
-				<td colspan="2" noWrap="" height="1%" bgcolor="#294563">
-					<img height="5" src="images/space.gif" width="100%"/>
-				</td>
-			</tr>
-			<tr> 
-				<td colspan="2" bgcolor="#294563" height="98%" align="center" valign="middle" width="100%">
-					<img src="images/portal-logo.gif" width="250" height="90" />
-				</td>
-			</tr>
-			<tr valign="bottom"> 
-				<td height="99%" bgcolor="#294563" width="99%" align="right">
-				    <xsl:if test="$user!='anonymous'">
-    					<a href="logout"><img src="images/logout-door.gif" width="18" height="22" border="0"/></a>
-				    </xsl:if>
-					<img height="5" src="images/space.gif" width="5"/>
-				</td>
-				<td height="99%" bgcolor="#294563" width="1%" align="right">
-				    <xsl:if test="$user!='anonymous'">
-    					<a href="logout" style="color:#CFDCED;font-size:75%;">Logout</a>&#160;
-				    </xsl:if>
-					<img height="5" src="images/space.gif" width="5"/>
-				</td>
-			</tr>
-		</tbody>
-		</table>
-	</td>
-	</tr>
-	<!-- end header row -->
-	<!-- content/tab row -->
-	<tr>
-	<td>
-	  <xsl:apply-templates/>
-	</td>
-	</tr>
-	<!-- end content/tab row -->
-	<!-- footer row -->
-	<tr>
-	<td colspan="2"> 
-		<table border="0" cellPadding="0" cellSpacing="0" width="100%">
-			<tbody> 
-			<tr> 
-			<td colspan="2" noWrap="" height="10" bgcolor="#CFDCED">
-				<img height="1" src="images/space.gif" width="1"/>
-			</td>
-			</tr>
-			<tr> 
-			<td colspan="2" noWrap="" height="30" bgcolor="#294563">
-				<img height="1" src="images/space.gif" width="1"/>
-			</td>
-			</tr>
-			</tbody>
-		</table>
-	</td>
-	</tr>
-	<!-- end of footer row -->
-	</tbody>
-	</table>
-	</body>
-</html>
+  <html>
+    <head>
+      <link type="text/css" rel="stylesheet" href="css/page.css"/>
+    </head>
+    <body>
+      <table bgColor="#ffffff" border="0" cellPadding="0" cellSpacing="0" width="100%"><tbody> 
+        <!-- header row -->
+        <tr>
+          <td colspan="2"> 
+            <table border="0" cellPadding="0" cellSpacing="0" width="100%"><tbody> 
+              <tr>
+                <td colspan="2" noWrap="" height="1%" bgcolor="#294563">
+                  <img height="5" src="images/space.gif" width="100%"/>
+                </td>
+              </tr>
+              <tr> 
+                <td colspan="2" bgcolor="#294563" height="98%" align="center" valign="middle" width="100%">
+                  <img src="images/portal-logo.gif" width="250" height="90" />
+                </td>
+              </tr>
+              <tr valign="bottom"> 
+                <td height="99%" bgcolor="#294563" width="99%" align="right">
+                  <xsl:if test="$user!='anonymous'">
+                    <a href="logout"><img src="images/logout-door.gif" width="18" height="22" border="0"/></a>
+                  </xsl:if>
+                  <img height="5" src="images/space.gif" width="5"/>
+                </td>
+                <td height="99%" bgcolor="#294563" width="1%" align="right">
+                  <xsl:if test="$user!='anonymous'">
+                    <a href="logout" style="color:#CFDCED;font-size:75%;">Logout</a>&#160;
+                  </xsl:if>
+                  <img height="5" src="images/space.gif" width="5"/>
+                </td>
+              </tr>
+            </tbody></table>
+          </td>
+        </tr>
+        <!-- end header row -->
+        <!-- content/tab row -->
+        <tr>
+          <td>
+            <xsl:apply-templates/>
+          </td>
+        </tr>
+        <!-- end content/tab row -->
+        <!-- footer row -->
+        <tr>
+          <td colspan="2"> 
+            <table border="0" cellPadding="0" cellSpacing="0" width="100%"><tbody> 
+              <tr> 
+                <td colspan="2" noWrap="" height="30" bgcolor="#294563">
+                  <img height="1" src="images/space.gif" width="1"/>
+                </td>
+              </tr>
+            </tbody></table>
+          </td>
+        </tr>
+        <!-- end of footer row -->
+      </tbody></table>
+    </body>
+  </html>
 
 </xsl:template>
 

Modified: cocoon/trunk/src/blocks/portal/samples/skins/common/styles/window.xsl
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/portal/samples/skins/common/styles/window.xsl?view=diff&rev=126285&p1=cocoon/trunk/src/blocks/portal/samples/skins/common/styles/window.xsl&r1=126284&p2=cocoon/trunk/src/blocks/portal/samples/skins/common/styles/window.xsl&r2=126285
==============================================================================
--- cocoon/trunk/src/blocks/portal/samples/skins/common/styles/window.xsl	(original)
+++ cocoon/trunk/src/blocks/portal/samples/skins/common/styles/window.xsl	Mon Jan 24 06:18:52 2005
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!--
-  Copyright 1999-2004 The Apache Software Foundation
+  Copyright 1999-2005 The Apache Software Foundation
 
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<!-- SVN $Id:$ -->
+<!-- SVN $Id$ -->
 <xsl:stylesheet version="1.0" 
                 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
@@ -31,96 +31,122 @@
   </xsl:choose>
 </xsl:variable>
 
-<table cellSpacing="0" cellpadding="0" width="100%">
-	<tr vAlign="top">
-		<td width="5" style="background-color:#294563;" valign="top"><img src="images/window-top-left.gif" border="0" width="5" height="5" alt="top-left"/></td>
-		<td bgColor="{$bgColor}" valign="middle">
-			<font>
-				<xsl:attribute name="color">#ffffff</xsl:attribute>
-				<xsl:attribute name="face">Arial</xsl:attribute>
-				<xsl:attribute name="size">2</xsl:attribute>	
-				<xsl:choose>
-				    <xsl:when test="@title">
-					    <b><xsl:value-of select="@title"/></b>
-					</xsl:when>
-				    <xsl:otherwise>
-					    <b><xsl:value-of select="title"/></b>
-					</xsl:otherwise>
-				</xsl:choose>	
-			</font>
-	    </td>
-		<td align="right" bgColor="{$bgColor}">
+  <table cellSpacing="0" cellpadding="0" width="100%" border="0"><tbody>
+    <tr vAlign="top" height="20">
+      <td width="5" style="background-color:#294563;" valign="top">
+        <img src="images/window-top-left.gif" border="0" width="5" height="5" alt="top-left"/>
+      </td>
+      <td bgColor="{$bgColor}" align="left" valign="middle">
+        <font color="#ffffff" face="Arial" size="2"><b>
+          <xsl:choose>
+            <xsl:when test="@title">
+              <xsl:value-of select="@title"/>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:value-of select="title"/>
+            </xsl:otherwise>
+          </xsl:choose>	
+        </b></font>
+       </td>
+      <td align="right" valign="middle" bgColor="{$bgColor}">
+        <table cellSpacing="0" cellpadding="0" border="0"><tbody><tr>
 			<xsl:if test="basket-add-link">
+            <td width="15">
 				<a href="{basket-add-link}">
 	  			    <img src="images/basket.gif" border="0" alt="Add Link"/>
 	  			</a>
+            </td>
 			</xsl:if>
 			<xsl:if test="basket-add-content">
+            <td width="15">
 				<a href="{basket-add-content}">
 	  			    <img src="images/basket.gif" border="0" alt="Add Content"/>
 	  			</a>
+            </td>
 			</xsl:if>
 			<xsl:if test="edit-uri">
+            <td width="15">
 				<a href="{edit-uri}">
 	  			    <img src="images/edit.gif" border="0" alt="Edit"/>
 	  			</a>
+            </td>
 			</xsl:if>
 			<xsl:if test="help-uri">
+            <td width="15">
 				<a href="{help-uri}">
 	  			    <img src="images/help.gif" border="0" alt="Help"/>
 	  			</a>
+            </td>
 			</xsl:if>
 			<xsl:if test="view-uri">
+            <td width="15">
 				<a href="{view-uri}">
 	  			    <img src="images/view.gif" border="0" alt="View"/>
 	  			</a>
+            </td>
 			</xsl:if>
 			<xsl:if test="fullscreen-uri and not(maximize-uri)">
+            <td width="15">
 				<a href="{fullscreen-uri}">
 	  			    <img src="images/customize.gif" border="0" alt="Full Screen"/>
 	  			</a>
+            </td>
 			</xsl:if>
 			<xsl:if test="maxpage-uri">
+            <td width="15">
 				<a href="{maxpage-uri}">
 	  			    <img src="images/show.gif" border="0" alt="Max Page"/>
 	  			</a>
+            </td>
 			</xsl:if>
 			<xsl:if test="minpage-uri">
+            <td width="15">
 				<a href="{minpage-uri}">
 	  			    <img src="images/show.gif" border="0" alt="Min Page"/>
 	  			</a>
+            </td>
 			</xsl:if>
 			<xsl:if test="maximize-uri">
+            <td width="15">
 				<a href="{maximize-uri}">
 	  			    <img src="images/maximize.gif" border="0" alt="Maximize"/>
 	  			</a>
+            </td>
 			</xsl:if>
 			<xsl:if test="minimize-uri">
+            <td width="15">
 				<a href="{minimize-uri}">
 	  			    <img src="images/minimize.gif" border="0" alt="Minimize"/>
 	  			</a>
+            </td>
 			</xsl:if>
 			<xsl:if test="remove-uri">
+            <td width="15">
 				<a href="{remove-uri}">
 	  			    <img src="images/delete.gif" border="0" alt="Delete"/>
 	  			</a>
+            </td>
 			</xsl:if>
-		</td>
-		<td width="5" style="background-color:#294563;" valign="top"><img src="images/window-top-right.gif" border="0" width="5" height="5" alt="top-right"/></td>
-	</tr>
-	<tr>
+        </tr></tbody></table>
+       </td>
+       <td width="5" style="background-color:#294563;" valign="top">
+         <img src="images/window-top-right.gif" border="0" width="5" height="5" alt="top-right"/>
+       </td>
+       <td width="1"/>
+     </tr>
+     <tr>
 		<td width="5" style="background-image:url(images/window-border-left.gif);"><img src="images/space.gif" border="0" width="5" height="5" alt="space"/></td>
 		<td colSpan="2">
                <xsl:apply-templates select="content"/>
 		</td>
-		<td width="5" style="background-image:url(images/window-border-right.gif);"><img src="images/space.gif" border="0" width="5" height="5" alt="space"/></td>
+		<td width="6" colSpan="2" style="background-image:url(images/window-border-right.gif);"><img src="images/space.gif" border="0" width="5" height="5" alt="space"/></td>
 	</tr>
 	<tr>
 		<td width="5"><img src="images/window-bottom-left.gif" border="0" width="5" height="5" alt="top-left"/></td>
 		<td colspan="2" style="background-image:url(images/window-border-bottom.gif);"></td>
 		<td width="5"><img src="images/window-bottom-right.gif" border="0" width="5" height="5" alt="top-left"/></td>
 	</tr>
-</table>
+  </tbody></table>
 </xsl:template>
 
 <xsl:template match="content">

Added: cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/NewPoolableComponentHandler.java
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/NewPoolableComponentHandler.java?view=auto&rev=126285
==============================================================================
--- (empty file)
+++ cocoon/trunk/src/core/java/org/apache/cocoon/core/container/handler/NewPoolableComponentHandler.java	Mon Jan 24 06:18:52 2005
@@ -0,0 +1,313 @@
+/* 
+ * Copyright 2002-2005 The Apache Software Foundation
+ * Licensed  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.cocoon.core.container.handler;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Set;
+
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.cocoon.components.ComponentInfo;
+import org.apache.cocoon.core.container.ComponentFactory;
+
+/**
+ * The PoolableComponentHandler to make sure that poolable components are initialized
+ * destroyed and pooled correctly.
+ * <p>
+ * Components which implement Poolable may be configured to be pooled using the following
+ *  example configuration.  This example assumes that the user component class MyComp
+ *  implements Poolable.
+ * <p>
+ * Configuration Example:
+ * <pre>
+ *   &lt;my-comp pool-max="8"/&gt;
+ * </pre>
+ * <p>
+ * Roles Example:
+ * <pre>
+ *   &lt;role name="com.mypkg.MyComponent"
+ *         shorthand="my-comp"
+ *         default-class="com.mypkg.DefaultMyComponent"/&gt;
+ * </pre>
+ * <p>
+ * Configuration Attributes:
+ * <ul>
+ * <li>The <code>pool-max</code> attribute is used to set the maximum number of components which
+ *  will be pooled. (Defaults to "8") If additional instances are required, they're created,
+ *  but not pooled.</li>
+ * </ul>
+ *
+ * @version CVS $Id$
+ */
+public class NewPoolableComponentHandler
+extends AbstractFactoryHandler {
+    
+    /** The default max size of the pool */
+    public static final int DEFAULT_MAX_POOL_SIZE = 8;
+
+    /**
+     * Object used to synchronize access to the get and put methods
+     */
+    protected final Object semaphore = new Object();
+
+    /**
+     * The maximum size of the pool.
+     */
+    private final int max;
+
+    /**
+     * List of the Poolable instances which are available for use.
+     */
+    private LinkedList ready;
+
+    /**
+     * Store the size of the ready list to optimize operations which require this value.
+     */
+    private int readySize;
+
+    /**
+     * Total number of Poolable instances in the pool
+     */
+    private int size;
+    
+    /**
+     * Create a PoolableComponentHandler which manages a pool of Components
+     *  created by the specified factory object.
+     *
+     * @param factory The factory object which is responsible for creating the components
+     *                managed by the ComponentHandler.
+     * @param config The configuration to use to configure the pool.
+     */
+    public NewPoolableComponentHandler( final ComponentInfo info,
+                                     final Logger logger,
+                                     final ComponentFactory factory,
+                                     final Configuration config )
+    throws Exception {
+        super(info, logger, factory);
+
+        final int poolMax = config.getAttributeAsInteger( "pool-max", DEFAULT_MAX_POOL_SIZE );
+        this.max = ( poolMax <= 0 ? Integer.MAX_VALUE : poolMax );
+
+        // Create the pool lists.
+        this.ready = new LinkedList();
+    }
+
+    /**
+     * Dispose of the ComponentHandler and any associated Pools and Factories.
+     */
+    public void dispose() {
+        super.dispose();
+
+        // Any Poolables in the m_ready list need to be disposed of
+        synchronized( this.semaphore ) {
+            // Remove objects in the ready list.
+            for( Iterator iter = this.ready.iterator(); iter.hasNext(); ) {
+                Object poolable = iter.next();
+                iter.remove();
+                this.readySize--;
+                this.permanentlyRemovePoolable( poolable );
+            }
+
+            if( ( this.size > 0 ) && this.logger.isDebugEnabled() ) {
+                this.logger.debug( "There were " + this.size
+                                   + " outstanding objects when the pool was disposed." );
+            }
+        }
+    }
+    
+    /**
+     * Permanently removes a poolable from the pool's active list and
+     *  destroys it so that it will not ever be reused.
+     * <p>
+     * This method is only called by threads that have m_semaphore locked.
+     */
+    protected void permanentlyRemovePoolable( Object poolable ) {
+        this.size--;
+        this.decommission( poolable );
+    }
+
+    /**
+     * Gets a Poolable from the pool.  If there is room in the pool, a new Poolable will be
+     *  created.  Depending on the parameters to the constructor, the method may block or throw
+     *  an exception if a Poolable is not available on the pool.
+     *
+     * @return Always returns a Poolable.  Contract requires that put must always be called with
+     *  the Poolable returned.
+     * @throws Exception An exception may be thrown as described above or if there is an exception
+     *  thrown by the ObjectFactory's newInstance() method.
+     */
+    protected Object doGet() throws Exception {
+        Object poolable;
+        synchronized( this.semaphore ) {
+            // Look for a Poolable at the end of the m_ready list
+            if( this.readySize > 0 ){
+                // A poolable is ready and waiting in the pool
+                poolable = this.ready.removeLast();
+                this.readySize--;
+            } else {
+                // Create a new poolable.  May throw an exception if the poolable can not be
+                //  instantiated.
+                poolable = this.factory.newInstance();
+                this.size++;
+
+                if( this.logger.isDebugEnabled() ) {
+                    this.logger.debug( "Created a new " + poolable.getClass().getName()
+                                       + " from the object factory." );
+                }
+            }
+        }
+
+        this.factory.exitingPool(poolable);
+        
+        if( this.logger.isDebugEnabled() ) {
+            this.logger.debug( "Got a " + poolable.getClass().getName() + " from the pool." );
+        }
+
+        return createProxy(poolable);
+    }
+
+    /**
+     * Returns a poolable to the pool 
+     *
+     * @param poolable Poolable to return to the pool.
+     */
+    protected void doPut( final Object poolable ) {
+        try {
+            this.factory.enteringPool(poolable);
+        } catch (Exception ignore) {
+            this.logger.warn("Exception during putting component back into the pool.", ignore);
+        }
+
+        synchronized( this.semaphore ) {
+            if( this.size <= this.max ) {
+                if( this.disposed ) {
+                    // The pool has already been disposed.
+                    if( this.logger.isDebugEnabled() ) {
+                        this.logger.debug( "Put called for a " + poolable.getClass().getName()
+                                           + " after the pool was disposed." );
+                    }
+
+                    this.permanentlyRemovePoolable( poolable );
+                } else {
+                    // There is room in the pool to keep this poolable.
+                    if( this.logger.isDebugEnabled() ) {
+                        this.logger.debug( "Put a " + poolable.getClass().getName()
+                                           + " back into the pool." );
+                    }
+
+                    this.ready.addLast( poolable );
+                    this.readySize++;
+
+                }
+            } else {
+                // More Poolables were created than can be held in the pool, so remove.
+                if( this.logger.isDebugEnabled() ) {
+                    this.logger.debug( "No room to put a " + poolable.getClass().getName()
+                                       + " back into the pool, so remove it." );
+                }
+
+                this.permanentlyRemovePoolable( poolable );
+            }
+        }
+    }
+    
+    protected void doInitialize() {
+        // nothing to do here
+    }
+    
+    protected Object createProxy(Object component) {
+        Proxy.newProxyInstance(component.getClass().getClassLoader(), 
+                               this.guessWorkInterfaces(component.getClass()), 
+                               new ProxyHandler(component));
+        return component;
+    }
+
+    /**
+     * Get a list of interfaces to proxy by scanning through
+     * all interfaces a class implements and skipping invalid interfaces
+     * (as defined in {@link #INVALID_INTERFACES}).
+     *
+     * @param clazz the class
+     * @return the list of interfaces to proxy
+     */
+    protected Class[] guessWorkInterfaces( final Class clazz ) {
+        final HashSet workInterfaces = new HashSet();
+
+        // Get *all* interfaces
+        this.guessWorkInterfaces( clazz, workInterfaces );
+
+        return (Class[]) workInterfaces.toArray( new Class[workInterfaces.size()] );
+    }
+
+    /**
+     * Get a list of interfaces to proxy by scanning through
+     * all interfaces a class implements.
+     *
+     * @param clazz           the class
+     * @param workInterfaces  the set of current work interfaces
+     */
+    private void guessWorkInterfaces( final Class clazz,
+                                      final Set workInterfaces ) {
+        if ( null != clazz ) {
+            this.addInterfaces( clazz.getInterfaces(), workInterfaces );
+
+            this.guessWorkInterfaces( clazz.getSuperclass(), workInterfaces );
+        }
+    }
+
+    /**
+     * Get a list of interfaces to proxy by scanning through
+     * all interfaces a class implements.
+     *
+     * @param interfaces      the array of interfaces
+     * @param workInterfaces  the set of current work interfaces
+     */
+    private void addInterfaces( final Class[] interfaces,
+                                final Set workInterfaces ) {
+        for ( int i = 0; i < interfaces.length; i++ ) {
+            workInterfaces.add( interfaces[i] );
+            this.addInterfaces(interfaces[i].getInterfaces(), workInterfaces);
+        }
+    }
+
+    protected static final class ProxyHandler implements InvocationHandler {
+        
+        private final Object component;
+        
+        public ProxyHandler(Object component) {
+            this.component = component;
+        }
+        
+        /* (non-Javadoc)
+         * @see java.lang.reflect.InvocationHandler#invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])
+         */
+        public Object invoke(Object proxy, Method method, Object[] args)
+        throws Throwable {
+            try {
+                return method.invoke(component, args);
+            } catch (InvocationTargetException ite) {
+                throw ite.getTargetException();
+            }
+        }
+    }
+}