diff --git a/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.form b/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.form
index f3da192341..8eb281e623 100644
--- a/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.form
+++ b/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.form
@@ -30,50 +30,55 @@
-
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -81,87 +86,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
@@ -185,10 +231,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -267,6 +356,9 @@
+
+
+
diff --git a/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java b/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java
index 0f5f29b01b..b892d1968a 100644
--- a/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java
+++ b/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java
@@ -52,6 +52,7 @@ import mage.client.MageFrame;
import mage.client.chat.ChatPanel;
import mage.client.dialog.PreferencesDialog;
import mage.client.util.ButtonColumn;
+import mage.client.util.Format;
import mage.remote.Session;
import mage.view.RoundView;
import mage.view.TournamentGameView;
@@ -208,9 +209,20 @@ public class TournamentPanel extends javax.swing.JPanel {
firstInitDone = true;
}
+ switch (tournament.getTournamentState()) {
+ case "Constructing":
+ String constructionTime = Format.getDuration(tournament.getConstructionTime() - (tournament.getServerTime().getTime() - tournament.getStepStartTime().getTime())/1000);
+ txtTournamentState.setText(new StringBuilder(tournament.getTournamentState()).append(" (").append(constructionTime).append(")").toString());
+ break;
+ case "Dueling":
+ String duelingTime = Format.getDuration((tournament.getServerTime().getTime() - tournament.getStepStartTime().getTime())/1000);
+ txtTournamentState.setText(new StringBuilder(tournament.getTournamentState()).append(" (").append(duelingTime).append(")").toString());
+ break;
+ default:
+ txtTournamentState.setText(tournament.getTournamentState());
+ break;
+ }
- txtTournamentState.setText(tournament.getTournamentState());
-
if (txtEndTime == null) {
return;
}
@@ -263,17 +275,18 @@ public class TournamentPanel extends javax.swing.JPanel {
private void initComponents() {
actionPanel = new javax.swing.JPanel();
- lblName = new javax.swing.JLabel();
txtName = new javax.swing.JTextField();
- lblType = new javax.swing.JLabel();
txtType = new javax.swing.JTextField();
- lblStartTime = new javax.swing.JLabel();
txtStartTime = new javax.swing.JTextField();
txtEndTime = new javax.swing.JTextField();
- lblTournamentState = new javax.swing.JLabel();
txtTournamentState = new javax.swing.JTextField();
btnQuitTournament = new javax.swing.JButton();
btnCloseWindow = new javax.swing.JButton();
+ lblName = new javax.swing.JLabel();
+ lblType = new javax.swing.JLabel();
+ lblState = new javax.swing.JLabel();
+ lblStartTime = new javax.swing.JLabel();
+ lblEndTime = new javax.swing.JLabel();
jSplitPane2 = new javax.swing.JSplitPane();
jSplitPane1 = new javax.swing.JSplitPane();
jScrollPane1 = new javax.swing.JScrollPane();
@@ -284,36 +297,49 @@ public class TournamentPanel extends javax.swing.JPanel {
setPreferredSize(new java.awt.Dimension(908, 580));
- lblName.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
- lblName.setText("Name:");
+ actionPanel.setBackground(java.awt.SystemColor.controlHighlight);
+ actionPanel.setFont(new java.awt.Font("Arial", 0, 10)); // NOI18N
txtName.setEditable(false);
txtName.setHorizontalAlignment(javax.swing.JTextField.LEFT);
+ txtName.setBorder(javax.swing.BorderFactory.createEtchedBorder());
txtName.setFocusable(false);
txtName.setMaximumSize(new java.awt.Dimension(50, 22));
-
- lblType.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
- lblType.setText("Type:");
+ txtName.setOpaque(false);
+ txtName.setRequestFocusEnabled(false);
+ txtName.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ txtNameActionPerformed(evt);
+ }
+ });
txtType.setEditable(false);
txtType.setHorizontalAlignment(javax.swing.JTextField.LEFT);
+ txtType.setBorder(javax.swing.BorderFactory.createEtchedBorder());
txtType.setFocusable(false);
-
- lblStartTime.setText("Start / end time:");
+ txtType.setOpaque(false);
+ txtType.setRequestFocusEnabled(false);
txtStartTime.setEditable(false);
txtStartTime.setHorizontalAlignment(javax.swing.JTextField.CENTER);
+ txtStartTime.setBorder(javax.swing.BorderFactory.createEtchedBorder());
txtStartTime.setFocusable(false);
+ txtStartTime.setOpaque(false);
+ txtStartTime.setRequestFocusEnabled(false);
txtEndTime.setEditable(false);
txtEndTime.setHorizontalAlignment(javax.swing.JTextField.CENTER);
+ txtEndTime.setBorder(javax.swing.BorderFactory.createEtchedBorder());
txtEndTime.setFocusable(false);
-
- lblTournamentState.setText("State:");
+ txtEndTime.setOpaque(false);
+ txtEndTime.setRequestFocusEnabled(false);
txtTournamentState.setEditable(false);
txtTournamentState.setHorizontalAlignment(javax.swing.JTextField.CENTER);
+ txtTournamentState.setBorder(javax.swing.BorderFactory.createEtchedBorder());
txtTournamentState.setFocusable(false);
+ txtTournamentState.setOpaque(false);
+ txtTournamentState.setRequestFocusEnabled(false);
btnQuitTournament.setText("Quit Tournament");
btnQuitTournament.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
@@ -331,59 +357,88 @@ public class TournamentPanel extends javax.swing.JPanel {
}
});
+ lblName.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N
+ lblName.setText("Name:");
+
+ lblType.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N
+ lblType.setText("Type:");
+
+ lblState.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N
+ lblState.setText("State:");
+
+ lblStartTime.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N
+ lblStartTime.setText("Start time:");
+
+ lblEndTime.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N
+ lblEndTime.setText("End time:");
+
javax.swing.GroupLayout actionPanelLayout = new javax.swing.GroupLayout(actionPanel);
actionPanel.setLayout(actionPanelLayout);
actionPanelLayout.setHorizontalGroup(
actionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(actionPanelLayout.createSequentialGroup()
.addContainerGap()
- .addGroup(actionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+ .addGroup(actionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(lblName)
- .addComponent(lblType))
+ .addComponent(lblState)
+ .addComponent(txtName, javax.swing.GroupLayout.DEFAULT_SIZE, 260, Short.MAX_VALUE)
+ .addComponent(txtTournamentState))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(actionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
- .addComponent(txtName, javax.swing.GroupLayout.DEFAULT_SIZE, 175, Short.MAX_VALUE)
- .addComponent(txtType))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(actionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
- .addComponent(lblStartTime)
- .addComponent(lblTournamentState))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(actionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
- .addComponent(txtTournamentState)
- .addComponent(txtStartTime, javax.swing.GroupLayout.DEFAULT_SIZE, 203, Short.MAX_VALUE))
- .addGroup(actionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(lblType)
+ .addComponent(txtType, javax.swing.GroupLayout.PREFERRED_SIZE, 440, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(actionPanelLayout.createSequentialGroup()
- .addGap(6, 6, 6)
- .addComponent(txtEndTime, javax.swing.GroupLayout.PREFERRED_SIZE, 203, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, 47, Short.MAX_VALUE)
- .addComponent(btnQuitTournament, javax.swing.GroupLayout.PREFERRED_SIZE, 129, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, actionPanelLayout.createSequentialGroup()
- .addGap(154, 154, 154)
- .addComponent(btnCloseWindow, javax.swing.GroupLayout.PREFERRED_SIZE, 129, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addGroup(actionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(txtStartTime, javax.swing.GroupLayout.PREFERRED_SIZE, 220, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(lblStartTime))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(actionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(lblEndTime)
+ .addComponent(txtEndTime))))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 126, Short.MAX_VALUE)
+ .addGroup(actionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(btnQuitTournament, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(btnCloseWindow, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
actionPanelLayout.setVerticalGroup(
actionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(actionPanelLayout.createSequentialGroup()
- .addContainerGap()
- .addGroup(actionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(lblName, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(txtName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(lblStartTime)
- .addComponent(txtStartTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(btnQuitTournament)
- .addComponent(txtEndTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(actionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(lblType)
- .addComponent(txtType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(btnCloseWindow)
- .addComponent(lblTournamentState)
- .addComponent(txtTournamentState, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGap(0, 0, Short.MAX_VALUE))
+ .addGroup(actionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(actionPanelLayout.createSequentialGroup()
+ .addGap(7, 7, 7)
+ .addComponent(lblName))
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, actionPanelLayout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(lblType)))
+ .addGroup(actionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(actionPanelLayout.createSequentialGroup()
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(actionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(txtType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(btnQuitTournament))
+ .addGap(13, 13, 13)
+ .addComponent(btnCloseWindow))
+ .addGroup(actionPanelLayout.createSequentialGroup()
+ .addGap(6, 6, 6)
+ .addComponent(txtName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(actionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(lblState)
+ .addComponent(lblStartTime)
+ .addComponent(lblEndTime))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(actionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(actionPanelLayout.createSequentialGroup()
+ .addComponent(txtTournamentState, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(0, 0, Short.MAX_VALUE))
+ .addGroup(actionPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(txtStartTime)
+ .addComponent(txtEndTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))))
+ .addContainerGap())
);
+ jSplitPane2.setBackground(java.awt.SystemColor.controlHighlight);
jSplitPane2.setResizeWeight(1.0);
jSplitPane2.setToolTipText("");
@@ -407,6 +462,8 @@ public class TournamentPanel extends javax.swing.JPanel {
jSplitPane1.setBottomComponent(jScrollPane2);
jSplitPane2.setLeftComponent(jSplitPane1);
+
+ chatPanel1.setStartMessageDone(true);
jSplitPane2.setRightComponent(chatPanel1);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
@@ -421,7 +478,8 @@ 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, 511, Short.MAX_VALUE))
+ .addComponent(jSplitPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 454, Short.MAX_VALUE)
+ .addContainerGap())
);
}// //GEN-END:initComponents
@@ -436,6 +494,10 @@ public class TournamentPanel extends javax.swing.JPanel {
}//GEN-LAST:event_btnQuitTournamentActionPerformed
+ private void txtNameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtNameActionPerformed
+ // TODO add your handling code here:
+ }//GEN-LAST:event_txtNameActionPerformed
+
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel actionPanel;
@@ -446,9 +508,10 @@ public class TournamentPanel extends javax.swing.JPanel {
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JSplitPane jSplitPane1;
private javax.swing.JSplitPane jSplitPane2;
+ private javax.swing.JLabel lblEndTime;
private javax.swing.JLabel lblName;
private javax.swing.JLabel lblStartTime;
- private javax.swing.JLabel lblTournamentState;
+ private javax.swing.JLabel lblState;
private javax.swing.JLabel lblType;
private javax.swing.JTable tableMatches;
private javax.swing.JTable tablePlayers;
diff --git a/Mage.Common/src/mage/view/TournamentView.java b/Mage.Common/src/mage/view/TournamentView.java
index 27d471ca21..4332df9b57 100644
--- a/Mage.Common/src/mage/view/TournamentView.java
+++ b/Mage.Common/src/mage/view/TournamentView.java
@@ -50,7 +50,9 @@ public class TournamentView implements Serializable {
private final Date startTime;
private final Date endTime;
-
+ private final Date stepStartTime;
+ private final Date serverTime;
+ private final int constructionTime;
private final boolean watchingAllowed;
private final List rounds = new ArrayList<>();
@@ -60,10 +62,14 @@ public class TournamentView implements Serializable {
public TournamentView(Tournament tournament) {
tournamentName = tournament.getOptions().getName();
- tournamentType = tournament.getOptions().getTournamentType();
+
+ tournamentType = new StringBuilder(tournament.getOptions().getTournamentType()).append(" ").append(tournament.getNumberRounds()).append(" rounds").toString();
startTime = tournament.getStartTime();
endTime = tournament.getEndTime();
+ stepStartTime = tournament.getStepStartTime();
+ constructionTime = tournament.getOptions().getLimitedOptions().getConstructionTime();
watchingAllowed = tournament.getOptions().isWatchingAllowed();
+ serverTime = new Date();
tournamentState = tournament.getTournamentState();
for (TournamentPlayer player: tournament.getPlayers()) {
@@ -109,5 +115,17 @@ public class TournamentView implements Serializable {
public String getTournamentState() {
return tournamentState;
}
+
+ public Date getStepStartTime() {
+ return stepStartTime;
+ }
+
+ public int getConstructionTime() {
+ return constructionTime;
+ }
+
+ public Date getServerTime() {
+ return serverTime;
+ }
}