source: src/main/java/genius/gui/progress/session/OutcomesModelToTableModelAdapter.java@ 346

Last change on this file since 346 was 1, checked in by Wouter Pasman, 6 years ago

Initial import : Genius 9.0.0

File size: 3.0 KB
Line 
1package genius.gui.progress.session;
2
3import javax.swing.event.ListDataEvent;
4import javax.swing.event.ListDataListener;
5import javax.swing.event.TableModelEvent;
6import javax.swing.event.TableModelListener;
7import javax.swing.table.TableModel;
8
9/**
10 * Adapts the OutcomesModel to a table
11 */
12public class OutcomesModelToTableModelAdapter implements TableModel {
13
14 private OutcomesListModel model;
15
16 public OutcomesModelToTableModelAdapter(OutcomesListModel model) {
17 this.model = model;
18 }
19
20 @Override
21 public int getRowCount() {
22 return model.getSize();
23 }
24
25 @Override
26 public int getColumnCount() {
27 // column 1 is for the round number
28 return 1 + model.getParties().size();
29 }
30
31 @Override
32 public String getColumnName(int columnIndex) {
33 if (columnIndex == 0) {
34 return "Round - Turn";
35 }
36 return model.getParties().get(columnIndex - 1).getID().toString();
37 }
38
39 @Override
40 public Class<?> getColumnClass(int columnIndex) {
41 return columnIndex == 0 ? String.class : Double.class;
42 }
43
44 @Override
45 public boolean isCellEditable(int rowIndex, int columnIndex) {
46 return false;
47 }
48
49 @Override
50 public Object getValueAt(int rowIndex, int columnIndex) {
51 Outcome outcome = model.get(rowIndex);
52 if (columnIndex == 0) {
53 return outcome.getRound() + "-" + outcome.getTurn();
54 }
55 return outcome.getDiscountedUtilities().get(columnIndex - 1);
56 }
57
58 @Override
59 public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
60 }
61
62 @Override
63 public void addTableModelListener(TableModelListener l) {
64 model.addListDataListener(new myListenerAdapter(l, this));
65 }
66
67 @Override
68 public void removeTableModelListener(TableModelListener l) {
69 model.removeListDataListener(new myListenerAdapter(l, this));
70
71 }
72
73}
74
75/**
76 * Adapts a ListDataListener to a TableModelListener
77 */
78class myListenerAdapter implements ListDataListener {
79
80 private TableModelListener listener;
81 private TableModel model;
82
83 public myListenerAdapter(TableModelListener l, TableModel model) {
84 this.listener = l;
85 this.model = model;
86 }
87
88 @Override
89 public void intervalAdded(ListDataEvent e) {
90 listener.tableChanged(new TableModelEvent(model, e.getIndex0(), e.getIndex1(), TableModelEvent.ALL_COLUMNS,
91 TableModelEvent.INSERT));
92 }
93
94 @Override
95 public void intervalRemoved(ListDataEvent e) {
96 // not supported. Just repaint all.
97 listener.tableChanged(null);
98 }
99
100 @Override
101 public void contentsChanged(ListDataEvent e) {
102 listener.tableChanged(new TableModelEvent(null, e.getIndex0(), e.getIndex1(), TableModelEvent.ALL_COLUMNS,
103 TableModelEvent.INSERT));
104 }
105
106 @Override
107 public int hashCode() {
108 final int prime = 31;
109 int result = 1;
110 result = prime * result + ((listener == null) ? 0 : listener.hashCode());
111 return result;
112 }
113
114 @Override
115 public boolean equals(Object obj) {
116 if (this == obj)
117 return true;
118 if (obj == null)
119 return false;
120 if (getClass() != obj.getClass())
121 return false;
122 myListenerAdapter other = (myListenerAdapter) obj;
123 if (listener == null) {
124 if (other.listener != null)
125 return false;
126 } else if (!listener.equals(other.listener))
127 return false;
128 return true;
129 }
130
131}
Note: See TracBrowser for help on using the repository browser.