1 6 7 package albel.tags.table.render.impl; 8 9 13 import albel.tags.table.utils.Writer; 14 import albel.tags.table.*; 15 import albel.tags.table.render.*; 16 import albel.tags.table.model.*; 17 import albel.tags.table.controll.*; 18 19 import org.apache.ecs.html.*; 20 21 public class TableRenderer implements ITableRenderer 22 { 23 24 private albel.tags.table.model.Table table; 25 26 public TableRenderer() 27 { 28 } 29 30 public ITableRenderable render() throws javax.servlet.jsp.JspException  31 { 32 try 33 { 34 return doRender(); 35 } 36 catch (Exception e) 37 { 38 throw new javax.servlet.jsp.JspException (e); 39 } 40 } 41 private ITableRenderable doRender() throws Exception  42 { 43 java.util.List beanList=table.getSource(); 44 java.util.Iterator source=org.apache.commons.collections. 45 IteratorUtils.getIterator(beanList); 46 ITableRenderable renderable=Manager.getTableRenderable(); 47 org.apache.ecs.html.Table ht=(org.apache.ecs.html.Table)renderable.getRenderable(); 48 java.util.List cols=table.getColumns(); 49 org.apache.ecs.html.THead head=renderHeader(cols); 50 ht.addElement(head); 51 IRowRenderer rowRend=Manager.getRowRenderer(); 52 int rowNr=0; 53 Row selRow=table.getTableState().getSelectedRow(); 54 while (source.hasNext()) 55 { 56 Row row=new Row(table); 57 row.setNumber(rowNr); 58 TR tr; 59 Object obj=source.next(); 60 if(isRowMustBeEdited(rowNr,selRow)) { 62 IRowEditor rowEdit=Manager.getRowEditor(); 63 tr=(TR)rowEdit.render(row, cols, obj).getRenderable(); 64 } 65 else 66 { 67 tr=(org.apache.ecs.html.TR) 68 rowRend.render(row,cols,obj).getRenderable(); 69 } 70 ht.addElement(tr); 71 rowNr++; 72 } 73 boolean notEditing=!(table.getTableState().getSelectedRow()!=null && table.getTableState().getSelectedRow().getRowState().isEditing()); 74 boolean hasDefinedNewRowColumns=table.getNewRowColumns()!=null && table.getNewRowColumns().hasColumns(); 75 if(notEditing && hasDefinedNewRowColumns) 76 { 77 TR tr=Manager.getNewRowRenderer().render(table.getNewRowColumns().getColumns()); 78 ht.addElement(tr); 79 } 80 return renderable; 81 82 } 83 private org.apache.ecs.html.THead renderHeader(java.util.List cols) throws TableTagException 84 { 85 IColumnHeaderRenderer hrend=Manager.getColumnHeaderRenderer(); 86 org.apache.ecs.html.THead thead=new org.apache.ecs.html.THead(); 87 for(int i=0;i<cols.size();i++) 88 { 89 Column col=(Column)cols.get(i); 90 ColumnHeader header=col.getHeader(); 91 try 92 { 93 org.apache.ecs.html.TH th=(org.apache.ecs.html.TH)hrend.render(header).getRenderable(); 94 thead.addElement(th); 95 } 96 catch (javax.servlet.jsp.JspException jex) 97 { 98 throw new TableTagException(jex); 99 } 100 } 101 return thead; 102 } 103 private boolean isRowMustBeEdited(int loopRowNr,Row selRow) 104 { 105 return selRow!=null && selRow.getRowState()!=null && selRow.getRowState().isEditing() && loopRowNr==selRow.getNumber(); 106 } 107 108 public void setTable(albel.tags.table.model.Table table) 109 { 110 this.table=table; 111 } 112 113 } 114 | Popular Tags |