diff --git a/Mage.Client/src/main/java/mage/client/draft/DraftGrid.java b/Mage.Client/src/main/java/mage/client/draft/DraftGrid.java index 32428a7e588..f7569e86df5 100644 --- a/Mage.Client/src/main/java/mage/client/draft/DraftGrid.java +++ b/Mage.Client/src/main/java/mage/client/draft/DraftGrid.java @@ -46,7 +46,18 @@ public class DraftGrid extends javax.swing.JPanel implements CardEventProducer { // ENABLE picks and other actions cardEventSource.addListener(event -> { if (this.parentPanel == null) { - this.parentPanel = (DraftPanel) this.getParent(); + // find draft panel + DraftPanel found = null; + for(Component p = this; p != null; p = p.getParent()) { + if (p instanceof DraftPanel) { + found = (DraftPanel) p; + } + } + if (found != null) { + this.parentPanel = found; + } else { + throw new IllegalArgumentException("Wrong code usage: can't find DraftPanel from a DraftGrid - check form structure."); + } } if (event.getEventType() == ClientEventType.CARD_DOUBLE_CLICK diff --git a/Mage.Client/src/main/java/mage/client/draft/DraftPanel.form b/Mage.Client/src/main/java/mage/client/draft/DraftPanel.form index db753ae10a3..e616cbbe6c8 100644 --- a/Mage.Client/src/main/java/mage/client/draft/DraftPanel.form +++ b/Mage.Client/src/main/java/mage/client/draft/DraftPanel.form @@ -1,6 +1,6 @@ -
+ @@ -21,34 +21,23 @@ - - - - - - + + + + - - - - - - + + - + - - - - - @@ -58,208 +47,248 @@ + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - + - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - + - - + - - - - - + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -278,11 +307,6 @@ - - - - - @@ -295,6 +319,9 @@ + + + @@ -306,6 +333,10 @@ + + + + @@ -317,6 +348,9 @@ + + + @@ -328,6 +362,9 @@ + + + @@ -339,6 +376,9 @@ + + + @@ -350,6 +390,9 @@ + + + @@ -361,6 +404,9 @@ + + + @@ -372,6 +418,9 @@ + + + @@ -396,11 +445,6 @@ - - - - - @@ -421,11 +465,6 @@ - - - - - @@ -438,6 +477,7 @@ + @@ -449,6 +489,7 @@ + @@ -460,6 +501,7 @@ + @@ -471,6 +513,8 @@ + + @@ -482,6 +526,7 @@ + @@ -493,6 +538,7 @@ + @@ -504,6 +550,7 @@ + @@ -515,6 +562,7 @@ + @@ -524,31 +572,74 @@ + + + + + + + + + + + + + - - - - - - - - - - + - + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java b/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java index 9b7998bda52..ada35d86b33 100644 --- a/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java +++ b/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java @@ -27,6 +27,8 @@ import java.text.SimpleDateFormat; import java.util.List; import java.util.*; + import java.util.concurrent.atomic.AtomicInteger; + import java.util.stream.Collectors; /** * Game GUI: draft panel for drafting game mode only @@ -91,12 +93,26 @@ private Listener selectedCardsListener = null; private Listener pickingCardsListener = null; + private Map> playerLabels = new LinkedHashMap<>(); + /** * Creates new form DraftPanel */ public DraftPanel() { initComponents(); + // keep player labels for auto-sizing + playerLabels.put(panelPlayersLeft, Arrays.stream(panelPlayersLeft.getComponents()) + .filter(c -> c instanceof JLabel) + .map(c -> (JLabel) c) + .collect(Collectors.toList()) + ); + playerLabels.put(panelPlayersRight, Arrays.stream(panelPlayersRight.getComponents()) + .filter(c -> c instanceof JLabel) + .map(c -> (JLabel) c) + .collect(Collectors.toList()) + ); + draftBooster.setOpaque(false); draftPicks.setSortSetting(SortSettingDraft.getInstance()); draftPicks.setOpaque(false); @@ -109,8 +125,6 @@ addPopupMenuCardPanel(); this.add(popupMenuCardPanel); - panelInfo.setOpaque(false); - countdown = new Timer(1000, e -> { if (--timeout > 0) { @@ -183,40 +197,80 @@ this.checkPack1.setSelected(draftView.getBoosterNum() > 1); this.checkPack2.setSelected(draftView.getBoosterNum() > 2); this.checkPack3.setSelected(draftView.getBoosterNum() > 3); - this.editCardNumber.setText(Integer.toString(draftView.getCardNum())); + this.labelCardNumber.setText("Card #" + Integer.toString(draftView.getCardNum())); packNo = draftView.getBoosterNum(); pickNo = draftView.getCardNum(); setCodes = draftView.getSetCodes(); draftLogger.updateDraft(draftId, draftView); - int right = draftView.getPlayers().size() / 2; - int left = draftView.getPlayers().size() - right; - int height = left * 18; - labelTableImage.setSize(new Dimension(labelTableImage.getWidth(), height)); // TODO: Can we fix this for Rich Draft where there is no direction? Image tableImage = ImageHelper.getImageFromResources(draftView.getBoosterNum() % 2 == 1 ? "/draft/table_left.png" : "/draft/table_right.png"); BufferedImage resizedTable = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(tableImage, BufferedImage.TYPE_INT_ARGB), labelTableImage.getWidth(), labelTableImage.getHeight()); labelTableImage.setIcon(new ImageIcon(resizedTable)); + clearPlayerNames(); int count = 0; - int numberPlayers = draftView.getPlayers().size(); for (String playerName : draftView.getPlayers()) { count++; - setPlayerNameToLabel(playerName, count, numberPlayers); + setPlayerNameToLabel(playerName, count, draftView.getPlayers().size()); } + hideUnusedPlayerNames(); + + // TODO: auto-resize for players list doesn't work with layouts, wtf + int rightAmount = draftView.getPlayers().size() / 2; + int leftAmount = draftView.getPlayers().size() - rightAmount; + int height = leftAmount * 18; + //labelTableImage.setSize(new Dimension(labelTableImage.getWidth(), height)); + //panelPlayers.setSize(new Dimension(panelPlayers.getSize().width, height)); } - private void setPlayerNameToLabel(String name, int index, int players) { + private void clearPlayerNames() { + playerLabels.forEach((panel, labels) -> { + labels.forEach(label -> { + label.setText(""); + }); + }); + } + + private void hideUnusedPlayerNames() { + int maxPlayersPerPanel = 8; + playerLabels.forEach((panel, labels) -> { + AtomicInteger hiddenCount = new AtomicInteger(0); + labels.forEach(label -> { + if (label.getText().isEmpty()) { + hiddenCount.incrementAndGet(); + panel.remove(label); + } else { + panel.add(label); + } + }); + // update grid layout + GridLayout gridLayout = (GridLayout) panel.getLayout(); + gridLayout.setRows(maxPlayersPerPanel - hiddenCount.get()); + }); + + // fix same grid sizes for good names position + int maxRows = playerLabels.keySet() + .stream() + .mapToInt(panel -> ((GridLayout) panel.getLayout()).getRows()) + .max() + .orElse(1); + playerLabels.keySet().forEach(panel -> { + ((GridLayout) panel.getLayout()).setRows(maxRows); + }); + } + + private void setPlayerNameToLabel(String name, int playerNumber, int totalPlayers) { int tablePosition; - int right = players / 2; - int left = players - right; - if (index <= left) { + int rightAmount = totalPlayers / 2; + int leftAmount = totalPlayers - rightAmount; + if (playerNumber <= leftAmount) { // left side down (1 - 8) - tablePosition = index; + tablePosition = playerNumber; } else { // right side up (16 - 9) - tablePosition = 9 + right - (index - left); + tablePosition = 9 + rightAmount - (playerNumber - leftAmount); } switch (tablePosition) { case 1: @@ -368,6 +422,19 @@ text = text + Integer.toString(second); } this.editTimeRemaining.setText(text); + + // red color for small time + Color timerColor; + if (s <= 10) { + timerColor = Color.RED; + } else if (s <= 30) { + timerColor = new Color(255, 160, 60); // orange + } else { + timerColor = Color.BLACK; + } + this.editTimeRemaining.setForeground(timerColor); + + // warning sound at the end if (s == 6 && !draftBooster.isEmptyGrid()) { AudioManager.playOnCountdown1(); } @@ -522,22 +589,27 @@ private void initComponents() { jSeparator1 = new javax.swing.JSeparator(); - panelInfo = new javax.swing.JPanel(); + panelLeft = new javax.swing.JPanel(); + panelCommands = new javax.swing.JPanel(); buttonQuitTournament = new javax.swing.JButton(); + panelInfo = new javax.swing.JPanel(); + editTimeRemaining = new javax.swing.JTextField(); + labelMessage = new javax.swing.JLabel(); + panelPacks = new javax.swing.JPanel(); + panelPack1 = new javax.swing.JPanel(); labelPack1 = new javax.swing.JLabel(); editPack1 = new javax.swing.JTextField(); checkPack1 = new javax.swing.JCheckBox(); + panelPack2 = new javax.swing.JPanel(); labelPack2 = new javax.swing.JLabel(); editPack2 = new javax.swing.JTextField(); checkPack2 = new javax.swing.JCheckBox(); + panelPack3 = new javax.swing.JPanel(); labelPack3 = new javax.swing.JLabel(); editPack3 = new javax.swing.JTextField(); checkPack3 = new javax.swing.JCheckBox(); + panelPackCard = new javax.swing.JPanel(); labelCardNumber = new javax.swing.JLabel(); - editCardNumber = new javax.swing.JTextField(); - editTimeRemaining = new javax.swing.JTextField(); - labelMessage = new javax.swing.JLabel(); - bigCard = new mage.client.cards.BigCard(); panelPlayers = new javax.swing.JPanel(); panelPlayersLeft = new javax.swing.JPanel(); labelPlayer01 = new javax.swing.JLabel(); @@ -558,13 +630,17 @@ labelPlayer14 = new javax.swing.JLabel(); labelPlayer15 = new javax.swing.JLabel(); labelPlayer16 = new javax.swing.JLabel(); + panelBigCard = new javax.swing.JPanel(); + bigCard = new mage.client.cards.BigCard(); + panelRight = new javax.swing.JPanel(); draftPicks = new mage.client.cards.CardsList(); draftBooster = new mage.client.draft.DraftGrid(); - panelInfo.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); - panelInfo.setFocusable(false); - panelInfo.setRequestFocusEnabled(false); - panelInfo.setVerifyInputWhenFocusTarget(false); + panelLeft.setFocusable(false); + panelLeft.setRequestFocusEnabled(false); + panelLeft.setVerifyInputWhenFocusTarget(false); + + panelCommands.setOpaque(false); buttonQuitTournament.setText("Quit Tournament"); buttonQuitTournament.setFocusable(false); @@ -573,43 +649,92 @@ buttonQuitTournamentActionPerformed(evt); } }); + panelCommands.add(buttonQuitTournament); + + panelInfo.setOpaque(false); + panelInfo.setLayout(new java.awt.BorderLayout()); + + editTimeRemaining.setEditable(false); + editTimeRemaining.setFont(new java.awt.Font("Tahoma", 0, 36)); // NOI18N + editTimeRemaining.setForeground(java.awt.Color.red); + editTimeRemaining.setHorizontalAlignment(javax.swing.JTextField.CENTER); + editTimeRemaining.setText("WAITING"); + editTimeRemaining.setBorder(null); + editTimeRemaining.setFocusable(false); + editTimeRemaining.setOpaque(false); + panelInfo.add(editTimeRemaining, java.awt.BorderLayout.CENTER); + + labelMessage.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + labelMessage.setText("Waiting start of the draft..."); + panelInfo.add(labelMessage, java.awt.BorderLayout.SOUTH); + + panelPack1.setLayout(new javax.swing.BoxLayout(panelPack1, javax.swing.BoxLayout.LINE_AXIS)); labelPack1.setText("Pack 1:"); + panelPack1.add(labelPack1); editPack1.setEditable(false); editPack1.setEnabled(false); editPack1.setPreferredSize(new java.awt.Dimension(130, 22)); + panelPack1.add(editPack1); + panelPack1.add(checkPack1); + + panelPack2.setLayout(new javax.swing.BoxLayout(panelPack2, javax.swing.BoxLayout.LINE_AXIS)); labelPack2.setText("Pack 2:"); + panelPack2.add(labelPack2); editPack2.setEditable(false); editPack2.setEnabled(false); editPack2.setPreferredSize(new java.awt.Dimension(130, 22)); + panelPack2.add(editPack2); + panelPack2.add(checkPack2); + + panelPack3.setLayout(new javax.swing.BoxLayout(panelPack3, javax.swing.BoxLayout.LINE_AXIS)); labelPack3.setText("Pack 3:"); + panelPack3.add(labelPack3); editPack3.setEditable(false); editPack3.setEnabled(false); editPack3.setPreferredSize(new java.awt.Dimension(130, 22)); + panelPack3.add(editPack3); + panelPack3.add(checkPack3); - labelCardNumber.setText("Card #:"); + panelPackCard.setLayout(new java.awt.BorderLayout()); - editCardNumber.setEditable(false); - editCardNumber.setEnabled(false); + labelCardNumber.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + labelCardNumber.setText("Card #123"); + panelPackCard.add(labelCardNumber, java.awt.BorderLayout.CENTER); - editTimeRemaining.setEditable(false); - editTimeRemaining.setForeground(java.awt.Color.red); - editTimeRemaining.setHorizontalAlignment(javax.swing.JTextField.CENTER); - editTimeRemaining.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); - - labelMessage.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - labelMessage.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); - labelMessage.setOpaque(true); - - bigCard.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); + javax.swing.GroupLayout panelPacksLayout = new javax.swing.GroupLayout(panelPacks); + panelPacks.setLayout(panelPacksLayout); + panelPacksLayout.setHorizontalGroup( + panelPacksLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelPacksLayout.createSequentialGroup() + .addContainerGap() + .addGroup(panelPacksLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(panelPack3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelPack1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelPack2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelPackCard, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap()) + ); + panelPacksLayout.setVerticalGroup( + panelPacksLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelPacksLayout.createSequentialGroup() + .addContainerGap() + .addComponent(panelPack1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(panelPack2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(panelPack3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(panelPackCard, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap()) + ); panelPlayers.setOpaque(false); - panelPlayers.setLayout(null); panelPlayersLeft.setFocusable(false); panelPlayersLeft.setMaximumSize(new java.awt.Dimension(80, 132)); @@ -622,6 +747,9 @@ labelPlayer01.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N labelPlayer01.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); + labelPlayer01.setText("player 1"); + labelPlayer01.setAlignmentX(1.0F); + labelPlayer01.setAlignmentY(0.0F); labelPlayer01.setFocusable(false); labelPlayer01.setRequestFocusEnabled(false); labelPlayer01.setVerifyInputWhenFocusTarget(false); @@ -629,6 +757,10 @@ labelPlayer02.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N labelPlayer02.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); + labelPlayer02.setText("player 2"); + labelPlayer02.setToolTipText(""); + labelPlayer02.setAlignmentX(1.0F); + labelPlayer02.setAlignmentY(0.0F); labelPlayer02.setFocusable(false); labelPlayer02.setRequestFocusEnabled(false); labelPlayer02.setVerifyInputWhenFocusTarget(false); @@ -636,6 +768,9 @@ labelPlayer03.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N labelPlayer03.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); + labelPlayer03.setText("player 3"); + labelPlayer03.setAlignmentX(1.0F); + labelPlayer03.setAlignmentY(0.0F); labelPlayer03.setFocusable(false); labelPlayer03.setRequestFocusEnabled(false); labelPlayer03.setVerifyInputWhenFocusTarget(false); @@ -643,6 +778,9 @@ labelPlayer04.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N labelPlayer04.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); + labelPlayer04.setText("player 4"); + labelPlayer04.setAlignmentX(1.0F); + labelPlayer04.setAlignmentY(0.0F); labelPlayer04.setFocusable(false); labelPlayer04.setRequestFocusEnabled(false); labelPlayer04.setVerifyInputWhenFocusTarget(false); @@ -650,6 +788,9 @@ labelPlayer05.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N labelPlayer05.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); + labelPlayer05.setText("player 5"); + labelPlayer05.setAlignmentX(1.0F); + labelPlayer05.setAlignmentY(0.0F); labelPlayer05.setFocusable(false); labelPlayer05.setRequestFocusEnabled(false); labelPlayer05.setVerifyInputWhenFocusTarget(false); @@ -657,6 +798,9 @@ labelPlayer06.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N labelPlayer06.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); + labelPlayer06.setText("player 6"); + labelPlayer06.setAlignmentX(1.0F); + labelPlayer06.setAlignmentY(0.0F); labelPlayer06.setFocusable(false); labelPlayer06.setRequestFocusEnabled(false); labelPlayer06.setVerifyInputWhenFocusTarget(false); @@ -664,6 +808,9 @@ labelPlayer07.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N labelPlayer07.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); + labelPlayer07.setText("player 7"); + labelPlayer07.setAlignmentX(1.0F); + labelPlayer07.setAlignmentY(0.0F); labelPlayer07.setFocusable(false); labelPlayer07.setRequestFocusEnabled(false); labelPlayer07.setVerifyInputWhenFocusTarget(false); @@ -671,14 +818,14 @@ labelPlayer08.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N labelPlayer08.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); + labelPlayer08.setText("player 8"); + labelPlayer08.setAlignmentX(1.0F); + labelPlayer08.setAlignmentY(0.0F); labelPlayer08.setFocusable(false); labelPlayer08.setRequestFocusEnabled(false); labelPlayer08.setVerifyInputWhenFocusTarget(false); panelPlayersLeft.add(labelPlayer08); - panelPlayers.add(panelPlayersLeft); - panelPlayersLeft.setBounds(0, 5, 90, 136); - labelTableImage.setBackground(new java.awt.Color(51, 102, 255)); labelTableImage.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); labelTableImage.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); @@ -687,8 +834,6 @@ labelTableImage.setOpaque(true); labelTableImage.setRequestFocusEnabled(false); labelTableImage.setVerifyInputWhenFocusTarget(false); - panelPlayers.add(labelTableImage); - labelTableImage.setBounds(95, 5, 40, 136); panelPlayersRight.setFocusable(false); panelPlayersRight.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N @@ -702,6 +847,7 @@ labelPlayer09.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N labelPlayer09.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + labelPlayer09.setText("player 9"); labelPlayer09.setFocusable(false); labelPlayer09.setRequestFocusEnabled(false); labelPlayer09.setVerifyInputWhenFocusTarget(false); @@ -709,6 +855,7 @@ labelPlayer10.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N labelPlayer10.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + labelPlayer10.setText("player 10"); labelPlayer10.setFocusable(false); labelPlayer10.setRequestFocusEnabled(false); labelPlayer10.setVerifyInputWhenFocusTarget(false); @@ -716,6 +863,7 @@ labelPlayer11.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N labelPlayer11.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + labelPlayer11.setText("player 11"); labelPlayer11.setFocusable(false); labelPlayer11.setRequestFocusEnabled(false); labelPlayer11.setVerifyInputWhenFocusTarget(false); @@ -723,6 +871,8 @@ labelPlayer12.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N labelPlayer12.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + labelPlayer12.setText("player 12"); + labelPlayer12.setToolTipText(""); labelPlayer12.setFocusable(false); labelPlayer12.setRequestFocusEnabled(false); labelPlayer12.setVerifyInputWhenFocusTarget(false); @@ -730,6 +880,7 @@ labelPlayer13.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N labelPlayer13.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + labelPlayer13.setText("player 13"); labelPlayer13.setFocusable(false); labelPlayer13.setRequestFocusEnabled(false); labelPlayer13.setVerifyInputWhenFocusTarget(false); @@ -737,6 +888,7 @@ labelPlayer14.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N labelPlayer14.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + labelPlayer14.setText("player 14"); labelPlayer14.setFocusable(false); labelPlayer14.setRequestFocusEnabled(false); labelPlayer14.setVerifyInputWhenFocusTarget(false); @@ -744,6 +896,7 @@ labelPlayer15.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N labelPlayer15.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + labelPlayer15.setText("player 15"); labelPlayer15.setFocusable(false); labelPlayer15.setRequestFocusEnabled(false); labelPlayer15.setVerifyInputWhenFocusTarget(false); @@ -751,87 +904,66 @@ labelPlayer16.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N labelPlayer16.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + labelPlayer16.setText("player 16"); labelPlayer16.setFocusable(false); labelPlayer16.setRequestFocusEnabled(false); labelPlayer16.setVerifyInputWhenFocusTarget(false); panelPlayersRight.add(labelPlayer16); - panelPlayers.add(panelPlayersRight); - panelPlayersRight.setBounds(140, 5, 90, 136); - - javax.swing.GroupLayout panelInfoLayout = new javax.swing.GroupLayout(panelInfo); - panelInfo.setLayout(panelInfoLayout); - panelInfoLayout.setHorizontalGroup( - panelInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelInfoLayout.createSequentialGroup() - .addGroup(panelInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelInfoLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(labelCardNumber) - .addGroup(panelInfoLayout.createSequentialGroup() - .addGroup(panelInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addGroup(javax.swing.GroupLayout.Alignment.LEADING, panelInfoLayout.createSequentialGroup() - .addComponent(labelPack2) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(editPack2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGroup(javax.swing.GroupLayout.Alignment.LEADING, panelInfoLayout.createSequentialGroup() - .addComponent(labelPack1) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(editPack1, javax.swing.GroupLayout.PREFERRED_SIZE, 165, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(javax.swing.GroupLayout.Alignment.LEADING, panelInfoLayout.createSequentialGroup() - .addComponent(labelPack3) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(editCardNumber) - .addComponent(editPack3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(checkPack3) - .addComponent(checkPack2) - .addComponent(checkPack1))) - .addGroup(panelInfoLayout.createSequentialGroup() - .addComponent(buttonQuitTournament) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(editTimeRemaining, javax.swing.GroupLayout.PREFERRED_SIZE, 94, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(panelInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(panelPlayers, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(labelMessage, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 231, Short.MAX_VALUE)))) - .addComponent(bigCard, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(0, 0, Short.MAX_VALUE)) + javax.swing.GroupLayout panelPlayersLayout = new javax.swing.GroupLayout(panelPlayers); + panelPlayers.setLayout(panelPlayersLayout); + panelPlayersLayout.setHorizontalGroup( + panelPlayersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelPlayersLayout.createSequentialGroup() + .addContainerGap() + .addComponent(panelPlayersLeft, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(labelTableImage, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(panelPlayersRight, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addContainerGap()) ); - panelInfoLayout.setVerticalGroup( - panelInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelInfoLayout.createSequentialGroup() - .addGroup(panelInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(buttonQuitTournament) - .addComponent(editTimeRemaining, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)) + panelPlayersLayout.setVerticalGroup( + panelPlayersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelPlayersLayout.createSequentialGroup() + .addGap(10, 10, 10) + .addGroup(panelPlayersLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(panelPlayersLeft, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(labelTableImage, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelPlayersRight, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap()) + ); + + panelBigCard.setLayout(new java.awt.BorderLayout()); + panelBigCard.add(bigCard, java.awt.BorderLayout.CENTER); + + javax.swing.GroupLayout panelLeftLayout = new javax.swing.GroupLayout(panelLeft); + panelLeft.setLayout(panelLeftLayout); + panelLeftLayout.setHorizontalGroup( + panelLeftLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelLeftLayout.createSequentialGroup() + .addContainerGap() + .addGroup(panelLeftLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(panelCommands, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelInfo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelPacks, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelBigCard, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addComponent(panelPlayers, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap()) + ); + panelLeftLayout.setVerticalGroup( + panelLeftLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelLeftLayout.createSequentialGroup() + .addComponent(panelCommands, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(panelInfo, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(checkPack1) - .addGroup(panelInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(labelPack1) - .addComponent(editPack1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addComponent(panelPacks, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(labelPack2) - .addComponent(editPack2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(checkPack2)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(labelPack3) - .addComponent(editPack3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(checkPack3)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(labelCardNumber) - .addComponent(editCardNumber, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(labelMessage, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(panelPlayers, javax.swing.GroupLayout.PREFERRED_SIZE, 148, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 55, Short.MAX_VALUE) - .addComponent(bigCard, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(panelPlayers, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 112, Short.MAX_VALUE) + .addComponent(panelBigCard, javax.swing.GroupLayout.PREFERRED_SIZE, 285, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap()) ); draftBooster.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); @@ -840,41 +972,58 @@ draftBooster.setLayout(draftBoosterLayout); draftBoosterLayout.setHorizontalGroup( draftBoosterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 738, Short.MAX_VALUE) + .addGap(0, 624, Short.MAX_VALUE) ); draftBoosterLayout.setVerticalGroup( draftBoosterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 439, Short.MAX_VALUE) ); + javax.swing.GroupLayout panelRightLayout = new javax.swing.GroupLayout(panelRight); + panelRight.setLayout(panelRightLayout); + panelRightLayout.setHorizontalGroup( + panelRightLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelRightLayout.createSequentialGroup() + .addContainerGap() + .addGroup(panelRightLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(draftPicks, javax.swing.GroupLayout.DEFAULT_SIZE, 626, Short.MAX_VALUE) + .addComponent(draftBooster, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap()) + ); + panelRightLayout.setVerticalGroup( + panelRightLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelRightLayout.createSequentialGroup() + .addContainerGap() + .addComponent(draftPicks, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(draftBooster, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap()) + ); + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() - .addComponent(panelInfo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, 0) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(draftPicks, javax.swing.GroupLayout.DEFAULT_SIZE, 740, Short.MAX_VALUE) - .addComponent(draftBooster, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addComponent(panelLeft, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(panelRight, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(panelInfo, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addComponent(draftPicks, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(draftBooster, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(panelLeft, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panelRight, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); }// //GEN-END:initComponents - private void buttonQuitTournamentActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonQuitTournamentActionPerformed - UserRequestMessage message = new UserRequestMessage("Confirm quit tournament", "Are you sure you want to quit the draft tournament?"); - message.setButton1("No", null); - message.setButton2("Yes", PlayerAction.CLIENT_QUIT_DRAFT_TOURNAMENT); - message.setTournamentId(draftId); - MageFrame.getInstance().showUserRequestDialog(message); - }//GEN-LAST:event_buttonQuitTournamentActionPerformed + private void buttonQuitTournamentActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonQuitTournamentActionPerformed + UserRequestMessage message = new UserRequestMessage("Confirm quit tournament", "Are you sure you want to quit the draft tournament?"); + message.setButton1("No", null); + message.setButton2("Yes", PlayerAction.CLIENT_QUIT_DRAFT_TOURNAMENT); + message.setTournamentId(draftId); + MageFrame.getInstance().showUserRequestDialog(message); + }//GEN-LAST:event_buttonQuitTournamentActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private mage.client.cards.BigCard bigCard; @@ -884,7 +1033,6 @@ private javax.swing.JCheckBox checkPack3; private mage.client.draft.DraftGrid draftBooster; private mage.client.cards.CardsList draftPicks; - private javax.swing.JTextField editCardNumber; private javax.swing.JTextField editPack1; private javax.swing.JTextField editPack2; private javax.swing.JTextField editPack3; @@ -912,10 +1060,19 @@ private javax.swing.JLabel labelPlayer15; private javax.swing.JLabel labelPlayer16; private javax.swing.JLabel labelTableImage; + private javax.swing.JPanel panelBigCard; + private javax.swing.JPanel panelCommands; private javax.swing.JPanel panelInfo; + private javax.swing.JPanel panelLeft; + private javax.swing.JPanel panelPack1; + private javax.swing.JPanel panelPack2; + private javax.swing.JPanel panelPack3; + private javax.swing.JPanel panelPackCard; + private javax.swing.JPanel panelPacks; private javax.swing.JPanel panelPlayers; private javax.swing.JPanel panelPlayersLeft; private javax.swing.JPanel panelPlayersRight; + private javax.swing.JPanel panelRight; // End of variables declaration//GEN-END:variables }