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 2004/09/01 13:29:12 UTC

svn commit: rev 37334 - in cocoon/branches/BRANCH_2_1_X/src/blocks/portal: conf java/org/apache/cocoon/portal/aspect/impl java/org/apache/cocoon/portal/coplet java/org/apache/cocoon/portal/factory/impl java/org/apache/cocoon/portal/layout java/org/apache/cocoon/portal/layout/impl

Author: cziegeler
Date: Wed Sep  1 04:29:10 2004
New Revision: 37334

Added:
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/TabbedLayoutImpl.java   (contents, props changed)
Modified:
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/conf/portal.samplesxconf
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/aspect/impl/AbstractAspectalizable.java
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletInstanceData.java
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/factory/impl/AbstractProducible.java
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractParameters.java
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/CompositeLayout.java
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Layout.java
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/NamedItem.java
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/CompositeLayoutImpl.java
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/CopletLayout.java
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/FrameLayout.java
   cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/LinkLayout.java
Log:
Add copy of layouts and coplets

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/conf/portal.samplesxconf
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/conf/portal.samplesxconf	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/conf/portal.samplesxconf	Wed Sep  1 04:29:10 2004
@@ -182,19 +182,19 @@
             </renderers>
         </layout>
         <layout name="tab" 
-                class="org.apache.cocoon.portal.layout.impl.CompositeLayoutImpl">
+                class="org.apache.cocoon.portal.layout.impl.TabbedLayoutImpl">
             <renderers default="tab">
                 <renderer name="tab"/>
             </renderers>
         </layout>
         <layout name="rawtab" 
-                class="org.apache.cocoon.portal.layout.impl.CompositeLayoutImpl">
+                class="org.apache.cocoon.portal.layout.impl.TabbedLayoutImpl">
             <renderers default="rawtab">
                 <renderer name="rawtab"/>
             </renderers>
         </layout>
         <layout name="linktab"
-                class="org.apache.cocoon.portal.layout.impl.CompositeLayoutImpl" >
+                class="org.apache.cocoon.portal.layout.impl.TabbedLayoutImpl" >
             <renderers default="linktab">
                 <renderer name="linktab"/>
             </renderers>

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/aspect/impl/AbstractAspectalizable.java
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/aspect/impl/AbstractAspectalizable.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/aspect/impl/AbstractAspectalizable.java	Wed Sep  1 04:29:10 2004
@@ -27,10 +27,10 @@
  * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
  * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
  * 
- * @version CVS $Id: AbstractAspectalizable.java,v 1.6 2004/03/05 13:02:09 bdelacretaz Exp $
+ * @version CVS $Id$
  */
 public abstract class AbstractAspectalizable 
-    implements Aspectalizable {
+    implements Aspectalizable, Cloneable {
 
     transient protected AspectDataHandler aspectDataHandler;
     
@@ -58,9 +58,8 @@
     public Map getPersistentAspectData(){
     	if (this.aspectDataHandler == null) {
 	    	return this.persistentDatas;
-    	} else {
-			return this.aspectDataHandler.getPersistentAspectDatas(this);
     	}
+			return this.aspectDataHandler.getPersistentAspectDatas(this);
     }
 
     /**
@@ -86,4 +85,21 @@
         this.persistentDatas.put(aspectName, data);
     }
 
+    /* (non-Javadoc)
+     * @see java.lang.Object#clone()
+     */
+    protected Object clone() throws CloneNotSupportedException {
+        AbstractAspectalizable clone = (AbstractAspectalizable)super.clone();
+        
+        clone.aspectDataHandler = this.aspectDataHandler;
+        final Map datas = this.aspectDataHandler.getAspectDatas(this);
+        final Iterator i = datas.entrySet().iterator();
+        while ( i.hasNext() ) {
+            final Map.Entry e = (Map.Entry)i.next();
+            clone.aspectDataHandler.setAspectData(clone, e.getKey().toString(), e.getValue());
+        }
+        clone.persistentDatas = this.persistentDatas;
+        
+        return clone;
+    }
 }

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletInstanceData.java
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletInstanceData.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletInstanceData.java	Wed Sep  1 04:29:10 2004
@@ -92,4 +92,18 @@
     public Map getTemporaryAttributes() {
         return this.temporaryAttributes;
     }
+    
+    /* (non-Javadoc)
+     * @see java.lang.Object#clone()
+     */
+    protected Object clone() throws CloneNotSupportedException {
+        CopletInstanceData clone = (CopletInstanceData)super.clone();
+        
+        clone.copletData = this.copletData;
+        clone.attributes = new HashMap(this.attributes);
+        clone.temporaryAttributes = new HashMap(this.temporaryAttributes);
+        
+        return clone;
+    }
+    
 }

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/factory/impl/AbstractProducible.java
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/factory/impl/AbstractProducible.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/factory/impl/AbstractProducible.java	Wed Sep  1 04:29:10 2004
@@ -26,7 +26,7 @@
  * 
  * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
  * 
