forked from External/mage
Fixed broken tables selection in lobby
This commit is contained in:
parent
66aab73cfa
commit
253c580639
6 changed files with 539 additions and 478 deletions
|
|
@ -0,0 +1,145 @@
|
|||
package mage.client.table;
|
||||
|
||||
import mage.remote.MageRemoteException;
|
||||
import mage.view.MatchView;
|
||||
|
||||
import javax.swing.table.AbstractTableModel;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
|
||||
public class MatchesTableModel extends AbstractTableModel {
|
||||
|
||||
private final String[] columnNames = new String[]{"Deck Type", "Players", "Game Type", "Rating", "Result", "Duration", "Start Time", "End Time", "Action"};
|
||||
public static final int COLUMN_DURATION = 5;
|
||||
public static final int COLUMN_START = 6;
|
||||
public static final int COLUMN_END = 7;
|
||||
public static final int COLUMN_ACTION = 8; // column the action is located (starting with 0)
|
||||
|
||||
private MatchView[] matches = new MatchView[0];
|
||||
|
||||
public void loadData(Collection<MatchView> matches) throws MageRemoteException {
|
||||
this.matches = matches.toArray(new MatchView[0]);
|
||||
this.fireTableDataChanged();
|
||||
}
|
||||
|
||||
MatchesTableModel() {
|
||||
}
|
||||
|
||||
|
||||
public String getTableAndGameInfo(int row) {
|
||||
return this.matches[row].getTableId().toString() + ";" + (!matches[row].getGames().isEmpty() ? matches[row].getGames().get(0).toString() : "null");
|
||||
}
|
||||
|
||||
public String findTableAndGameInfoByRow(int row) {
|
||||
if (row >= 0 && row < this.matches.length) {
|
||||
return getTableAndGameInfo(row);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public int findRowByTableAndGameInfo(String tableAndGame) {
|
||||
for (int i = 0; i < this.matches.length; i++) {
|
||||
String rowID = this.matches[i].getTableId().toString() + ";" + (!this.matches[i].getGames().isEmpty() ? this.matches[i].getGames().get(0).toString() : "null");
|
||||
if (tableAndGame.equals(rowID)) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRowCount() {
|
||||
return matches.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getColumnCount() {
|
||||
return columnNames.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getValueAt(int arg0, int arg1) {
|
||||
switch (arg1) {
|
||||
case 0:
|
||||
return matches[arg0].getDeckType();
|
||||
case 1:
|
||||
return matches[arg0].getPlayers();
|
||||
case 2:
|
||||
return matches[arg0].getGameType();
|
||||
case 3:
|
||||
return matches[arg0].isRated() ? TablesTableModel.RATED_VALUE_YES : TablesTableModel.RATED_VALUE_NO;
|
||||
case 4:
|
||||
return matches[arg0].getResult();
|
||||
case 5:
|
||||
if (matches[arg0].getEndTime() != null) {
|
||||
return matches[arg0].getEndTime().getTime() - matches[arg0].getStartTime().getTime() + new Date().getTime();
|
||||
} else {
|
||||
return 0L;
|
||||
}
|
||||
case 6:
|
||||
return matches[arg0].getStartTime();
|
||||
case 7:
|
||||
return matches[arg0].getEndTime();
|
||||
case 8:
|
||||
if (matches[arg0].isTournament()) {
|
||||
return "Show";
|
||||
} else if (matches[arg0].isReplayAvailable()) {
|
||||
return "Replay";
|
||||
} else {
|
||||
return "None";
|
||||
}
|
||||
case 9:
|
||||
return matches[arg0].getGames();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public java.util.List<UUID> getListofGames(int row) {
|
||||
return matches[row].getGames();
|
||||
}
|
||||
|
||||
public boolean isTournament(int row) {
|
||||
return matches[row].isTournament();
|
||||
}
|
||||
|
||||
public UUID getMatchId(int row) {
|
||||
return matches[row].getMatchId();
|
||||
}
|
||||
|
||||
public UUID getTableId(int row) {
|
||||
return matches[row].getTableId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getColumnName(int columnIndex) {
|
||||
String colName = "";
|
||||
|
||||
if (columnIndex <= getColumnCount()) {
|
||||
colName = columnNames[columnIndex];
|
||||
}
|
||||
|
||||
return colName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class getColumnClass(int columnIndex) {
|
||||
switch (columnIndex) {
|
||||
case COLUMN_DURATION:
|
||||
return Long.class;
|
||||
case COLUMN_START:
|
||||
return Date.class;
|
||||
case COLUMN_END:
|
||||
return Date.class;
|
||||
default:
|
||||
return String.class;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCellEditable(int rowIndex, int columnIndex) {
|
||||
return columnIndex == COLUMN_ACTION;
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue