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    }