- * @version CVS $Id: AbstractProducible.java,v 1.5 2004/03/05 13:02:12 bdelacretaz Exp $
+ * @version CVS $Id$
  */
 public abstract class AbstractProducible 
     extends AbstractAspectalizable 
@@ -83,4 +83,17 @@
         this.id = id;
     }
 
+    /* (non-Javadoc)
+     * @see java.lang.Object#clone()
+     */
+    protected Object clone() throws CloneNotSupportedException {
+        AbstractProducible clone = (AbstractProducible)super.clone();
+        
+        clone.name = this.name;
+        clone.id = this.id;
+        clone.description = this.description;
+        
+        return clone;
+    }
+    
 }

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java	Wed Sep  1 04:29:10 2004
@@ -25,7 +25,7 @@
  * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
  * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
  * 
- * @version CVS $Id: AbstractLayout.java,v 1.14 2004/03/05 13:02:13 bdelacretaz Exp $
+ * @version CVS $Id$
  */
 public abstract class AbstractLayout 
     extends AbstractProducible 
@@ -73,4 +73,30 @@
         return this.rendererName;
     }
 
+    
+    /* (non-Javadoc)
+     * @see java.lang.Object#clone()
+     */
+    protected Object clone() throws CloneNotSupportedException {
+        AbstractLayout clone = (AbstractLayout)super.clone();
+        
+        // we don't clone the parent; we just set it to null
+        clone.rendererName = this.rendererName;
+        clone.parameters = new LinkedMap(this.parameters);
+        clone.parent = null;
+        
+        return clone;
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.cocoon.portal.layout.Layout#copy(java.util.Map)
+     */
+    public Layout copy(Map copletInstanceDatas) {
+        try {
+            return (Layout)this.clone();
+        } catch (CloneNotSupportedException cnse) {
+            // ignore
+        }
+        return null;
+    }
 }

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractParameters.java
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractParameters.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractParameters.java	Wed Sep  1 04:29:10 2004
@@ -24,10 +24,10 @@
  * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
  * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
  * 
- * @version CVS $Id: AbstractParameters.java,v 1.5 2004/03/05 13:02:13 bdelacretaz Exp $
+ * @version CVS $Id$
  */
 public abstract class AbstractParameters 
