Warning: Can't use blame annotator:
svn blame failed on trunk/src/tmcsim/simulationmanager/model/AddIncidentListTableModel.java: ("Can't find a temporary directory: Internal error", 20014)

source: tmcsimulator/trunk/src/tmcsim/simulationmanager/model/AddIncidentListTableModel.java @ 2

Revision 2, 7.4 KB checked in by jdalbey, 10 years ago (diff)

Initial Import of project files

RevLine 
1package tmcsim.simulationmanager.model;
2
3import java.util.ArrayList;
4import java.util.List;
5import java.util.TreeMap;
6
7import javax.swing.event.TableModelEvent;
8import javax.swing.table.DefaultTableModel;
9
10import tmcsim.client.cadclientgui.data.Incident;
11
12/**
13 * AddIncidentListTableModel is a DefaultTableModel used to display the
14 * list of current incidents that may be added as a part of the
15 * AddIncidentDialog.  The columns in this table show the incident log number,
16 * description, length, a boolean checkbox, and scheduled time.
17 *
18 * @author Matthew Cechini
19 * @version
20 */
21@SuppressWarnings("serial")
22public class AddIncidentListTableModel extends DefaultTableModel {
23
24    /**
25     * Enumeration of columns for this table.
26     * @author Matthew Cechini
27     */ 
28    public static enum ADD_INCIDENT_LIST_COLUMNS {
29        LOG_NUM_COL    ("Log #", 0, 50, 100, 50),
30        EVENT_DESC_COL ("Event Description", 1, 120, 300, 120),
31        EVENT_LEN_COL  ("Event Length", 2, 80, 100, 80),
32        ADD_COL        ("Add?", 3, 60, 80, 60),
33        SCHEDULED_COL  ("Scheduled Time", 4, 80, 120, 80);
34       
35        public String colName;
36        public int colNum;
37        public int colMinWidth;
38        public int colMaxWidth;
39        public int colPrefWidth;
40       
41        private ADD_INCIDENT_LIST_COLUMNS (String name, int num, int min, int max, int pref) {
42            colName      = name;
43            colNum       = num;
44            colMinWidth  = min;
45            colMaxWidth  = max;
46            colPrefWidth = pref;
47        }
48       
49        public static int colCount() {
50            return values().length;
51        }
52       
53        public static String columnName(int num) {
54           
55            for(ADD_INCIDENT_LIST_COLUMNS column : ADD_INCIDENT_LIST_COLUMNS.values()) {
56                if(column.colNum == num)
57                    return column.colName;
58            }
59           
60            return "";
61        }
62       
63        public static int columnMinWidth(int num) {
64           
65            for(ADD_INCIDENT_LIST_COLUMNS column : ADD_INCIDENT_LIST_COLUMNS.values()) {
66                if(column.colNum == num)
67                    return column.colMinWidth;
68            }
69           
70            return 0;
71        }
72       
73        public static int columnMaxWidth(int num) {
74           
75            for(ADD_INCIDENT_LIST_COLUMNS column : ADD_INCIDENT_LIST_COLUMNS.values()) {
76                if(column.colNum == num)
77                    return column.colMaxWidth;
78            }
79           
80            return 0;
81        }
82       
83        public static int columnPrefWidth(int num) {
84           
85            for(ADD_INCIDENT_LIST_COLUMNS column : ADD_INCIDENT_LIST_COLUMNS.values()) {
86                if(column.colNum == num)
87                    return column.colPrefWidth;
88            }
89           
90            return 0;
91        }
92       
93        public static ADD_INCIDENT_LIST_COLUMNS fromColNum(int column) {
94            for(ADD_INCIDENT_LIST_COLUMNS c : ADD_INCIDENT_LIST_COLUMNS.values()) {
95                if(c.colNum == column)
96                    return c;
97            }
98           
99            return LOG_NUM_COL;
100        }
101    } 
102
103    /**
104     * Container class to hold information displayed in the table.
105     * @author Matthew Cechini
106     */ 
107    protected class AddIncidentEventInfo {
108   
109        public Integer logNumber;
110        public String  description;
111        public Long    length;
112        public Boolean addFlag;
113        public Long    scheduleTime;
114       
115        public AddIncidentEventInfo(Integer log, String desc, Long len, Boolean add, Long time) {
116            logNumber    = log;
117            description  = desc;
118            length       = len;
119            addFlag      = add;
120            scheduleTime = time;
121        }
122    }
123
124    /** List of data displayed in the table. */
125    private List<AddIncidentEventInfo> event_list;
126   
127    /** Constructor. */
128    public AddIncidentListTableModel() {
129        event_list = new ArrayList<AddIncidentEventInfo>();
130    } 
131
132    public String getColumnName(int col) {
133        return ADD_INCIDENT_LIST_COLUMNS.columnName(col);
134    }
135   
136    public Class getColumnClass(int c) {
137        return getValueAt(0, c).getClass();
138    }
139
140    public int getRowCount() {
141        if(event_list == null) {
142            return 0;
143        }
144        else
145            return event_list.size();
146    }
147
148    public int getColumnCount() {
149        return ADD_INCIDENT_LIST_COLUMNS.colCount();
150    }
151
152
153    public int getColumnMinWidth(int c){
154        return ADD_INCIDENT_LIST_COLUMNS.columnMinWidth(c);
155    }
156
157
158    public int getColumnMaxWidth(int c){
159        return ADD_INCIDENT_LIST_COLUMNS.columnMaxWidth(c);
160    }
161
162
163    public int getColumnPrefWidth(int c){
164        return ADD_INCIDENT_LIST_COLUMNS.columnPrefWidth(c);
165    }
166
167    public boolean isCellEditable(int row, int col) {
168        switch (ADD_INCIDENT_LIST_COLUMNS.fromColNum(col)) {
169            case ADD_COL:
170            case SCHEDULED_COL:
171                return true;
172            case LOG_NUM_COL:
173            case EVENT_DESC_COL:
174            case EVENT_LEN_COL:
175            default:
176                return false;
177        }       
178
179    }     
180   
181    public Object getValueAt(int row, int col) {
182        switch (ADD_INCIDENT_LIST_COLUMNS.fromColNum(col)) {
183            case ADD_COL:
184                return event_list.get(row).addFlag;
185            case LOG_NUM_COL:
186                return event_list.get(row).logNumber;
187            case SCHEDULED_COL:
188                return event_list.get(row).scheduleTime;
189            case EVENT_DESC_COL:
190                return event_list.get(row).description;
191            case EVENT_LEN_COL:
192                return event_list.get(row).length;
193            default: 
194                return "";
195        } 
196    }
197       
198    public void setValueAt(Object value, int row, int col) {
199        switch (ADD_INCIDENT_LIST_COLUMNS.fromColNum(col)) {
200            case ADD_COL:
201                event_list.get(row).addFlag = (Boolean)value;
202                break;
203            case SCHEDULED_COL:
204                event_list.get(row).scheduleTime = (Long)value;
205                break;
206        }   
207        fireTableChanged(new TableModelEvent(this));
208    }
209   
210    /**
211     * Method adds a new incident into the table.
212     * @param newIncident Incident object to add.
213     */
214    public void addIncident(Incident newIncident) {
215        event_list.add(new AddIncidentEventInfo(
216                newIncident.getLogNumber(),
217                newIncident.description,
218                newIncident.getIncidentLength(),
219                new Boolean(false), new Long(0)));
220        fireTableChanged(new TableModelEvent(this));
221    }   
222   
223
224    /**
225     * Method gets a map of incidents, and the scheduled start time
226     * for all incidents that have been selected in the table.
227     *
228     * @return Map of incident log numbers (key) and scheduled start time (value)
229     */
230    public TreeMap<Integer, Long> getSelectedIncidentTimes() {
231        TreeMap<Integer, Long> selectedIncMap = new TreeMap<Integer, Long>();
232       
233        for(AddIncidentEventInfo info : event_list) {
234            if(info.addFlag)
235                selectedIncMap.put(info.logNumber, info.scheduleTime);
236        }   
237       
238        return selectedIncMap;
239    }
240   
241    /**
242     * Remove all incidents from the table's data.
243     */   
244    public void clearModelData() {
245        event_list.clear();
246        fireTableChanged(new TableModelEvent(this));
247    }
248}
Note: See TracBrowser for help on using the repository browser.