001 package org.shiftone.jrat.desktop.util; 002 003 import java.util.ArrayList; 004 import java.util.Collections; 005 import java.util.List; 006 007 /** 008 * @author (jeff@shiftone.org) Jeff Drost 009 */ 010 public class Table { 011 012 013 private List columns = new ArrayList(); 014 015 public synchronized Column column(String name) { 016 return column(name, true); 017 } 018 019 public synchronized Column column(String name, boolean defaultVisible) { 020 return column(name, Object.class, defaultVisible); 021 } 022 023 public synchronized Column column(String name, Class type, boolean defaultVisible) { 024 Column column = new Column(columns.size(), name, type, defaultVisible); 025 columns.add(column); 026 return column; 027 } 028 029 public List getColumns() { 030 return Collections.unmodifiableList(columns); 031 } 032 033 public Column getColumn(int index) { 034 return (Column) columns.get(index); 035 } 036 037 public int getColumnCount() { 038 return columns.size(); 039 } 040 041 public class Column { 042 private final int index; 043 private final String name; 044 private final Class type; 045 private final boolean defaultVisible; 046 047 048 public Column(int index, String name, Class type, boolean defaultVisible) { 049 this.index = index; 050 this.name = name; 051 this.type = type; 052 this.defaultVisible = defaultVisible; 053 } 054 055 public int getIndex() { 056 return index; 057 } 058 059 public String getName() { 060 return name; 061 } 062 063 public Class getType() { 064 return type; 065 } 066 067 public boolean isDefaultVisible() { 068 return defaultVisible; 069 } 070 } 071 }