]> git.somenet.org - pub/jan/sbc.git/blob - src/main/java/at/ac/tuwien/sbc/valesriegler/common/TableModel.java
Support for space notifications for pizzeria and group agents. Change table model...
[pub/jan/sbc.git] / src / main / java / at / ac / tuwien / sbc / valesriegler / common / TableModel.java
1 package at.ac.tuwien.sbc.valesriegler.common;
2
3 import java.util.List;
4 import java.util.Map;
5 import java.util.concurrent.ConcurrentSkipListMap;
6
7 import javax.swing.table.AbstractTableModel;
8
9 /**
10  * Common base class of table models used in Group GUI and Pizzeria GUI.
11  * 
12  * @author Gregor Riegler <gregor DOT riegler AT gmail DOT com>
13  *
14  */
15 public abstract class TableModel<Item extends HasId> extends AbstractTableModel {
16         protected static final String UNHANDLEDCOLUMN = "Unhandled column";
17         
18         protected final Map<Integer, Item> items = new ConcurrentSkipListMap<Integer, Item>();
19         
20         public void addItems(List<Item> newItems) {
21                 for (Item item : newItems) {
22                         items.put(item.getId(), item);
23                 }
24                 
25                 fireTableDataChanged();
26         }
27         
28         public void setItems(List<Item> newItems) {
29                 items.clear();
30                 addItems(newItems);
31         }
32         
33         @Override
34         public int getRowCount() {
35                 return items.size();
36         }
37         
38         @Override
39         public String getColumnName(int column) {
40                 return getColumns()[column];
41         }
42
43         @Override
44         public int getColumnCount() {
45                 return getColumns().length;
46         }
47         
48         protected abstract String[] getColumns();
49
50 }