01: /* ComponentCloneListener.java
02:
03: {{IS_NOTE
04: Purpose:
05:
06: Description:
07:
08: History:
09: Thu Jun 7 15:57:44 2007, Created by tomyeh
10: }}IS_NOTE
11:
12: Copyright (C) 2007 Potix Corporation. All Rights Reserved.
13:
14: {{IS_RIGHT
15: This program is distributed under GPL Version 2.0 in the hope that
16: it will be useful, but WITHOUT ANY WARRANTY.
17: }}IS_RIGHT
18: */
19: package org.zkoss.zk.ui.util;
20:
21: import org.zkoss.zk.ui.Component;
22:
23: /**
24: * Used to notify an object stored in a component, when the
25: * component is cloned.
26: *
27: * <p>When a component is cloned, it checks every
28: * attribute ({@link Component#setAttribute})
29: * and listener ({@link Component#addEventListener})
30: * to see whether this interface is implemented.
31: * If implemented, {@link #clone} will be called. Then, the object
32: * can either return itself, if it can be shared by two components,
33: * or clone itself, if an independent instance must be used for
34: * each component.
35: *
36: * @author tomyeh
37: * @since 2.4.0
38: */
39: public interface ComponentCloneListener {
40: /** Called when a component is cloned.
41: * If the object is OK to be shared by the cloned and original components,
42: * it can return itself.
43: * If an independent instance must be created for the cloned component,
44: * it can clone itesef and return the cloned object.
45: *
46: * @param comp the cloned component (not the orginal one)
47: * @return the object to be used in the cloned component.
48: * If this object is returned, the same object is shared by the
49: * cloned and original components.
50: * If other object is returned, it is used by the cloned component.
51: * If null is returned, it is not used by the cloned component at all.
52: */
53: public Object clone(Component comp);
54: }
|