Added possibility to show tournament panel and watch tournament games (if allowed at tournament start) for spectators .

This commit is contained in:
LevelX2 2013-07-16 17:39:02 +02:00
parent 001f8ec1e6
commit 9838dea551
24 changed files with 520 additions and 311 deletions

View file

@ -63,11 +63,11 @@ public class TournamentPanel extends javax.swing.JPanel {
private static final Logger logger = Logger.getLogger(TournamentPanel.class);
private UUID tournamentId;
private boolean firstInitDone = false;
private Session session;
private TournamentPlayersTableModel playersModel;
private TournamentMatchesTableModel matchesModel;
private UpdateTournamentTask updateTask;
private boolean titleSet = false;
private DateFormat df;
/** Creates new form TournamentPanel */
@ -92,10 +92,15 @@ public class TournamentPanel extends javax.swing.JPanel {
int modelRow = Integer.valueOf( e.getActionCommand() );
UUID gameId = UUID.fromString((String)tableMatches.getValueAt(modelRow, 3));
String state = (String)tableMatches.getValueAt(modelRow, 4);
if (state.equals("Finished")) {
logger.info("Replaying game " + gameId);
session.replayGame(gameId);
String actionText = (String)tableMatches.getValueAt(modelRow, 6);
UUID tableId = UUID.fromString((String)matchesModel.getValueAt(modelRow, 7));
// if (state.equals("Finished") && action.equals("Replay")) {
// logger.info("Replaying game " + gameId);
// session.replayGame(gameId);
// }
if (state.equals("Dueling") && actionText.equals("Watch")) {
logger.info("Watching game " + gameId);
session.watchTournamentTable(tableId);
}
}
};
@ -121,6 +126,10 @@ public class TournamentPanel extends javax.swing.JPanel {
}
}
public UUID getTournamentId() {
return tournamentId;
}
public void hideTournament() {
stopTasks();
this.chatPanel1.disconnect();
@ -135,7 +144,7 @@ public class TournamentPanel extends javax.swing.JPanel {
public void update(TournamentView tournament) {
if (!titleSet) {
if (!firstInitDone) {
Component c = this.getParent();
while (c != null && !(c instanceof TournamentPane)) {
c = c.getParent();
@ -143,20 +152,17 @@ public class TournamentPanel extends javax.swing.JPanel {
if (c != null) {
((TournamentPane)c).setTitle("Tournament [" + tournament.getTournamentName() +"]");
}
titleSet = true;
txtName.setText(tournament.getTournamentName());
txtType.setText(tournament.getTournamentType());
txtStartTime.setText(df.format(tournament.getStartTime()));
txtEndTime.setText("running...");
firstInitDone = true;
}
txtName.setText(tournament.getTournamentName());
txtType.setText(tournament.getTournamentType());
txtStartTime.setText(df.format(tournament.getStartTime()));
if (tournament.getEndTime() != null) {
if (txtEndTime.getText().equals("running...") && tournament.getEndTime() != null) {
txtEndTime.setText(df.format(tournament.getEndTime()));
btnCloseWindow.setVisible(true);
} else {
txtEndTime.setText("running...");
btnCloseWindow.setVisible(false);
}
playersModel.loadData(tournament);
@ -241,7 +247,7 @@ public class TournamentPanel extends javax.swing.JPanel {
txtEndTime.setFocusable(false);
btnCloseWindow.setText("Close Window");
btnCloseWindow.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
btnCloseWindow.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnCloseWindow.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnCloseWindowActionPerformed(evt);
@ -331,7 +337,7 @@ public class TournamentPanel extends javax.swing.JPanel {
.addGroup(layout.createSequentialGroup()
.addComponent(actionPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jSplitPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 489, Short.MAX_VALUE))
.addComponent(jSplitPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 494, Short.MAX_VALUE))
);
}// </editor-fold>//GEN-END:initComponents
@ -422,9 +428,11 @@ class TournamentPlayersTableModel extends AbstractTableModel {
class TournamentMatchesTableModel extends AbstractTableModel {
private String[] columnNames = new String[]{"Round Number", "Players", "Match Id", "Game Id", "State", "Result", "Action"};
private TournamentGameView[] games = new TournamentGameView[0];
private boolean watchingAllowed;
public void loadData(TournamentView tournament) {
List<TournamentGameView> views = new ArrayList<TournamentGameView>();
watchingAllowed = tournament.isWatchingAllowed();
for (RoundView round: tournament.getRounds()) {
for (TournamentGameView game: round.getGames()) {
views.add(game);
@ -460,10 +468,15 @@ class TournamentMatchesTableModel extends AbstractTableModel {
case 5:
return games[arg0].getResult();
case 6:
if (games[arg0].getState().equals("Finished")) {
return "Replay";
// if (games[arg0].getState().equals("Finished")) {
// return "Replay";
// }
if (watchingAllowed && games[arg0].getState().equals("Dueling")) {
return "Watch";
}
return "";
case 7:
return games[arg0].getTableId().toString();
}
return "";
}