-    implements Parameters {
+    implements Parameters, Cloneable {
 
     protected Map parameters = new LinkedMap();
      
@@ -36,5 +36,16 @@
      */
     public final Map getParameters() {
         return parameters;
+    }
+    
+    /* (non-Javadoc)
+     * @see java.lang.Object#clone()
+     */
+    protected Object clone() throws CloneNotSupportedException {
+        AbstractParameters clone = (AbstractParameters)super.clone();
+        
+        clone.parameters = new LinkedMap(this.parameters);
+        
+        return clone;
     }
 }

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/CompositeLayout.java
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/CompositeLayout.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/CompositeLayout.java	Wed Sep  1 04:29:10 2004
@@ -24,7 +24,7 @@
  * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
  * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
  * 
- * @version CVS $Id: CompositeLayout.java,v 1.9 2004/03/05 13:02:13 bdelacretaz Exp $
+ * @version CVS $Id$
  */
 public interface CompositeLayout 
     extends Layout {
@@ -66,5 +66,11 @@
      * @param item
      */
     void removeItem(Item item);
+    
+    /**
+     * Create a new item.
+     * This item is not added to the composite layout
+     */
+    Item createNewItem();
     
 }

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java	Wed Sep  1 04:29:10 2004
@@ -15,13 +15,15 @@
  */
 package org.apache.cocoon.portal.layout;
 
+import java.util.Map;
+
 
 /**
  *
  * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
  * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
  * 
- * @version CVS $Id: Item.java,v 1.4 2004/03/05 13:02:13 bdelacretaz Exp $
+ * @version CVS $Id$
  */
 public class Item extends AbstractParameters {
 	
@@ -53,4 +55,31 @@
     public final void setParent(CompositeLayout layout) {
         this.parentLayout = layout;
     }
+        
+    /* (non-Javadoc)
+     * @see java.lang.Object#clone()
+     */
+    protected Object clone() throws CloneNotSupportedException {
+        Item clone = (Item)super.clone();
+        
+        clone.layout = null;
+        clone.parentLayout = null;
+        
+        return clone;
+    }
+    
+    public Item copy(CompositeLayout parent, Map copletInstanceDatas) {
+        try {
+            Item clone = (Item)this.clone();
+            if ( this.layout != null ) {
+                clone.layout = this.layout.copy(copletInstanceDatas);
+            }
+            clone.parentLayout = parent;
+            return clone;
+        } catch (CloneNotSupportedException cnse) {
+            // ignore
+        }
+        return null;
+    }
+    
 }

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Layout.java
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Layout.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Layout.java	Wed Sep  1 04:29:10 2004
@@ -15,6 +15,8 @@
  */
 package org.apache.cocoon.portal.layout;
 
+import java.util.Map;
+
 import org.apache.cocoon.portal.factory.Producible;
 
 
@@ -23,7 +25,7 @@
  * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
  * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
  * 
- * @version CVS $Id: Layout.java,v 1.9 2004/03/05 13:02:13 bdelacretaz Exp $
+ * @version CVS $Id$
  */
 public interface Layout 
     extends Parameters, Producible {
@@ -45,5 +47,13 @@
     Item getParent();
 
     void setParent(Item item);
+
+    /**
+     * Make a copy of this layout object and of all it's children.,
+     * Each reference to a coplet instance data is replaced to
+     * an instance from the provided map. (If the map is null,
+     * the reference is copied).
+     */
+    Layout copy(Map copletInstanceDatas);
 
 }

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/NamedItem.java
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/NamedItem.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/NamedItem.java	Wed Sep  1 04:29:10 2004
@@ -20,7 +20,7 @@
  * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
  * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
  * 
- * @version CVS $Id: NamedItem.java,v 1.2 2004/03/05 13:02:13 bdelacretaz Exp $
+ * @version CVS $Id$
  */
 public class NamedItem extends Item {
 
@@ -42,4 +42,15 @@
 		this.name = name;
 	}
 
+    /* (non-Javadoc)
+     * @see java.lang.Object#clone()
+     */
+    protected Object clone() throws CloneNotSupportedException {
+        NamedItem clone = (NamedItem)super.clone();
+        
+        clone.name = this.name;
+        
+        return clone;
+    }
+    
 }

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/CompositeLayoutImpl.java
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/CompositeLayoutImpl.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/CompositeLayoutImpl.java	Wed Sep  1 04:29:10 2004
@@ -16,11 +16,14 @@
 package org.apache.cocoon.portal.layout.impl;
 
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.cocoon.portal.layout.AbstractLayout;
 import org.apache.cocoon.portal.layout.CompositeLayout;
 import org.apache.cocoon.portal.layout.Item;
+import org.apache.cocoon.portal.layout.Layout;
 
 
 /**
@@ -29,7 +32,7 @@
  * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
  * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
  * 
- * @version CVS $Id: CompositeLayoutImpl.java,v 1.4 2004/03/05 13:02:13 bdelacretaz Exp $
+ * @version CVS $Id$
  */
 public class CompositeLayoutImpl 
     extends AbstractLayout
@@ -40,7 +43,9 @@
     /**
      * Constructor
      */
-    public CompositeLayoutImpl() {}
+    public CompositeLayoutImpl() {
+        // nothing to do
+    }
     
 	/**
 	 * Add indexed item to the itemList.
@@ -88,6 +93,39 @@
     public final void removeItem(Item item) {
         this.items.remove(item);
         item.setParent(null);
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.cocoon.portal.layout.CompositeLayout#createNewItem()
+     */
+    public Item createNewItem() {
+        return new Item();
+    }
+        
+    /* (non-Javadoc)
+     * @see java.lang.Object#clone()
+     */
+    protected Object clone() throws CloneNotSupportedException {
+        CompositeLayoutImpl clone = (CompositeLayoutImpl)super.clone();
+        
+        // we are not cloning the items
+        clone.items = new ArrayList();
+
+        return clone;
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.cocoon.portal.layout.Layout#copy(java.util.Map)
+     */
+    public Layout copy(Map copletInstanceDatas) {
+        CompositeLayoutImpl clone = (CompositeLayoutImpl)super.copy(copletInstanceDatas);
+        final Iterator i = this.items.iterator();
+        while ( i.hasNext() ) {
+            final Item current = (Item)i.next();
+            final Item clonedItem = current.copy(clone, copletInstanceDatas);
+            clone.addItem(clonedItem);
+        }
+        return clone;
     }
     
 }

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/CopletLayout.java
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/CopletLayout.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/CopletLayout.java	Wed Sep  1 04:29:10 2004
@@ -15,8 +15,11 @@
  */
 package org.apache.cocoon.portal.layout.impl;
 
