1 18 package org.apache.beehive.netui.tags.databinding.datagrid; 19 20 import org.apache.beehive.netui.util.internal.InternalStringBuilder; 21 22 import java.io.IOException ; 23 import javax.servlet.jsp.JspException ; 24 25 import org.apache.beehive.netui.databinding.datagrid.api.rendering.DataGridTagModel; 26 import org.apache.beehive.netui.databinding.datagrid.api.rendering.CellModel; 27 import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender; 28 import org.apache.beehive.netui.tags.rendering.StringBuilderRenderAppender; 29 import org.apache.beehive.netui.tags.rendering.AbstractHtmlState; 30 import org.apache.beehive.netui.tags.html.HtmlConstants; 31 import org.apache.beehive.netui.tags.html.FormatTag.Formatter; 32 import org.apache.beehive.netui.util.Bundle; 33 import org.apache.beehive.netui.util.logging.Logger; 34 35 47 public abstract class AbstractCell 48 extends AbstractDataGridHtmlTag { 49 50 private static final Logger LOGGER = Logger.getInstance(AbstractCell.class); 51 52 53 private static final String EMPTY_CELL = " "; 54 55 60 public void addFormatter(Formatter formatter) { 61 internalGetCellModel().addFormatter(formatter); 62 } 63 64 67 public void formatterHasError() { 68 69 } 70 71 94 public void doTag() 95 throws JspException , IOException { 96 97 DataGridTagModel dataGridModel = DataGridUtil.getDataGridTagModel(getJspContext()); 98 99 int gridRenderState = dataGridModel.getRenderState(); 100 101 102 if(gridRenderState == DataGridTagModel.RENDER_STATE_START) { 103 return; 104 } 105 else { 109 CellModel model = internalGetCellModel(); 110 model.setDataGridTagModel(dataGridModel); 111 112 applyAttributes(); 113 114 try { 115 DataGridUtil.putCellModel(getJspContext(), model); 116 117 InternalStringBuilder content = new InternalStringBuilder(); 118 AbstractRenderAppender appender = new StringBuilderRenderAppender(content); 119 120 renderCell(appender); 121 122 if(content != null && content.length() > 0) 123 getJspContext().getOut().println(content.toString()); 124 } 125 finally { 126 DataGridUtil.removeCellModel(getJspContext()); 127 } 128 } 129 130 return; 131 } 132 133 140 protected abstract CellModel internalGetCellModel(); 141 142 150 protected abstract void renderCell(AbstractRenderAppender appender) 151 throws IOException , JspException ; 152 153 157 protected void renderEmptyCell(AbstractRenderAppender appender) { 158 appender.append(EMPTY_CELL); 159 } 160 161 166 protected void applyAttributes() 167 throws JspException { 168 } 169 170 187 protected final void addStateAttribute(AbstractHtmlState state, String name, String value) 188 throws JspException { 189 190 if(name == null || name.length() <= 0) { 192 String s = Bundle.getString("Tags_AttributeNameNotSet"); 193 throw new JspException (s); 194 } 195 196 if(name != null && (name.equals(HtmlConstants.ID) || name.equals(HtmlConstants.NAME))) { 198 String s = Bundle.getString("Tags_AttributeMayNotBeSet", new Object []{name}); 199 throw new JspException (s); 200 } 201 202 if(name.equals(HtmlConstants.CLASS)) { 204 state.styleClass = value; 205 return; 206 } 207 else if(name.equals(HtmlConstants.STYLE)) { 208 state.style = value; 209 return; 210 } 211 212 state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, name, value); 213 } 214 } 215 | Popular Tags |