001 // Copyright 2004, 2005 The Apache Software Foundation
002 //
003 // Licensed under the Apache License, Version 2.0 (the "License");
004 // you may not use this file except in compliance with the License.
005 // You may obtain a copy of the License at
006 //
007 // http://www.apache.org/licenses/LICENSE-2.0
008 //
009 // Unless required by applicable law or agreed to in writing, software
010 // distributed under the License is distributed on an "AS IS" BASIS,
011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012 // See the License for the specific language governing permissions and
013 // limitations under the License.
014
015 package org.apache.tapestry.contrib.table.model.common;
016
017 import org.apache.tapestry.IRender;
018 import org.apache.tapestry.IRequestCycle;
019 import org.apache.tapestry.components.Block;
020 import org.apache.tapestry.components.BlockRenderer;
021 import org.apache.tapestry.contrib.table.model.ITableColumn;
022 import org.apache.tapestry.contrib.table.model.ITableModelSource;
023 import org.apache.tapestry.contrib.table.model.ITableRendererListener;
024 import org.apache.tapestry.contrib.table.model.ITableRendererSource;
025 import org.apache.tapestry.util.ComponentAddress;
026
027 /**
028 *
029 * @author mindbridge
030 * @since 2.3
031 */
032 public class BlockTableRendererSource implements ITableRendererSource
033 {
034 private static final long serialVersionUID = 1L;
035
036 private ComponentAddress m_objBlockAddress;
037 private ComponentAddress m_objListenerAddress;
038
039 public BlockTableRendererSource(Block objBlock)
040 {
041 this(new ComponentAddress(objBlock));
042 }
043
044 public BlockTableRendererSource(
045 Block objBlock,
046 ITableRendererListener objListener)
047 {
048 this(new ComponentAddress(objBlock), new ComponentAddress(objListener));
049 }
050
051 public BlockTableRendererSource(ComponentAddress objBlockAddress)
052 {
053 this(objBlockAddress, null);
054 }
055
056 public BlockTableRendererSource(
057 ComponentAddress objBlockAddress,
058 ComponentAddress objListenerAddress)
059 {
060 setBlockAddress(objBlockAddress);
061 setListenerAddress(objListenerAddress);
062 }
063
064 /**
065 * @see org.apache.tapestry.contrib.table.model.ITableRendererSource#getRenderer(IRequestCycle, ITableModelSource, ITableColumn, Object)
066 */
067 public IRender getRenderer(
068 IRequestCycle objCycle,
069 ITableModelSource objSource,
070 ITableColumn objColumn,
071 Object objRow)
072 {
073 ComponentAddress objListenerAddress = getListenerAddress();
074 if (objListenerAddress != null)
075 {
076 ITableRendererListener objListener =
077 (ITableRendererListener) objListenerAddress.findComponent(
078 objCycle);
079 objListener.initializeRenderer(
080 objCycle,
081 objSource,
082 objColumn,
083 objRow);
084 }
085
086 Block objBlock = (Block) getBlockAddress().findComponent(objCycle);
087 return new BlockRenderer(objBlock);
088 }
089
090 /**
091 * Returns the blockAddress.
092 * @return ComponentAddress
093 */
094 public ComponentAddress getBlockAddress()
095 {
096 return m_objBlockAddress;
097 }
098
099 /**
100 * Sets the blockAddress.
101 * @param blockAddress The blockAddress to set
102 */
103 public void setBlockAddress(ComponentAddress blockAddress)
104 {
105 m_objBlockAddress = blockAddress;
106 }
107
108 /**
109 * Returns the listenerAddress.
110 * @return ComponentAddress
111 */
112 public ComponentAddress getListenerAddress()
113 {
114 return m_objListenerAddress;
115 }
116
117 /**
118 * Sets the listenerAddress.
119 * @param listenerAddress The listenerAddress to set
120 */
121 public void setListenerAddress(ComponentAddress listenerAddress)
122 {
123 m_objListenerAddress = listenerAddress;
124 }
125
126 }