diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index c192a002eed..f677e8bba66 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -624,7 +624,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { lblStatus = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); - setMinimumSize(new java.awt.Dimension(1024, 768)); + setMinimumSize(new Dimension(800, 600)); desktopPane.setBackground(new java.awt.Color(204, 204, 204)); diff --git a/Mage.Client/src/main/java/mage/client/game/GamePane.java b/Mage.Client/src/main/java/mage/client/game/GamePane.java index 79b2a79de88..2c1d35cb974 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePane.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePane.java @@ -77,13 +77,7 @@ public class GamePane extends MagePane { gamePanel.replayGame(gameId); } - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ @SuppressWarnings("unchecked") - // //GEN-BEGIN:initComponents private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); @@ -95,20 +89,20 @@ public class GamePane extends MagePane { getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 894, Short.MAX_VALUE) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 600, Short.MAX_VALUE) + .addGap(0, 600, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 651, Short.MAX_VALUE) + .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE) + .addGap(0, 400, Short.MAX_VALUE) ); pack(); - }// //GEN-END:initComponents + } - // Variables declaration - do not modify//GEN-BEGIN:variables private mage.client.game.GamePanel gamePanel; private javax.swing.JScrollPane jScrollPane1; - // End of variables declaration//GEN-END:variables } diff --git a/Mage.Client/src/main/java/mage/client/game/GamePanel.java b/Mage.Client/src/main/java/mage/client/game/GamePanel.java index d3d774e6483..808e1e672b3 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java @@ -64,6 +64,8 @@ import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; import java.util.prefs.Preferences; import mage.client.components.MageComponents; +import javax.swing.GroupLayout.Alignment; +import javax.swing.LayoutStyle.ComponentPlacement; /** * @@ -87,25 +89,10 @@ public class GamePanel extends javax.swing.JPanel { private JLayeredPane jLayeredPane; private String chosenHandKey = "You"; - private static final int HAND_CARD_WIDTH = 75; - private static final Dimension handCardDimension = new Dimension(HAND_CARD_WIDTH, (int)(HAND_CARD_WIDTH * 3.5f / 2.5f)); - private static final Dimension handCardDimensionBig; - - static { - double factor = Config.handScalingFactor; - if (factor < 1) factor = 1; - if (factor > 2) factor = 2; - int width = (int)(factor * HAND_CARD_WIDTH); - handCardDimensionBig = new Dimension(width, (int)(width * 3.5f / 2.5f)); - } - /** Creates new form GamePanel */ public GamePanel() { initComponents(); - hand.setHScrollSpeed(8); - hand.setBackgroundColor(new Color(0, 0, 0, 100)); - hand.setVisibleIfEmpty(false); combat = new CombatDialog(); pickNumber = new PickNumberDialog(); MageFrame.getDesktop().add(combat, JLayeredPane.POPUP_LAYER); @@ -156,7 +143,7 @@ public class GamePanel extends javax.swing.JPanel { components.put("jSplitPane1", jSplitPane1); components.put("pnlBattlefield", pnlBattlefield); components.put("jPanel3", jPanel3); - components.put("hand", hand); + components.put("hand", handContainer); components.put("gameChatPanel", gameChatPanel); components.put("userChatPanel", userChatPanel); components.put("jLayeredPane", jLayeredPane); @@ -186,6 +173,22 @@ public class GamePanel extends javax.swing.JPanel { } } + private void sizeToScreen() { + Rectangle rect = this.getBounds(); + if (rect.height < 768) { + Dimension bbDimension = new Dimension(128, 184); + bigCard.setMaximumSize(bbDimension); + bigCard.setMinimumSize(bbDimension); + bigCard.setPreferredSize(bbDimension); + this.handContainer.sizeHand(0.6); + for (PlayAreaPanel p: players.values()) { + p.sizePlayer(); + } + } + this.revalidate(); + this.repaint(); + } + public synchronized void showGame(UUID gameId, UUID playerId) { this.gameId = gameId; this.playerId = playerId; @@ -202,6 +205,7 @@ public class GamePanel extends javax.swing.JPanel { this.gameChatPanel.connect(session.getGameChatId(gameId)); if (!session.joinGame(gameId)) hideGame(); + sizeToScreen(); } public synchronized void watchGame(UUID gameId) { @@ -219,6 +223,7 @@ public class GamePanel extends javax.swing.JPanel { this.gameChatPanel.connect(session.getGameChatId(gameId)); if (!session.watchGame(gameId)) hideGame(); + sizeToScreen(); } public synchronized void replayGame(UUID gameId) { @@ -235,6 +240,7 @@ public class GamePanel extends javax.swing.JPanel { this.gameChatPanel.clear(); if (!session.startReplay(gameId)) hideGame(); + sizeToScreen(); } public void hideGame() { @@ -321,7 +327,7 @@ public class GamePanel extends javax.swing.JPanel { public synchronized void updateGame(GameView game) { if (playerId == null || game.getHand() == null) { - this.hand.setVisible(false); + this.handContainer.setVisible(false); } else { handCards.clear(); handCards.put(YOUR_HAND, game.getHand()); @@ -336,8 +342,7 @@ public class GamePanel extends javax.swing.JPanel { if (!handCards.containsKey(chosenHandKey)) { chosenHandKey = YOUR_HAND; } - this.hand.loadCards(handCards.get(chosenHandKey), bigCard, gameId); - hand.setPreferredSize(new java.awt.Dimension((getHandCardDimension().width + 5) * game.getHand().size() + 5, getHandCardDimension().height + 20)); // for scroll + handContainer.loadCards(handCards.get(chosenHandKey), bigCard, gameId); // set visible only if we have any other hand visible than ours boolean previous = btnSwitchHands.isVisible(); @@ -547,21 +552,9 @@ public class GamePanel extends javax.swing.JPanel { return players; } - /*public javax.swing.JPanel getBattlefield() { - return pnlBattlefield; - }*/ - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ @SuppressWarnings("unchecked") - // //GEN-BEGIN:initComponents - // //GEN-END:initComponents private void initComponents() { - //abilityPicker = new mage.client.game.AbilityPicker(); abilityPicker = new mage.client.components.ability.AbilityPicker(); jSplitPane1 = new javax.swing.JSplitPane(); jPanel3 = new javax.swing.JPanel(); @@ -589,7 +582,6 @@ public class GamePanel extends javax.swing.JPanel { btnSkipForward = new javax.swing.JButton(); btnPreviousPlay = new javax.swing.JButton(); pnlBattlefield = new javax.swing.JPanel(); - hand = new mage.client.cards.Cards(true); gameChatPanel = new mage.client.chat.ChatPanel(); gameChatPanel.useExtendedView(ChatPanel.VIEW_MODE.GAME); userChatPanel = new mage.client.chat.ChatPanel(); @@ -597,10 +589,9 @@ public class GamePanel extends javax.swing.JPanel { userChatPanel.useExtendedView(ChatPanel.VIEW_MODE.CHAT); gameChatPanel.setConnectedChat(userChatPanel); gameChatPanel.disableInput(); -// jTabbedPane1 = new JTabbedPane(); jSplitPane2 = new javax.swing.JSplitPane(); + handContainer = new HandPanel(); - hand.setCardDimension(getHandCardDimension()); handCards = new HashMap(); jSplitPane1.setBorder(null); @@ -608,8 +599,6 @@ public class GamePanel extends javax.swing.JPanel { jSplitPane1.setResizeWeight(1.0); jSplitPane1.setOneTouchExpandable(true); jSplitPane1.setMinimumSize(new java.awt.Dimension(26, 48)); - //jSplitPane1.setDividerLocation(Integer.MAX_VALUE); - //pnlGameInfo.setBorder(javax.swing.BorderFactory.createEtchedBorder()); pnlGameInfo.setOpaque(false); lblPhase.setLabelFor(txtPhase); @@ -668,7 +657,6 @@ public class GamePanel extends javax.swing.JPanel { btnSwitchHandActionPerformed(null); } }); - //btnSwitchHands.setBorder(BorderFactory.createLineBorder(Color.red)); btnStopWatching.setText("Stop Watching"); btnStopWatching.addActionListener(new java.awt.event.ActionListener() { @@ -714,11 +702,11 @@ public class GamePanel extends javax.swing.JPanel { } }); - javax.swing.GroupLayout pnlReplayLayout = new javax.swing.GroupLayout(pnlReplay); - pnlReplay.setLayout(pnlReplayLayout); - pnlReplayLayout.setHorizontalGroup( - pnlReplayLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(pnlReplayLayout.createSequentialGroup() + javax.swing.GroupLayout gl_pnlReplay = new javax.swing.GroupLayout(pnlReplay); + pnlReplay.setLayout(gl_pnlReplay); + gl_pnlReplay.setHorizontalGroup( + gl_pnlReplay.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(gl_pnlReplay.createSequentialGroup() .addComponent(btnPreviousPlay, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btnPlay, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) @@ -729,8 +717,8 @@ public class GamePanel extends javax.swing.JPanel { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btnSkipForward, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)) ); - pnlReplayLayout.setVerticalGroup( - pnlReplayLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + gl_pnlReplay.setVerticalGroup( + gl_pnlReplay.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(btnSkipForward, 0, 0, Short.MAX_VALUE) .addComponent(btnNextPlay, 0, 0, Short.MAX_VALUE) .addComponent(btnStopReplay, 0, 0, Short.MAX_VALUE) @@ -738,27 +726,11 @@ public class GamePanel extends javax.swing.JPanel { .addComponent(btnPreviousPlay, javax.swing.GroupLayout.PREFERRED_SIZE, 31, Short.MAX_VALUE) ); - javax.swing.GroupLayout pnlGameInfoLayout = new javax.swing.GroupLayout(pnlGameInfo); - pnlGameInfo.setLayout(pnlGameInfoLayout); - pnlGameInfoLayout.setHorizontalGroup( - pnlGameInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - /*.addGroup(pnlGameInfoLayout.createSequentialGroup() - .addContainerGap() - .addGroup(pnlGameInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(lblPriority) - .addComponent(lblPhase) - .addComponent(lblStep) - .addComponent(lblTurn) - .addComponent(lblActivePlayer)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(pnlGameInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(txtActivePlayer, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE) - .addComponent(txtPriority, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE) - .addComponent(txtTurn, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE) - .addComponent(txtStep, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE) - .addComponent(txtPhase, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)) - .addContainerGap())*/ - .addGroup(pnlGameInfoLayout.createSequentialGroup() + javax.swing.GroupLayout gl_pnlGameInfo = new javax.swing.GroupLayout(pnlGameInfo); + pnlGameInfo.setLayout(gl_pnlGameInfo); + gl_pnlGameInfo.setHorizontalGroup( + gl_pnlGameInfo.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(gl_pnlGameInfo.createSequentialGroup() .addGap(10, 10, 10) .addComponent(btnConcede) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -769,45 +741,22 @@ public class GamePanel extends javax.swing.JPanel { .addComponent(bigCard, javax.swing.GroupLayout.DEFAULT_SIZE, 256, Short.MAX_VALUE) .addComponent(feedbackPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 256, Short.MAX_VALUE) .addComponent(stack, javax.swing.GroupLayout.DEFAULT_SIZE, 256, Short.MAX_VALUE) - .addGroup(pnlGameInfoLayout.createSequentialGroup() + .addGroup(gl_pnlGameInfo.createSequentialGroup() .addContainerGap() .addComponent(pnlReplay, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(51, Short.MAX_VALUE)) ); - pnlGameInfoLayout.setVerticalGroup( - pnlGameInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(pnlGameInfoLayout.createSequentialGroup() + gl_pnlGameInfo.setVerticalGroup( + gl_pnlGameInfo.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(gl_pnlGameInfo.createSequentialGroup() .addComponent(bigCard, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(1, 1, 1) .addComponent(feedbackPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 109, javax.swing.GroupLayout.PREFERRED_SIZE) - /*.addGap(7, 7, 7) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(pnlGameInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(lblPhase) - .addComponent(txtPhase, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(3, 3, 3) - .addGroup(pnlGameInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(lblStep) - .addComponent(txtStep, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(3, 3, 3) - .addGroup(pnlGameInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(lblTurn) - .addComponent(txtTurn, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(3, 3, 3) - .addGroup(pnlGameInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(lblActivePlayer) - .addComponent(txtActivePlayer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(3, 3, 3) - .addGroup(pnlGameInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(lblPriority) - .addComponent(txtPriority, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - */ .addComponent(stack, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 164, Short.MAX_VALUE) .addComponent(pnlReplay, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(pnlGameInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addGroup(gl_pnlGameInfo.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(btnConcede) .addComponent(btnSwitchHands) .addComponent(btnStopWatching))) @@ -862,45 +811,39 @@ public class GamePanel extends javax.swing.JPanel { jPhases.add(endOfTurn); jPhases.add(endButtonTip); - //hand.setPreferredSize(new java.awt.Dimension(Config.dimensions.frameWidth, Config.dimensions.frameHeight + 20)); // for scroll - hand.setBorder(emptyBorder); - hand.setZone(Constants.Zone.HAND.toString()); - HandContainer handContainer = new HandContainer(hand); + pnlReplay.setOpaque(false); + HelperPanel helper = new HelperPanel(); + feedbackPanel.setHelperPanel(helper); jSplitPane2.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); jSplitPane2.setResizeWeight(0.5); jSplitPane2.setLeftComponent(userChatPanel); jSplitPane2.setBottomComponent(gameChatPanel); -// jTabbedPane1.setTabPlacement(javax.swing.JTabbedPane.BOTTOM); -// jTabbedPane1.addTab("Game", gameChatPanel); -// jTabbedPane1.addTab("Chat", userChatPanel); -// jTabbedPane1.setSelectedIndex(1); - - javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); - jPanel3.setLayout(jPanel3Layout); - jPanel3Layout.setHorizontalGroup( - jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel3Layout.createSequentialGroup() - .addComponent(pnlGameInfo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, 0) - .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(handContainer, javax.swing.GroupLayout.DEFAULT_SIZE, 715, Short.MAX_VALUE) - .addComponent(pnlBattlefield, javax.swing.GroupLayout.DEFAULT_SIZE, 715, Short.MAX_VALUE) - .addComponent(jPhases, javax.swing.GroupLayout.DEFAULT_SIZE, 715, Short.MAX_VALUE) - )) + javax.swing.GroupLayout gl_jPanel3 = new javax.swing.GroupLayout(jPanel3); + gl_jPanel3.setHorizontalGroup( + gl_jPanel3.createParallelGroup(Alignment.LEADING) + .addGroup(gl_jPanel3.createSequentialGroup() + .addComponent(pnlGameInfo, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addGap(0) + .addGroup(gl_jPanel3.createParallelGroup(Alignment.LEADING) + .addComponent(handContainer, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(pnlBattlefield, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jPhases, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) ); - jPanel3Layout.setVerticalGroup( - jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() - .addComponent(pnlBattlefield, javax.swing.GroupLayout.DEFAULT_SIZE, 794, Short.MAX_VALUE) - .addGap(0, 0, 0) - .addComponent(handContainer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jPhases, GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(pnlGameInfo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + gl_jPanel3.setVerticalGroup( + gl_jPanel3.createParallelGroup(Alignment.TRAILING) + .addGroup(gl_jPanel3.createSequentialGroup() + .addComponent(pnlBattlefield, GroupLayout.DEFAULT_SIZE, 545, Short.MAX_VALUE) + .addPreferredGap(ComponentPlacement.RELATED) + .addComponent(handContainer, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addPreferredGap(ComponentPlacement.RELATED) + .addComponent(jPhases, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addComponent(pnlGameInfo, GroupLayout.DEFAULT_SIZE, 568, Short.MAX_VALUE) ); + jPanel3.setLayout(gl_jPanel3); - jPanel3.setMinimumSize(new Dimension(1024, 768)); + jPanel3.setMinimumSize(new Dimension(800, 600)); jSplitPane1.setLeftComponent(jPanel3); gameChatPanel.setMinimumSize(new java.awt.Dimension(100, 48)); @@ -938,8 +881,7 @@ public class GamePanel extends javax.swing.JPanel { if (chosenHandKey != null && chosenHandKey.length() > 0) { this.chosenHandKey = chosenHandKey; SimpleCardsView cards = handCards.get(chosenHandKey); - this.hand.loadCards(cards, bigCard, gameId); - hand.setPreferredSize(new java.awt.Dimension((getHandCardDimension().width + 5) * cards.size() + 5, getHandCardDimension().height + 20)); // for scroll + handContainer.loadCards(cards, bigCard, gameId); } } @@ -978,58 +920,6 @@ public class GamePanel extends javax.swing.JPanel { session.skipForward(gameId, 10); }//GEN-LAST:event_btnSkipForwardActionPerformed - private Dimension getHandCardDimension() { - Preferences pref = MageFrame.getPreferences(); - String useBigCards = pref.get(PreferencesDialog.KEY_HAND_USE_BIG_CARDS, "false"); - if (useBigCards.equals("true")) { - return handCardDimensionBig; - } - return handCardDimension; - } - - private class HandContainer extends JPanel { - - public HandContainer(Cards hand) { - super(); - initComponents(hand); - } - - public void initComponents(Cards hand) { - jPanel = new JPanel(); - jScrollPane1 = new JScrollPane(jPanel); - jScrollPane1.getViewport().setBackground(new Color(0,0,0,0)); - - jPanel.setLayout(new GridBagLayout()); // centers hand - jPanel.setBackground(new Color(0,0,0,0)); - jPanel.add(hand); - - HelperPanel helper = new HelperPanel(); - //helper.setBackground(new Color(0, 0, 0, 80)); - //helper.setPreferredSize(new Dimension(0, 35)); - - //feedbackPanel.setPreferredSize(new Dimension(0, 70)); - - setOpaque(false); - jPanel.setOpaque(false); - jScrollPane1.setOpaque(false); - pnlReplay.setOpaque(false); - - jPanel.setBorder(emptyBorder); - jScrollPane1.setBorder(emptyBorder); - jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); - jScrollPane1.getHorizontalScrollBar().setUnitIncrement(8); - - setLayout(new BorderLayout()); - add(jScrollPane1, BorderLayout.CENTER); - //add(helper, BorderLayout.PAGE_END); - //add(feedbackPanel, BorderLayout.PAGE_END); - feedbackPanel.setHelperPanel(helper); - } - - private JPanel jPanel; - private javax.swing.JScrollPane jScrollPane1; - } - public void setJLayeredPane(JLayeredPane jLayeredPane) { this.jLayeredPane = jLayeredPane; } @@ -1070,15 +960,12 @@ public class GamePanel extends javax.swing.JPanel { private javax.swing.JLabel txtPriority; private javax.swing.JLabel txtStep; private javax.swing.JLabel txtTurn; - // End of variables declaration//GEN-END:variables - private mage.client.cards.Cards hand; private Map handCards; private mage.client.cards.Cards stack; - -// private JTabbedPane jTabbedPane1; + private HandPanel handContainer; + private javax.swing.JSplitPane jSplitPane2; - private Border emptyBorder = new EmptyBorder(0,0,0,0); private Color prevBGColor; private final static Color DEFAULT_FOREGROUND_COLOR = Color.BLACK; private JPanel jPhases; diff --git a/Mage.Client/src/main/java/mage/client/game/HandPanel.java b/Mage.Client/src/main/java/mage/client/game/HandPanel.java new file mode 100644 index 00000000000..0a44aa8e091 --- /dev/null +++ b/Mage.Client/src/main/java/mage/client/game/HandPanel.java @@ -0,0 +1,90 @@ +package mage.client.game; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.GridBagLayout; +import java.util.UUID; +import java.util.prefs.Preferences; + +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.border.Border; +import javax.swing.border.EmptyBorder; + +import mage.Constants; +import mage.client.MageFrame; +import mage.client.cards.BigCard; +import mage.client.dialog.PreferencesDialog; +import mage.client.util.Config; +import mage.view.SimpleCardsView; + +public class HandPanel extends JPanel { + + private static final int CARD_WIDTH = 75; + + private Dimension handCardDimensionBig; + private Dimension handCardDimension; + + public HandPanel() { + double factor = 1; + sizeHand(factor); + initComponents(); + } + + public void initComponents() { + hand = new mage.client.cards.Cards(true); + hand.setCardDimension(getHandCardDimension()); + jPanel = new JPanel(); + jScrollPane1 = new JScrollPane(jPanel); + jScrollPane1.getViewport().setBackground(new Color(0,0,0,0)); + + jPanel.setLayout(new GridBagLayout()); // centers hand + jPanel.setBackground(new Color(0,0,0,0)); + jPanel.add(hand); + + setOpaque(false); + jPanel.setOpaque(false); + jScrollPane1.setOpaque(false); + + jPanel.setBorder(emptyBorder); + jScrollPane1.setBorder(emptyBorder); + jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); + jScrollPane1.getHorizontalScrollBar().setUnitIncrement(8); + + setLayout(new BorderLayout()); + add(jScrollPane1, BorderLayout.CENTER); + + hand.setHScrollSpeed(8); + hand.setBackgroundColor(new Color(0, 0, 0, 100)); + hand.setVisibleIfEmpty(false); + hand.setBorder(emptyBorder); + hand.setZone(Constants.Zone.HAND.toString()); + } + + public void loadCards(SimpleCardsView cards, BigCard bigCard, UUID gameId) { + hand.loadCards(cards, bigCard, gameId); + hand.setPreferredSize(new java.awt.Dimension((getHandCardDimension().width + 5) * cards.size() + 5, getHandCardDimension().height + 20)); // for scroll + } + + private Dimension getHandCardDimension() { + Preferences pref = MageFrame.getPreferences(); + String useBigCards = pref.get(PreferencesDialog.KEY_HAND_USE_BIG_CARDS, "false"); + if (useBigCards.equals("true")) { + return handCardDimensionBig; + } + return handCardDimension; + } + + public void sizeHand(double factor) { + int width = (int)(factor * CARD_WIDTH); + handCardDimension = new Dimension(CARD_WIDTH, (int)(CARD_WIDTH * 3.5f / 2.5f)); + handCardDimensionBig = new Dimension(CARD_WIDTH, (int)(width * 3.5f / 2.5f)); + } + + private JPanel jPanel; + private javax.swing.JScrollPane jScrollPane1; + private Border emptyBorder = new EmptyBorder(0,0,0,0); + private mage.client.cards.Cards hand; + +} diff --git a/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java b/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java index 391e340d656..0a5280ac70e 100644 --- a/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java +++ b/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java @@ -49,6 +49,8 @@ import mage.view.PlayerView; import javax.swing.*; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; +import javax.swing.GroupLayout.Alignment; +import javax.swing.LayoutStyle.ComponentPlacement; /** * @@ -60,8 +62,8 @@ public class PlayAreaPanel extends javax.swing.JPanel { UUID gameId; /** Creates new form PlayAreaPanel */ - public PlayAreaPanel(boolean me) { - initComponents(me); + public PlayAreaPanel() { + initComponents(); setOpaque(false); jPanel1.setOpaque(false); jScrollPane1.setOpaque(false); @@ -70,7 +72,7 @@ public class PlayAreaPanel extends javax.swing.JPanel { } public PlayAreaPanel(PlayerView player, BigCard bigCard, UUID gameId, boolean me) { - this(me); + this(); init(player, bigCard, gameId); update(player); } @@ -97,25 +99,16 @@ public class PlayAreaPanel extends javax.swing.JPanel { return battlefieldPanel; } - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ @SuppressWarnings("unchecked") - // //GEN-BEGIN:initComponents - private void initComponents(boolean me) { + private void initComponents() { setBorder(BorderFactory.createLineBorder(new Color(0,0,0,0))); jPanel1 = new javax.swing.JPanel(); - playerPanel = new PlayerPanelExt(me); - playerPanel.setPreferredSize(new Dimension(92, 250)); - //manaPool = new mage.client.game.ManaPool(); + playerPanel = new PlayerPanelExt(); + playerPanel.setPreferredSize(new Dimension(92, 212)); btnCheat = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); battlefieldPanel = new mage.client.game.BattlefieldPanel(jScrollPane1); - //jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); - btnCheat.setText("Cheat"); btnCheat.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { @@ -123,24 +116,18 @@ public class PlayAreaPanel extends javax.swing.JPanel { } }); - javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); - jPanel1.setLayout(jPanel1Layout); - jPanel1Layout.setHorizontalGroup( - jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - //.addComponent(manaPool, javax.swing.GroupLayout.DEFAULT_SIZE, 116, Short.MAX_VALUE) - .addComponent(playerPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - //.addComponent(btnCheat, javax.swing.GroupLayout.DEFAULT_SIZE, 116, Short.MAX_VALUE) + javax.swing.GroupLayout gl_jPanel1 = new javax.swing.GroupLayout(jPanel1); + gl_jPanel1.setHorizontalGroup( + gl_jPanel1.createParallelGroup(Alignment.LEADING) + .addComponent(playerPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); - jPanel1Layout.setVerticalGroup( - jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(playerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - //.addGap(0, 0, 0) - //.addComponent(manaPool, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - //.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 17, Short.MAX_VALUE) - //.addComponent(btnCheat) - ) + gl_jPanel1.setVerticalGroup( + gl_jPanel1.createParallelGroup(Alignment.LEADING) + .addGroup(gl_jPanel1.createSequentialGroup() + .addComponent(playerPanel, GroupLayout.PREFERRED_SIZE, 212, Short.MAX_VALUE) + .addContainerGap()) ); + jPanel1.setLayout(gl_jPanel1); jScrollPane1.setViewportView(battlefieldPanel); Border empty = new EmptyBorder(0,0,0,0); @@ -148,22 +135,29 @@ public class PlayAreaPanel extends javax.swing.JPanel { jScrollPane1.setViewportBorder(empty); 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(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, 0) - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 357, Short.MAX_VALUE) - ) + layout.createParallelGroup(Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(jPanel1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addPreferredGap(ComponentPlacement.RELATED) + .addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 366, Short.MAX_VALUE) + .addGap(0)) ); layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 250, Short.MAX_VALUE) - .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + layout.createParallelGroup(Alignment.TRAILING) + .addGroup(Alignment.LEADING, layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(Alignment.TRAILING) + .addComponent(jScrollPane1) + .addComponent(jPanel1, Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 213, GroupLayout.PREFERRED_SIZE)) + .addGap(0)) ); + this.setLayout(layout); }// //GEN-END:initComponents + public void sizePlayer() { + this.playerPanel.sizePlayerPanel(); + } + private void btnCheatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCheatActionPerformed try { MageFrame.getSession().cheat(gameId, playerId, Sets.loadDeck("cheat.dck")); diff --git a/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java b/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java index 03d28b4c201..08e70692a04 100644 --- a/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java +++ b/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java @@ -69,6 +69,7 @@ import java.util.Map; import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; +import javax.swing.GroupLayout.Alignment; /** * Enhanced player pane. @@ -96,8 +97,8 @@ public class PlayerPanelExt extends javax.swing.JPanel { private int avatarId = -1; /** Creates new form PlayerPanel */ - public PlayerPanelExt(boolean me) { - initComponents(me); + public PlayerPanelExt() { + initComponents(); } public void init(UUID gameId, UUID playerId, BigCard bigCard) { @@ -116,22 +117,23 @@ public class PlayerPanelExt extends javax.swing.JPanel { libraryLabel.setText(Integer.toString(player.getLibraryCount())); graveLabel.setText(Integer.toString(player.getGraveyard().size())); - int id = player.getUserData().getAvatarId(); - if (id > 0 && id != avatarId) { - avatarId = id; - String path = "/avatars/" + String.valueOf(avatarId) + ".jpg"; - if (avatarId == 64) { - path = "/avatars/i64.jpg"; - } else if (avatarId >= 1000) { - avatarId = avatarId - 1000; - path = "/avatars/special/" + String.valueOf(avatarId) + ".gif"; - } - Image image = ImageHelper.getImageFromResources(path); - Rectangle r = new Rectangle(80, 80); - BufferedImage resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); - this.avatar.update("player", resized, resized, resized, resized, r); - } - + if (!MageFrame.isLite()) { + int id = player.getUserData().getAvatarId(); + if (id > 0 && id != avatarId) { + avatarId = id; + String path = "/avatars/" + String.valueOf(avatarId) + ".jpg"; + if (avatarId == 64) { + path = "/avatars/i64.jpg"; + } else if (avatarId >= 1000) { + avatarId = avatarId - 1000; + path = "/avatars/special/" + String.valueOf(avatarId) + ".gif"; + } + Image image = ImageHelper.getImageFromResources(path); + Rectangle r = new Rectangle(80, 80); + BufferedImage resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); + this.avatar.update("player", resized, resized, resized, resized, r); + } + } this.avatar.setText(player.getName()); if (player.isActive()) { this.avatar.setBorder(greenBorder); @@ -178,74 +180,71 @@ public class PlayerPanelExt extends javax.swing.JPanel { * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") - // //GEN-BEGIN:initComponents - private void initComponents(boolean me) { - setLayout(null); + private void initComponents() { + + panelBackground = new MageRoundPane(); + Rectangle r = new Rectangle(80, 80); + lifeLabel = new JLabel(); + handLabel = new JLabel(); + poisonLabel = new JLabel(); + libraryLabel = new JLabel(); setOpaque(false); - panelBackground = new MageRoundPane(); panelBackground.setXOffset(3); panelBackground.setYOffset(3); - panelBackground.setLayout(null); panelBackground.setVisible(true); - panelBackground.setBounds(0, 0, 92, 250); - add(panelBackground); - - Rectangle r = new Rectangle(80, 80); - Image image = ImageHelper.getImageFromResources("/avatars/unknown.jpg"); - - topCardPanel = Plugins.getInstance().getMageCard(new CardView(Sets.findCard("Forest")), bigCard, topCardDimension, gameId, true); - topCardPanel.setVisible(false); - panelBackground.add(topCardPanel); // Avatar + Image image = ImageHelper.getImageFromResources("/avatars/unknown.jpg"); BufferedImage resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); avatar = new HoverButton("player", resized, resized, resized, r); - avatar.setBounds(6, 6, r.width, r.height); - panelBackground.add(avatar); avatar.setObserver(new Command() { @Override public void execute() { session.sendPlayerUUID(gameId, playerId); } }); - - // Life count - lifeLabel = new JLabel(); - lifeLabel.setBounds(30, 82, 30, 30); r = new Rectangle(18, 18); - life = (ImagePanel)addParam(panelBackground, "Life", lifeLabel, r, "/info/life.png", false); - life.setBounds(9, 90, r.width, r.height); - - // Hand count - handLabel = new JLabel(); - handLabel.setBounds(70, 82, 50, 30); + lifeLabel.setToolTipText("Life"); + Image imageLife = ImageHelper.getImageFromResources("/info/life.png"); + BufferedImage resizedLife = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(imageLife, BufferedImage.TYPE_INT_ARGB), r); + life = new ImagePanel(resizedLife, ImagePanel.ACTUAL); + life.setToolTipText("Life"); + life.setOpaque(false); r = new Rectangle(18, 18); - hand = (ImagePanel)addParam(panelBackground, "Hand", handLabel, r, "/info/hand.png", false); - hand.setBounds(48, 90, r.width, r.height); + handLabel.setToolTipText("Hand"); + Image imageHand = ImageHelper.getImageFromResources("/info/hand.png"); + BufferedImage resizedHand = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(imageHand, BufferedImage.TYPE_INT_ARGB), r); + hand = new ImagePanel(resizedHand, ImagePanel.ACTUAL); + hand.setToolTipText("Hand"); + hand.setOpaque(false); // Poison count - poisonLabel = new JLabel(); poisonLabel.setText("0"); - poisonLabel.setBounds(30, 112, 20, 20); - //poisonLabel.setBorder(greenBorder); r = new Rectangle(14, 14); - poison = (ImagePanel)addParam(panelBackground, "Poison", poisonLabel, r, "/info/poison.png", false); - poison.setBounds(12, 116, r.width, r.height); - - // Library count - libraryLabel = new JLabel(); - libraryLabel.setBounds(70, 107, 30, 30); + poisonLabel.setToolTipText("Poison"); + Image imagePoison = ImageHelper.getImageFromResources("/info/poison.png"); + BufferedImage resizedPoison = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(imagePoison, BufferedImage.TYPE_INT_ARGB), r); + poison = new ImagePanel(resizedPoison, ImagePanel.ACTUAL); + poison.setToolTipText("Poison"); + poison.setOpaque(false); r = new Rectangle(19, 19); - library = (ImagePanel)addParam(panelBackground, "Library", libraryLabel, r, "/info/library.png", false); - library.setBounds(48, 113, r.width, r.height); + libraryLabel.setToolTipText("Library"); + Image imageLibrary = ImageHelper.getImageFromResources("/info/library.png"); + BufferedImage resizedLibrary = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(imageLibrary, BufferedImage.TYPE_INT_ARGB), r); + library = new ImagePanel(resizedLibrary, ImagePanel.ACTUAL); + library.setToolTipText("Library"); + library.setOpaque(false); // Grave count and open graveyard button graveLabel = new JLabel(); r = new Rectangle(21, 21); - graveLabel.setBounds(35, 250 - r.height - 5, r.width, r.height); - grave = (HoverButton)addParam(panelBackground, "Graveyard", graveLabel, r, "/info/grave.png", true); - grave.setBounds(9, 250 - r.height - 5, r.width, r.height); + graveLabel.setToolTipText("Graveyard"); + Image imageGrave = ImageHelper.getImageFromResources("/info/grave.png"); + BufferedImage resizedGrave = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(imageGrave, BufferedImage.TYPE_INT_ARGB), r); + grave = new HoverButton(null, resizedGrave, resizedGrave, resizedGrave, r); + grave.setToolTipText("Graveyard"); + grave.setOpaque(false); grave.setObserver(new Command() { @Override public void execute() { @@ -259,8 +258,6 @@ public class PlayerPanelExt extends javax.swing.JPanel { resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); cheat = new JButton(); cheat.setIcon(new ImageIcon(resized)); - panelBackground.add(cheat); - cheat.setBounds(55, 250 - r.height - 5, r.width, r.height); cheat.setToolTipText("Cheat button"); cheat.addActionListener(new ActionListener() { @Override @@ -270,28 +267,225 @@ public class PlayerPanelExt extends javax.swing.JPanel { }); // Add mana symbols - addManaImagePanel("W", new Rectangle(11, 140, 15, 15), panelBackground); - addManaImagePanel("U", new Rectangle(11, 160, 15, 15), panelBackground); - addManaImagePanel("B", new Rectangle(11, 180, 15, 15), panelBackground); - addManaImagePanel("R", new Rectangle(50, 140, 15, 15), panelBackground); - addManaImagePanel("G", new Rectangle(50, 160, 15, 15), panelBackground); - addManaImagePanel("X", new Rectangle(50, 180, 15, 15), panelBackground); + BufferedImage imageManaW = ManaSymbols.getManaSymbolImageSmall("W"); + ImagePanel manaW = new ImagePanel(imageManaW, ImagePanel.ACTUAL); + manaW.setOpaque(false); + JLabel manaCountLabelW = new JLabel(); + manaCountLabelW.setText("0"); + manaLabels.put("W", manaCountLabelW); + + BufferedImage imageManaU = ManaSymbols.getManaSymbolImageSmall("U"); + ImagePanel manaU = new ImagePanel(imageManaU, ImagePanel.ACTUAL); + manaU.setOpaque(false); + JLabel manaCountLabelU = new JLabel(); + manaCountLabelU.setText("0"); + manaLabels.put("U", manaCountLabelU); + + BufferedImage imageManaB = ManaSymbols.getManaSymbolImageSmall("B"); + ImagePanel manaB = new ImagePanel(imageManaB, ImagePanel.ACTUAL); + manaB.setOpaque(false); + JLabel manaCountLabelB = new JLabel(); + manaCountLabelB.setText("0"); + manaLabels.put("B", manaCountLabelB); + + BufferedImage imageManaR = ManaSymbols.getManaSymbolImageSmall("R"); + ImagePanel manaR = new ImagePanel(imageManaR, ImagePanel.ACTUAL); + manaR.setOpaque(false); + JLabel manaCountLabelR = new JLabel(); + manaCountLabelR.setText("0"); + manaLabels.put("R", manaCountLabelR); + + BufferedImage imageManaG = ManaSymbols.getManaSymbolImageSmall("G"); + ImagePanel manaG = new ImagePanel(imageManaG, ImagePanel.ACTUAL); + manaG.setOpaque(false); + JLabel manaCountLabelG = new JLabel(); + manaCountLabelG.setText("0"); + manaLabels.put("G", manaCountLabelG); + + BufferedImage imageManaX = ManaSymbols.getManaSymbolImageSmall("X"); + ImagePanel manaX = new ImagePanel(imageManaX, ImagePanel.ACTUAL); + manaX.setOpaque(false); + JLabel manaCountLabelX = new JLabel(); + manaCountLabelX.setText("0"); + manaLabels.put("X", manaCountLabelX); + GroupLayout gl_panelBackground = new GroupLayout(panelBackground); + gl_panelBackground.setHorizontalGroup( + gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(6) + .addComponent(avatar, GroupLayout.PREFERRED_SIZE, 80, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(9) + .addComponent(life, GroupLayout.PREFERRED_SIZE, 18, GroupLayout.PREFERRED_SIZE) + .addGap(3) + .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(18) + .addComponent(hand, GroupLayout.PREFERRED_SIZE, 18, GroupLayout.PREFERRED_SIZE)) + .addComponent(lifeLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE)) + .addGap(4) + .addComponent(handLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(9) + .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(3) + .addComponent(poison, GroupLayout.PREFERRED_SIZE, 14, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(2) + .addComponent(manaW, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(2) + .addComponent(manaU, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(2) + .addComponent(manaB, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) + .addComponent(grave, GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(18) + .addComponent(library, GroupLayout.PREFERRED_SIZE, 19, GroupLayout.PREFERRED_SIZE)) + .addComponent(poisonLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(20) + .addComponent(manaR, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(1) + .addComponent(manaCountLabelW, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE))) + .addGap(3) + .addComponent(manaCountLabelR, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(1) + .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addComponent(manaCountLabelB, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(19) + .addComponent(manaX, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE))) + .addGap(5) + .addComponent(manaCountLabelX, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(20) + .addComponent(manaG, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(40) + .addComponent(manaCountLabelG, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(40) + .addComponent(libraryLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(18) + .addComponent(cheat, GroupLayout.PREFERRED_SIZE, 25, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(5) + .addComponent(graveLabel, GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(1) + .addComponent(manaCountLabelU, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)))) + ); + gl_panelBackground.setVerticalGroup( + gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(6) + .addComponent(avatar, GroupLayout.PREFERRED_SIZE, 80, GroupLayout.PREFERRED_SIZE) + .addGap(3) + .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(1) + .addComponent(life, GroupLayout.PREFERRED_SIZE, 18, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(1) + .addComponent(hand, GroupLayout.PREFERRED_SIZE, 18, GroupLayout.PREFERRED_SIZE)) + .addComponent(lifeLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE) + .addComponent(handLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE)) + .addGap(1) + .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(4) + .addComponent(poison, GroupLayout.PREFERRED_SIZE, 14, GroupLayout.PREFERRED_SIZE) + .addGap(4) + .addComponent(manaW, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE) + .addGap(2) + .addComponent(manaU, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE) + .addGap(2) + .addComponent(manaB, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE) + .addGap(5) + .addComponent(grave, GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(1) + .addComponent(library, GroupLayout.PREFERRED_SIZE, 19, GroupLayout.PREFERRED_SIZE)) + .addComponent(poisonLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE)) + .addGap(2) + .addComponent(manaR, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(14) + .addComponent(manaCountLabelW, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(14) + .addComponent(manaCountLabelR, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE))) + .addGap(4) + .addGroup(gl_panelBackground.createParallelGroup(Alignment.LEADING) + .addComponent(manaCountLabelB, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(8) + .addComponent(manaX, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) + .addComponent(manaCountLabelX, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE))) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(39) + .addComponent(manaG, GroupLayout.PREFERRED_SIZE, 15, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(31) + .addComponent(manaCountLabelG, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)) + .addComponent(libraryLabel, GroupLayout.PREFERRED_SIZE, 20, GroupLayout.PREFERRED_SIZE) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(76) + .addComponent(cheat, GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(76) + .addComponent(graveLabel, GroupLayout.PREFERRED_SIZE, 21, GroupLayout.PREFERRED_SIZE)) + .addGroup(gl_panelBackground.createSequentialGroup() + .addGap(31) + .addComponent(manaCountLabelU, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE)))) + ); + panelBackground.setLayout(gl_panelBackground); + GroupLayout groupLayout = new GroupLayout(this); + groupLayout.setHorizontalGroup( + groupLayout.createParallelGroup(Alignment.LEADING) + .addComponent(panelBackground, GroupLayout.PREFERRED_SIZE, 92, GroupLayout.PREFERRED_SIZE) + ); + groupLayout.setVerticalGroup( + groupLayout.createParallelGroup(Alignment.LEADING) + .addComponent(panelBackground, GroupLayout.PREFERRED_SIZE, 212, GroupLayout.PREFERRED_SIZE) + ); + setLayout(groupLayout); + } - private void addManaImagePanel(String mana, Rectangle rect, JPanel container) { - BufferedImage imageMana = ManaSymbols.getManaSymbolImageSmall(mana); - if (imageMana != null) { - ImagePanel manaB = new ImagePanel(imageMana, ImagePanel.ACTUAL); - manaB.setBounds(rect.x, rect.y, rect.width, rect.height); - manaB.setOpaque(false); - container.add(manaB); - } - JLabel manaCountLabel = new JLabel(); - manaCountLabel.setText("0"); - manaCountLabel.setBounds(rect.x + rect.width + 5, rect.y - 8, 30, 30); - container.add(manaCountLabel); - manaLabels.put(mana, manaCountLabel); - } + public void sizePlayerPanel() { + Dimension r = new Dimension(60, 60); + this.avatar.setSize(r); + this.avatar.setPreferredSize(r); + } + +// private void addManaImagePanel(String mana, Rectangle rect, JPanel container) { +// BufferedImage imageMana = ManaSymbols.getManaSymbolImageSmall(mana); +// if (imageMana != null) { +// ImagePanel manaB = new ImagePanel(imageMana, ImagePanel.ACTUAL); +// manaB.setBounds(rect.x, rect.y, rect.width, rect.height); +// manaB.setOpaque(false); +// container.add(manaB); +// } +// JLabel manaCountLabel = new JLabel(); +// manaCountLabel.setText("0"); +// manaCountLabel.setBounds(rect.x + rect.width + 5, rect.y - 8, 30, 30); +// container.add(manaCountLabel); +// manaLabels.put(mana, manaCountLabel); +// } /** * Adds image panel and label to the container panel. @@ -302,27 +496,27 @@ public class PlayerPanelExt extends javax.swing.JPanel { * @param imagePath * @return */ - private JComponent addParam(JPanel containerPanel, String tooltip, JLabel text, Rectangle r, String imagePath, boolean isButton) { - if (text != null) { - text.setForeground(Color.black); - containerPanel.add(text); - text.setToolTipText(tooltip); - } - - Image image = ImageHelper.getImageFromResources(imagePath); - BufferedImage resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); - JComponent component = null; - if (isButton) { - component = new HoverButton(null, resized, resized, resized, r); - } else { - component = new ImagePanel(resized, ImagePanel.ACTUAL); - } - component.setToolTipText(tooltip); - component.setOpaque(false); - containerPanel.add(component); - - return component; - } +// private JComponent addParam(JPanel containerPanel, String tooltip, JLabel text, Rectangle r, String imagePath, boolean isButton) { +// if (text != null) { +// text.setForeground(Color.black); +// containerPanel.add(text); +// text.setToolTipText(tooltip); +// } +// +// Image image = ImageHelper.getImageFromResources(imagePath); +// BufferedImage resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); +// JComponent component = null; +// if (isButton) { +// component = new HoverButton(null, resized, resized, resized, r); +// } else { +// component = new ImagePanel(resized, ImagePanel.ACTUAL); +// } +// component.setToolTipText(tooltip); +// component.setOpaque(false); +// containerPanel.add(component); +// +// return component; +// } private void btnGraveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGraveActionPerformed if (graveyard == null) {