+import java.util.Map;
+
 import org.apache.cocoon.portal.coplet.CopletInstanceData;
 import org.apache.cocoon.portal.layout.AbstractLayout;
+import org.apache.cocoon.portal.layout.Layout;
 
 /**
  * A coplet layout holds a coplet.
@@ -25,7 +28,7 @@
  * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
  * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
  * 
- * @version CVS $Id: CopletLayout.java,v 1.4 2004/04/25 20:09:34 haul Exp $
+ * @version CVS $Id$
  */
 public final class CopletLayout extends AbstractLayout {
     
@@ -39,4 +42,30 @@
         return this.copletInstanceData;
     }
 
+    /* (non-Javadoc)
+     * @see java.lang.Object#clone()
+     */
+    protected Object clone() throws CloneNotSupportedException {
+        CopletLayout clone = (CopletLayout)super.clone();
+        
+        this.copletInstanceData = null;
+        
+        return clone;
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.cocoon.portal.layout.Layout#copy(java.util.Map)
+     */
+    public Layout copy(Map copletInstanceDatas) {
+        CopletLayout clone = (CopletLayout)super.copy(copletInstanceDatas);
+        if (copletInstanceDatas == null) {
+            clone.copletInstanceData = this.copletInstanceData;
+        } else {
+            if ( this.copletInstanceData != null ) {
+                clone.copletInstanceData = (CopletInstanceData)copletInstanceDatas.get(this.copletInstanceData.getId());
+            }
+            
+        }
+        return clone;
+    }
 }

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/FrameLayout.java
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/FrameLayout.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/FrameLayout.java	Wed Sep  1 04:29:10 2004
@@ -25,7 +25,7 @@
  * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
  * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
  * 
- * @version CVS $Id: FrameLayout.java,v 1.3 2004/04/25 20:09:34 haul Exp $
+ * @version CVS $Id$
  */
 public class FrameLayout extends AbstractLayout {
     
@@ -46,4 +46,15 @@
         this.source = source;
     }
 
+    /* (non-Javadoc)
+     * @see java.lang.Object#clone()
+     */
+    protected Object clone() throws CloneNotSupportedException {
+        FrameLayout clone = (FrameLayout)super.clone();
+        
+        clone.source = this.source;
+        
+        return clone;
+    }
+    
 }

Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/LinkLayout.java
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/LinkLayout.java	(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/LinkLayout.java	Wed Sep  1 04:29:10 2004
@@ -26,7 +26,7 @@
  * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
  * @author <a href="mailto:juergen.seitz@basf-it-services.com">J&uuml;rgen Seitz</a>
  * 
- * @version CVS $Id: LinkLayout.java,v 1.4 2004/04/25 20:09:34 haul Exp $
+ * @version CVS $Id$
  */
 public class LinkLayout extends AbstractLayout implements Layout {
 
@@ -49,4 +49,16 @@
         linkedLayoutKey = key;
     }
 
+    /* (non-Javadoc)
+     * @see java.lang.Object#clone()
+     */
+    protected Object clone() throws CloneNotSupportedException {
+        LinkLayout clone = (LinkLayout)super.clone();
+        
+        clone.linkedLayoutId = this.linkedLayoutId;
+        clone.linkedLayoutKey = this.linkedLayoutKey;
+        
+        return clone;
+    }
+    
 }

Added: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/TabbedLayoutImpl.java
==============================================================================
--- (empty file)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/TabbedLayoutImpl.java	Wed Sep  1 04:29:10 2004
@@ -0,0 +1,38 @@
+/*
+ * Copyright 1999-2002,2004 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.portal.layout.impl;
+
+import org.apache.cocoon.portal.layout.Item;
+import org.apache.cocoon.portal.layout.NamedItem;
+
+
+/**
+ * This is a tabbed layout implementation
+ * 
+ * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
+ * 
+ * @version CVS $Id: CompositeLayout.java 30941 2004-07-29 19:56:58Z vgritsenko $
+ */
+public class TabbedLayoutImpl 
+    extends CompositeLayoutImpl {
+
+    /* (non-Javadoc)
+     * @see org.apache.cocoon.portal.layout.CompositeLayout#createNewItem()
+     */
+    public Item createNewItem() {
+        return new NamedItem();
+    }
+}