1 33 34 package com.icesoft.icefaces.samples.showcase.components.table; 35 36 import javax.faces.event.ValueChangeEvent; 37 import javax.faces.model.DataModel; 38 import javax.faces.model.ListDataModel; 39 import java.util.ArrayList ; 40 41 46 public class ColumnsBean { 47 private DataModel columnDataModel; 49 private DataModel rowDataModel; 50 51 public static final int ASCII_START = 33; 53 public static final int ASCII_END = 126; 54 public static final int ASCII_RANGE = ASCII_END - ASCII_START; 55 private static final AsciiData[] asciiData = new AsciiData[ASCII_RANGE]; 56 57 private static boolean isInit; 59 60 private int columns = 5; 62 private int rows = 0; 64 private String table[][]; 66 67 private static final int ROW_CONSTANT = 13; 68 69 public ColumnsBean() { 70 71 calculateRows(); 73 74 init(); 76 updateTableColumns(null); 77 } 78 79 83 private synchronized void init() { 84 if (isInit) { 85 return; 86 } 87 isInit = true; 88 89 AsciiData tmp; 91 int index; 92 for (int i = 0; i < ASCII_RANGE ; i++) { 93 tmp = new AsciiData(); 94 index = ASCII_START + i; 95 tmp.setIndex(index); 96 tmp.setIndexChar((char) index); 97 tmp.setIndexHex(Integer.toHexString(index)); 98 asciiData[i] = tmp; 99 } 100 } 101 102 public int getColumns() { 103 return columns; 104 } 105 106 public int getRows() { 107 return rows; 108 } 109 110 public void setColumns(int columns) { 111 this.columns = columns; 112 } 113 114 public DataModel getRowDataModel() { 115 return rowDataModel; 116 } 117 118 public DataModel getColumnDataModel() { 119 return columnDataModel; 120 } 121 122 128 public String getCellValue() { 129 if (rowDataModel.isRowAvailable() && 130 columnDataModel.isRowAvailable()) { 131 132 int row = rowDataModel.getRowIndex(); 135 int col = columnDataModel.getRowIndex(); 136 137 return table[col][row]; 139 } 140 return "-"; 142 } 143 144 145 146 private void calculateRows(){ 147 rows = ASCII_END / columns; 149 150 if ((ASCII_END % columns) != 0) { 152 rows += 1; 153 154 } 155 } 156 157 163 public void updateTableColumns(ValueChangeEvent event) { 164 if (event != null && event.getNewValue() != null && 165 event.getNewValue() instanceof Integer ) { 166 columns = ((Integer ) event.getNewValue()).intValue(); 168 } 169 int numberOfRows=26; 170 if( columns > 1 ){ 171 numberOfRows = columns * ROW_CONSTANT; 172 } 173 174 ArrayList columnList = new ArrayList (); 175 ArrayList rowList = new ArrayList (); 176 177 table = new String [columns][numberOfRows]; 178 String r; 179 for( int i=0; i < columns; i++ ){ 180 for( int j=0; j<numberOfRows; j++ ){ 181 r = getChar(j); 182 table[i][j] = r; 184 rowList.add(r); 186 } 187 columnList.add(String.valueOf(i + 1)); 188 189 } 190 191 rowDataModel = new ListDataModel(rowList); 192 columnDataModel = new ListDataModel(columnList); 193 194 } 195 196 private String getChar(int i){ 197 i += 65; 198 return String.valueOf((char)i); 199 } 200 201 205 public class AsciiData { 206 private int index; 207 private char indexChar; 208 private String indexHex = " "; 209 210 211 public int getIndex() { 212 return index; 213 } 214 215 public void setIndex(int index) { 216 this.index = index; 217 } 218 219 public char getIndexChar() { 220 return indexChar; 221 } 222 223 public char getIndexCharString() { 224 if (indexChar > 32) 226 return indexChar; 227 else { 228 return ' '; 229 } 230 } 231 232 public void setIndexChar(char indexChar) { 233 this.indexChar = indexChar; 234 } 235 236 public String getIndexHex() { 237 return indexHex; 238 } 239 240 public void setIndexHex(String indexHex) { 241 this.indexHex = indexHex; 242 } 243 244 public String toString() { 245 return index + " " + indexChar + " " + indexHex; 246 } 247 } 248 249 } 250 251 | Popular Tags |