diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index 6d779f3ace4..fda273a0013 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -1068,11 +1068,9 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { if (setActive) { setActive(tablesPane); } else // if other panel was already shown, mamke sure it's topmost again - { - if (topPanebefore != null) { + if (topPanebefore != null) { setActive(topPanebefore); } - } } public void hideGames() { @@ -1470,7 +1468,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { public void changeGUISize() { setGUISize(); - + Plugins.getInstance().changeGUISize(); CountryUtil.changeGUISize(); for (Component component : desktopPane.getComponents()) { if (component instanceof MageDialog) { diff --git a/Mage.Client/src/main/java/mage/client/cards/Card.java b/Mage.Client/src/main/java/mage/client/cards/Card.java index 1ef0d5c415f..8d6235a08a3 100644 --- a/Mage.Client/src/main/java/mage/client/cards/Card.java +++ b/Mage.Client/src/main/java/mage/client/cards/Card.java @@ -26,7 +26,7 @@ * or implied, of BetaSteward_at_googlemail.com. */ -/* + /* * Card.java * * Created on 17-Dec-2009, 9:20:50 PM @@ -222,6 +222,7 @@ public class Card extends MagePermanent implements MouseMotionListener, MouseLis @Override public void updateImage() { + } protected String getText(String cardType) { diff --git a/Mage.Client/src/main/java/mage/client/cards/Cards.java b/Mage.Client/src/main/java/mage/client/cards/Cards.java index 574612cefde..67287d54d8d 100644 --- a/Mage.Client/src/main/java/mage/client/cards/Cards.java +++ b/Mage.Client/src/main/java/mage/client/cards/Cards.java @@ -115,6 +115,7 @@ public class Cards extends javax.swing.JPanel { for (MageCard mageCard : cards.values()) { mageCard.setCardBounds(0, 0, getCardDimension().width, getCardDimension().height); mageCard.updateImage(); + mageCard.doLayout(); } layoutCards(); sizeCards(cardDimension); diff --git a/Mage.Client/src/main/java/mage/client/dialog/CardInfoWindowDialog.form b/Mage.Client/src/main/java/mage/client/dialog/CardInfoWindowDialog.form index caf3d657505..172000b0c17 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/CardInfoWindowDialog.form +++ b/Mage.Client/src/main/java/mage/client/dialog/CardInfoWindowDialog.form @@ -23,12 +23,12 @@ - + - + diff --git a/Mage.Client/src/main/java/mage/client/dialog/CardInfoWindowDialog.java b/Mage.Client/src/main/java/mage/client/dialog/CardInfoWindowDialog.java index c79a1550f19..8c1b9cf2f20 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/CardInfoWindowDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/CardInfoWindowDialog.java @@ -42,6 +42,7 @@ import javax.swing.event.InternalFrameAdapter; import javax.swing.event.InternalFrameEvent; import mage.client.cards.BigCard; import mage.client.util.Config; +import mage.client.util.GUISizeHelper; import mage.client.util.ImageHelper; import mage.client.util.SettingsManager; import mage.client.util.gui.GuiDisplayUtil; @@ -106,12 +107,25 @@ public class CardInfoWindowDialog extends MageDialog { // no icon yet } this.setTitelBarToolTip(name); + setGUISize(); } public void cleanUp() { cards.cleanUp(); } + @Override + public void changeGUISize() { + setGUISize(); + this.validate(); + this.repaint(); + } + + private void setGUISize() { + cards.setCardDimension(GUISizeHelper.otherZonesCardDimension); + cards.changeGUISize(); + } + public void loadCards(ExileView exile, BigCard bigCard, UUID gameId) { boolean changed = cards.loadCards(exile, bigCard, gameId, true); String titel = name + " (" + exile.size() + ")"; @@ -204,11 +218,11 @@ public class CardInfoWindowDialog extends MageDialog { getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(cards, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 239, Short.MAX_VALUE) + .addComponent(cards, javax.swing.GroupLayout.DEFAULT_SIZE, 163, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(cards, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(cards, javax.swing.GroupLayout.DEFAULT_SIZE, 67, Short.MAX_VALUE) ); pack(); diff --git a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form index 63482a58084..49104fd467d 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form +++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form @@ -372,6 +372,14 @@ + + + + + + + + @@ -383,11 +391,11 @@ - + - - + + @@ -397,20 +405,20 @@ - - - - + + + + - + - + @@ -430,7 +438,7 @@ - + @@ -467,7 +475,7 @@ - + @@ -479,7 +487,7 @@ - + @@ -491,7 +499,7 @@ - + @@ -504,7 +512,7 @@ - + @@ -516,25 +524,28 @@ - + - - + + + + + - + - + @@ -558,7 +569,7 @@ - + @@ -579,7 +590,7 @@ - + @@ -587,7 +598,7 @@ - + @@ -596,8 +607,7 @@ - - + @@ -613,11 +623,11 @@ - + - - + + @@ -625,6 +635,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -634,7 +681,7 @@ - + @@ -646,7 +693,7 @@ - + @@ -654,7 +701,7 @@ - + @@ -662,6 +709,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java index f887340a0cc..9fdaa9b5e84 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java @@ -98,6 +98,9 @@ public class PreferencesDialog extends javax.swing.JDialog { public static final String KEY_GUI_SYMBOL_SIZE = "guiSymbolSize"; public static final String KEY_GUI_TOOLTIP_SIZE = "guiTooltipSize"; public static final String KEY_GUI_DIALOG_FONT_SIZE = "guiDialogFontSize"; + public static final String KEY_GUI_FEEDBACK_AREA_SIZE = "guiFeedbackAreaSize"; + public static final String KEY_GUI_CARD_OTHER_ZONES_SIZE = "guiCardOtherZonesSize"; + public static final String KEY_GUI_CARD_BATTLEFIELD_SIZE = "guiCardBattlefield"; public static final String KEY_GAME_LOG_AUTO_SAVE = "gameLogAutoSave"; public static final String KEY_DRAFT_LOG_AUTO_SAVE = "draftLogAutoSave"; @@ -265,7 +268,7 @@ public class PreferencesDialog extends javax.swing.JDialog { public static final String KEY_CONNECT_AUTO_CONNECT = "autoConnect"; public static final String KEY_CONNECT_FLAG = "connectFlag"; - private static final Map cache = new HashMap<>(); + private static final Map CACHE = new HashMap<>(); private static final Boolean UPDATE_CACHE_POLICY = Boolean.TRUE; @@ -275,7 +278,7 @@ public class PreferencesDialog extends javax.swing.JDialog { public static String PHASE_ON = "on"; public static String PHASE_OFF = "off"; - private static final Map panels = new HashMap<>(); + private static final Map PANELS = new HashMap<>(); private static final Border GREEN_BORDER = BorderFactory.createLineBorder(Color.GREEN, 3); private static final Border BLACK_BORDER = BorderFactory.createLineBorder(Color.BLACK, 3); @@ -363,20 +366,26 @@ public class PreferencesDialog extends javax.swing.JDialog { cbGameLogAutoSave = new javax.swing.JCheckBox(); cbDraftLogAutoSave = new javax.swing.JCheckBox(); tabGuiSize = new javax.swing.JPanel(); - guiSize_font = new javax.swing.JPanel(); + guiSizeBasic = new javax.swing.JPanel(); sliderFontSize = new javax.swing.JSlider(); fontSizeLabel = new javax.swing.JLabel(); sliderChatFontSize = new javax.swing.JSlider(); chatFontSizeLabel = new javax.swing.JLabel(); sliderDialogFont = new javax.swing.JSlider(); labelDialogFont = new javax.swing.JLabel(); - guiSize_font1 = new javax.swing.JPanel(); + guiSizeGame = new javax.swing.JPanel(); sliderCardSizeHand = new javax.swing.JSlider(); labelCardSizeHand = new javax.swing.JLabel(); - sliderTooltipSize = new javax.swing.JSlider(); - labelTooltipSize = new javax.swing.JLabel(); + sliderCardSizeOtherZones = new javax.swing.JSlider(); + labelCardSizeOtherZones = new javax.swing.JLabel(); + sliderCardSizeBattlefield = new javax.swing.JSlider(); + labelCardSizeBattlefield = new javax.swing.JLabel(); sliderSymbolSize = new javax.swing.JSlider(); labelSymbolSize = new javax.swing.JLabel(); + sliderGameFeedbackArea = new javax.swing.JSlider(); + labelGameFeedback = new javax.swing.JLabel(); + sliderTooltipSize = new javax.swing.JSlider(); + labelTooltipSize = new javax.swing.JLabel(); tabPhases = new javax.swing.JPanel(); jLabelHeadLine = new javax.swing.JLabel(); jLabelYourTurn = new javax.swing.JLabel(); @@ -718,8 +727,11 @@ public class PreferencesDialog extends javax.swing.JDialog { tabsPanel.addTab("Main", tabMain); - guiSize_font.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Size elements")); - guiSize_font.setLayout(new java.awt.GridBagLayout()); + tabGuiSize.setMaximumSize(new java.awt.Dimension(527, 423)); + tabGuiSize.setMinimumSize(new java.awt.Dimension(527, 423)); + + guiSizeBasic.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Size basic elements")); + guiSizeBasic.setLayout(new java.awt.GridBagLayout()); sliderFontSize.setMajorTickSpacing(5); sliderFontSize.setMaximum(50); @@ -728,13 +740,13 @@ public class PreferencesDialog extends javax.swing.JDialog { sliderFontSize.setPaintLabels(true); sliderFontSize.setPaintTicks(true); sliderFontSize.setSnapToTicks(true); - sliderFontSize.setToolTipText("Size of the font."); + sliderFontSize.setToolTipText("The size of the font used to display table text."); sliderFontSize.setBorder(javax.swing.BorderFactory.createEtchedBorder()); sliderFontSize.setMinimumSize(new java.awt.Dimension(150, 40)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); - guiSize_font.add(sliderFontSize, gridBagConstraints); + guiSizeBasic.add(sliderFontSize, gridBagConstraints); fontSizeLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); fontSizeLabel.setText("Size of table font"); @@ -744,7 +756,7 @@ public class PreferencesDialog extends javax.swing.JDialog { gridBagConstraints.ipadx = 3; gridBagConstraints.ipady = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; - guiSize_font.add(fontSizeLabel, gridBagConstraints); + guiSizeBasic.add(fontSizeLabel, gridBagConstraints); sliderChatFontSize.setMajorTickSpacing(5); sliderChatFontSize.setMaximum(50); @@ -753,24 +765,25 @@ public class PreferencesDialog extends javax.swing.JDialog { sliderChatFontSize.setPaintLabels(true); sliderChatFontSize.setPaintTicks(true); sliderChatFontSize.setSnapToTicks(true); - sliderChatFontSize.setToolTipText("Size of the chat font."); + sliderChatFontSize.setToolTipText("The size of the font used to display the chat text"); sliderChatFontSize.setBorder(javax.swing.BorderFactory.createEtchedBorder()); sliderChatFontSize.setMinimumSize(new java.awt.Dimension(150, 40)); gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridy = 3; + gridBagConstraints.gridx = 4; + gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); - guiSize_font.add(sliderChatFontSize, gridBagConstraints); + guiSizeBasic.add(sliderChatFontSize, gridBagConstraints); chatFontSizeLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); chatFontSizeLabel.setText("Size of chat font"); chatFontSizeLabel.setToolTipText("The size of the font used to display the chat text"); gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 0; + gridBagConstraints.gridx = 4; gridBagConstraints.ipadx = 3; gridBagConstraints.ipady = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; - guiSize_font.add(chatFontSizeLabel, gridBagConstraints); + guiSizeBasic.add(chatFontSizeLabel, gridBagConstraints); sliderDialogFont.setMajorTickSpacing(5); sliderDialogFont.setMaximum(50); @@ -779,26 +792,28 @@ public class PreferencesDialog extends javax.swing.JDialog { sliderDialogFont.setPaintLabels(true); sliderDialogFont.setPaintTicks(true); sliderDialogFont.setSnapToTicks(true); - sliderDialogFont.setToolTipText("Size of the font."); + sliderDialogFont.setToolTipText("The size of the font of messages and menues"); sliderDialogFont.setBorder(javax.swing.BorderFactory.createEtchedBorder()); sliderDialogFont.setMinimumSize(new java.awt.Dimension(150, 40)); gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); - guiSize_font.add(sliderDialogFont, gridBagConstraints); + guiSizeBasic.add(sliderDialogFont, gridBagConstraints); labelDialogFont.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - labelDialogFont.setText("Size of dialog font"); - labelDialogFont.setToolTipText("The size of the font used to display table text."); + labelDialogFont.setText("Font size of messages and menues"); + labelDialogFont.setToolTipText("The size of the font of messages and menues"); gridBagConstraints = new java.awt.GridBagConstraints(); - gridBagConstraints.gridx = 1; + gridBagConstraints.gridx = 2; gridBagConstraints.ipadx = 3; gridBagConstraints.ipady = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; - guiSize_font.add(labelDialogFont, gridBagConstraints); + guiSizeBasic.add(labelDialogFont, gridBagConstraints); + labelDialogFont.getAccessibleContext().setAccessibleDescription("The size of the font used to display messages or menus."); - guiSize_font1.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Size game elements")); - guiSize_font1.setLayout(new java.awt.GridBagLayout()); + guiSizeGame.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Size game elements")); + guiSizeGame.setLayout(new java.awt.GridBagLayout()); sliderCardSizeHand.setMajorTickSpacing(5); sliderCardSizeHand.setMaximum(50); @@ -807,7 +822,7 @@ public class PreferencesDialog extends javax.swing.JDialog { sliderCardSizeHand.setPaintLabels(true); sliderCardSizeHand.setPaintTicks(true); sliderCardSizeHand.setSnapToTicks(true); - sliderCardSizeHand.setToolTipText("Size of the font."); + sliderCardSizeHand.setToolTipText("The size of the card in hand"); sliderCardSizeHand.setValue(14); sliderCardSizeHand.setBorder(javax.swing.BorderFactory.createEtchedBorder()); sliderCardSizeHand.setMinimumSize(new java.awt.Dimension(150, 40)); @@ -816,47 +831,74 @@ public class PreferencesDialog extends javax.swing.JDialog { gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); - guiSize_font1.add(sliderCardSizeHand, gridBagConstraints); + guiSizeGame.add(sliderCardSizeHand, gridBagConstraints); labelCardSizeHand.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); labelCardSizeHand.setText("Size of hand cards"); - labelCardSizeHand.setToolTipText("The size of the hand cards"); + labelCardSizeHand.setToolTipText("The size of the card in hand"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.ipadx = 3; gridBagConstraints.ipady = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; - guiSize_font1.add(labelCardSizeHand, gridBagConstraints); + guiSizeGame.add(labelCardSizeHand, gridBagConstraints); - sliderTooltipSize.setMajorTickSpacing(5); - sliderTooltipSize.setMaximum(50); - sliderTooltipSize.setMinimum(10); - sliderTooltipSize.setMinorTickSpacing(1); - sliderTooltipSize.setPaintLabels(true); - sliderTooltipSize.setPaintTicks(true); - sliderTooltipSize.setSnapToTicks(true); - sliderTooltipSize.setToolTipText("Size of the font."); - sliderTooltipSize.setValue(14); - sliderTooltipSize.setBorder(javax.swing.BorderFactory.createEtchedBorder()); - sliderTooltipSize.setMinimumSize(new java.awt.Dimension(150, 40)); + sliderCardSizeOtherZones.setMajorTickSpacing(5); + sliderCardSizeOtherZones.setMaximum(50); + sliderCardSizeOtherZones.setMinimum(10); + sliderCardSizeOtherZones.setMinorTickSpacing(1); + sliderCardSizeOtherZones.setPaintLabels(true); + sliderCardSizeOtherZones.setPaintTicks(true); + sliderCardSizeOtherZones.setSnapToTicks(true); + sliderCardSizeOtherZones.setToolTipText("The size of card in other game zone (e.g. graveyard, revealed cards etc.)"); + sliderCardSizeOtherZones.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + sliderCardSizeOtherZones.setMinimumSize(new java.awt.Dimension(150, 40)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 0; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); - guiSize_font1.add(sliderTooltipSize, gridBagConstraints); + guiSizeGame.add(sliderCardSizeOtherZones, gridBagConstraints); - labelTooltipSize.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - labelTooltipSize.setText("Tooltip size"); - labelTooltipSize.setToolTipText("The size of the hand cards"); + labelCardSizeOtherZones.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + labelCardSizeOtherZones.setText("Size of other zone cards"); + labelCardSizeOtherZones.setToolTipText("The size of card in other game zone (e.g. graveyard, revealed cards etc.)"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 1; gridBagConstraints.ipadx = 3; gridBagConstraints.ipady = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; - guiSize_font1.add(labelTooltipSize, gridBagConstraints); + guiSizeGame.add(labelCardSizeOtherZones, gridBagConstraints); + + sliderCardSizeBattlefield.setMajorTickSpacing(5); + sliderCardSizeBattlefield.setMaximum(50); + sliderCardSizeBattlefield.setMinimum(10); + sliderCardSizeBattlefield.setMinorTickSpacing(1); + sliderCardSizeBattlefield.setPaintLabels(true); + sliderCardSizeBattlefield.setPaintTicks(true); + sliderCardSizeBattlefield.setSnapToTicks(true); + sliderCardSizeBattlefield.setToolTipText("The maximum size of permanents on the battlefield"); + sliderCardSizeBattlefield.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + sliderCardSizeBattlefield.setMinimumSize(new java.awt.Dimension(150, 40)); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 4; + gridBagConstraints.gridy = 0; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; + gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); + guiSizeGame.add(sliderCardSizeBattlefield, gridBagConstraints); + + labelCardSizeBattlefield.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + labelCardSizeBattlefield.setText("Size of permanents"); + labelCardSizeBattlefield.setToolTipText("The maximum size of permanents on the battlefield"); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 4; + gridBagConstraints.gridy = 1; + gridBagConstraints.ipadx = 3; + gridBagConstraints.ipady = 3; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; + guiSizeGame.add(labelCardSizeBattlefield, gridBagConstraints); sliderSymbolSize.setMajorTickSpacing(5); sliderSymbolSize.setMaximum(50); @@ -865,24 +907,82 @@ public class PreferencesDialog extends javax.swing.JDialog { sliderSymbolSize.setPaintLabels(true); sliderSymbolSize.setPaintTicks(true); sliderSymbolSize.setSnapToTicks(true); - sliderSymbolSize.setToolTipText("Size of the font."); + sliderSymbolSize.setToolTipText("The size of symbols"); sliderSymbolSize.setBorder(javax.swing.BorderFactory.createEtchedBorder()); sliderSymbolSize.setMinimumSize(new java.awt.Dimension(150, 40)); gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); - guiSize_font1.add(sliderSymbolSize, gridBagConstraints); + guiSizeGame.add(sliderSymbolSize, gridBagConstraints); labelSymbolSize.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); labelSymbolSize.setText("Symbol size"); - labelSymbolSize.setToolTipText("The size of the font used to display the chat text"); + labelSymbolSize.setToolTipText("The size of symbols"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.ipadx = 3; gridBagConstraints.ipady = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; - guiSize_font1.add(labelSymbolSize, gridBagConstraints); + guiSizeGame.add(labelSymbolSize, gridBagConstraints); + + sliderGameFeedbackArea.setMajorTickSpacing(5); + sliderGameFeedbackArea.setMaximum(50); + sliderGameFeedbackArea.setMinimum(10); + sliderGameFeedbackArea.setMinorTickSpacing(1); + sliderGameFeedbackArea.setPaintLabels(true); + sliderGameFeedbackArea.setPaintTicks(true); + sliderGameFeedbackArea.setSnapToTicks(true); + sliderGameFeedbackArea.setToolTipText("The size of the game feedback area (buttons and messages above the hand area)"); + sliderGameFeedbackArea.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + sliderGameFeedbackArea.setMinimumSize(new java.awt.Dimension(150, 40)); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 2; + gridBagConstraints.gridy = 3; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; + gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); + guiSizeGame.add(sliderGameFeedbackArea, gridBagConstraints); + + labelGameFeedback.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + labelGameFeedback.setText("Size game feedback area"); + labelGameFeedback.setToolTipText("The size of the game feedback area (buttons and messages above the hand area)"); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 2; + gridBagConstraints.ipadx = 3; + gridBagConstraints.ipady = 3; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; + guiSizeGame.add(labelGameFeedback, gridBagConstraints); + labelGameFeedback.getAccessibleContext().setAccessibleName(""); + + sliderTooltipSize.setMajorTickSpacing(5); + sliderTooltipSize.setMaximum(50); + sliderTooltipSize.setMinimum(10); + sliderTooltipSize.setMinorTickSpacing(1); + sliderTooltipSize.setPaintLabels(true); + sliderTooltipSize.setPaintTicks(true); + sliderTooltipSize.setSnapToTicks(true); + sliderTooltipSize.setToolTipText("The size of the tooltip window for cards or permanents"); + sliderTooltipSize.setValue(14); + sliderTooltipSize.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + sliderTooltipSize.setMinimumSize(new java.awt.Dimension(150, 40)); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 4; + gridBagConstraints.gridy = 3; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; + gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); + guiSizeGame.add(sliderTooltipSize, gridBagConstraints); + + labelTooltipSize.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + labelTooltipSize.setText("Tooltip size"); + labelTooltipSize.setToolTipText("The size of the tooltip window for cards or permanents"); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 4; + gridBagConstraints.gridy = 4; + gridBagConstraints.ipadx = 3; + gridBagConstraints.ipady = 3; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; + guiSizeGame.add(labelTooltipSize, gridBagConstraints); org.jdesktop.layout.GroupLayout tabGuiSizeLayout = new org.jdesktop.layout.GroupLayout(tabGuiSize); tabGuiSize.setLayout(tabGuiSizeLayout); @@ -891,18 +991,18 @@ public class PreferencesDialog extends javax.swing.JDialog { .add(tabGuiSizeLayout.createSequentialGroup() .addContainerGap() .add(tabGuiSizeLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) - .add(guiSize_font, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 507, Short.MAX_VALUE) - .add(guiSize_font1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .add(guiSizeBasic, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 507, Short.MAX_VALUE) + .add(guiSizeGame, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 507, Short.MAX_VALUE)) .addContainerGap()) ); tabGuiSizeLayout.setVerticalGroup( tabGuiSizeLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(tabGuiSizeLayout.createSequentialGroup() .addContainerGap() - .add(guiSize_font, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) - .add(14, 14, 14) - .add(guiSize_font1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) - .addContainerGap(66, Short.MAX_VALUE)) + .add(guiSizeBasic, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 106, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(guiSizeGame, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 191, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addContainerGap(109, Short.MAX_VALUE)) ); tabsPanel.addTab("GUI Size", tabGuiSize); @@ -2174,6 +2274,18 @@ public class PreferencesDialog extends javax.swing.JDialog { save(prefs, dialog.sliderDialogFont, KEY_GUI_DIALOG_FONT_SIZE, "true", "false", UPDATE_CACHE_POLICY); sizeGUIChanged = true; } + if (getCachedValue(KEY_GUI_FEEDBACK_AREA_SIZE, 14) != dialog.sliderGameFeedbackArea.getValue()) { + save(prefs, dialog.sliderGameFeedbackArea, KEY_GUI_FEEDBACK_AREA_SIZE, "true", "false", UPDATE_CACHE_POLICY); + sizeGUIChanged = true; + } + if (getCachedValue(KEY_GUI_CARD_OTHER_ZONES_SIZE, 14) != dialog.sliderCardSizeOtherZones.getValue()) { + save(prefs, dialog.sliderCardSizeOtherZones, KEY_GUI_CARD_OTHER_ZONES_SIZE, "true", "false", UPDATE_CACHE_POLICY); + sizeGUIChanged = true; + } + if (getCachedValue(KEY_GUI_CARD_BATTLEFIELD_SIZE, 14) != dialog.sliderCardSizeBattlefield.getValue()) { + save(prefs, dialog.sliderCardSizeBattlefield, KEY_GUI_CARD_BATTLEFIELD_SIZE, "true", "false", UPDATE_CACHE_POLICY); + sizeGUIChanged = true; + } if (sizeGUIChanged) { // do as worker job GUISizeHelper.changeGUISize(); @@ -2273,7 +2385,7 @@ public class PreferencesDialog extends javax.swing.JDialog { } private void useConfigurablePath() { - String path = cache.get(KEY_CARD_IMAGES_PATH); + String path = CACHE.get(KEY_CARD_IMAGES_PATH); dialog.txtImageFolderPath.setText(path); txtImageFolderPath.setEnabled(true); btnBrowseImageLocation.setEnabled(true); @@ -2338,7 +2450,7 @@ public class PreferencesDialog extends javax.swing.JDialog { } private void useSelectBackgroundImage() { - String path = cache.get(KEY_BACKGROUND_IMAGE); + String path = CACHE.get(KEY_BACKGROUND_IMAGE); dialog.txtBackgroundImagePath.setText(path); txtBackgroundImagePath.setEnabled(true); btnBrowseBackgroundImage.setEnabled(true); @@ -2360,7 +2472,7 @@ public class PreferencesDialog extends javax.swing.JDialog { private void useSelectedOrRandom() { cbUseRandomBattleImage.setEnabled(true); - String temp = cache.get(KEY_BATTLEFIELD_IMAGE_RANDOM); + String temp = CACHE.get(KEY_BATTLEFIELD_IMAGE_RANDOM); if (temp != null) { if (temp.equals("true")) { useRandomBattleField(); @@ -2650,6 +2762,9 @@ public class PreferencesDialog extends javax.swing.JDialog { load(prefs, dialog.sliderSymbolSize, KEY_GUI_SYMBOL_SIZE, "14"); load(prefs, dialog.sliderDialogFont, KEY_GUI_DIALOG_FONT_SIZE, "14"); load(prefs, dialog.sliderTooltipSize, KEY_GUI_TOOLTIP_SIZE, "14"); + load(prefs, dialog.sliderGameFeedbackArea, KEY_GUI_FEEDBACK_AREA_SIZE, "14"); + load(prefs, dialog.sliderCardSizeOtherZones, KEY_GUI_CARD_OTHER_ZONES_SIZE, "14"); + load(prefs, dialog.sliderCardSizeBattlefield, KEY_GUI_CARD_BATTLEFIELD_SIZE, "14"); } private static void loadImagesSettings(Preferences prefs) { @@ -2912,21 +3027,21 @@ public class PreferencesDialog extends javax.swing.JDialog { } public static String getCachedValue(String key, String def) { - if (cache.containsKey(key)) { - return cache.get(key); + if (CACHE.containsKey(key)) { + return CACHE.get(key); } else { Preferences prefs = MageFrame.getPreferences(); String value = prefs.get(key, def); if (value == null) { return null; } - cache.put(key, value); + CACHE.put(key, value); return value; } } private static void updateCache(String key, String value) { - cache.put(key, value); + CACHE.put(key, value); } public static void saveValue(String key, String value) { @@ -2974,17 +3089,17 @@ public class PreferencesDialog extends javax.swing.JDialog { public void setSelectedId(int id) { if (id >= MIN_AVATAR_ID && id <= MAX_AVATAR_ID) { - for (JPanel panel : panels.values()) { + for (JPanel panel : PANELS.values()) { panel.setBorder(BLACK_BORDER); } PreferencesDialog.selectedAvatarId = id; - panels.get(PreferencesDialog.selectedAvatarId).setBorder(GREEN_BORDER); + PANELS.get(PreferencesDialog.selectedAvatarId).setBorder(GREEN_BORDER); } } private void addAvatar(JPanel jPanel, final int id, boolean selected, boolean locked) { String path = "/avatars/" + String.valueOf(id) + ".jpg"; - panels.put(id, jPanel); + PANELS.put(id, jPanel); Image image = ImageHelper.getImageFromResources(path); Rectangle r = new Rectangle(jPanel.getWidth() - 5, jPanel.getHeight() - 5); @@ -3088,8 +3203,8 @@ public class PreferencesDialog extends javax.swing.JDialog { private javax.swing.JPanel connection_servers; private javax.swing.JButton exitButton; private javax.swing.JLabel fontSizeLabel; - private javax.swing.JPanel guiSize_font; - private javax.swing.JPanel guiSize_font1; + private javax.swing.JPanel guiSizeBasic; + private javax.swing.JPanel guiSizeGame; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel14; private javax.swing.JLabel jLabel15; @@ -3129,8 +3244,11 @@ public class PreferencesDialog extends javax.swing.JDialog { private javax.swing.JPanel jPanel31; private javax.swing.JPanel jPanel32; private javax.swing.JPanel jPanel33; + private javax.swing.JLabel labelCardSizeBattlefield; private javax.swing.JLabel labelCardSizeHand; + private javax.swing.JLabel labelCardSizeOtherZones; private javax.swing.JLabel labelDialogFont; + private javax.swing.JLabel labelGameFeedback; private javax.swing.JLabel labelPreferedImageLanguage; private javax.swing.JLabel labelSymbolSize; private javax.swing.JLabel labelTooltipSize; @@ -3154,10 +3272,13 @@ public class PreferencesDialog extends javax.swing.JDialog { private javax.swing.JCheckBox showAbilityPickerForced; private javax.swing.JCheckBox showCardName; private javax.swing.JCheckBox showPlayerNamesPermanently; + private javax.swing.JSlider sliderCardSizeBattlefield; private javax.swing.JSlider sliderCardSizeHand; + private javax.swing.JSlider sliderCardSizeOtherZones; private javax.swing.JSlider sliderChatFontSize; private javax.swing.JSlider sliderDialogFont; private javax.swing.JSlider sliderFontSize; + private javax.swing.JSlider sliderGameFeedbackArea; private javax.swing.JSlider sliderSymbolSize; private javax.swing.JSlider sliderTooltipSize; private javax.swing.JPanel sounds_backgroundMusic; diff --git a/Mage.Client/src/main/java/mage/client/game/BattlefieldPanel.java b/Mage.Client/src/main/java/mage/client/game/BattlefieldPanel.java index 9f4708391c0..dda1e6a5be9 100644 --- a/Mage.Client/src/main/java/mage/client/game/BattlefieldPanel.java +++ b/Mage.Client/src/main/java/mage/client/game/BattlefieldPanel.java @@ -122,11 +122,13 @@ public class BattlefieldPanel extends javax.swing.JLayeredPane { public void changeGUISize() { setGUISize(); + sortLayout(); } private void setGUISize() { jScrollPane.getVerticalScrollBar().setPreferredSize(new Dimension(GUISizeHelper.scrollBarSize, 0)); jScrollPane.getHorizontalScrollBar().setPreferredSize(new Dimension(0, GUISizeHelper.scrollBarSize)); + cardDimension = GUISizeHelper.battlefieldCardDimension; } public void update(Map battlefield) { 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 0c7f476d3a2..772fe8a8cb8 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java @@ -332,8 +332,23 @@ public final class GamePanel extends javax.swing.JPanel { for (PlayAreaPanel playAreaPanel : players.values()) { playAreaPanel.changeGUISize(); } + + stack.setPreferredSize(new java.awt.Dimension(Config.dimensions.frameWidth, Config.dimensions.frameHeight + 25)); + feedbackPanel.changeGUISize(); + for (CardInfoWindowDialog cardInfoWindowDialog : exiles.values()) { + cardInfoWindowDialog.changeGUISize(); + } + for (CardInfoWindowDialog cardInfoWindowDialog : revealed.values()) { + cardInfoWindowDialog.changeGUISize(); + } + for (CardInfoWindowDialog cardInfoWindowDialog : lookedAt.values()) { + cardInfoWindowDialog.changeGUISize(); + } + for (CardInfoWindowDialog cardInfoWindowDialog : graveyardWindows.values()) { + cardInfoWindowDialog.changeGUISize(); + } } private void setGUISize() { @@ -1543,7 +1558,6 @@ public final class GamePanel extends javax.swing.JPanel { } }); - stack.setPreferredSize(new java.awt.Dimension(Config.dimensions.frameWidth, Config.dimensions.frameHeight + 25)); stack.setBackgroundColor(new Color(0, 0, 0, 0)); btnStopReplay.setIcon(new javax.swing.ImageIcon(getClass().getResource("/buttons/control_stop.png"))); diff --git a/Mage.Client/src/main/java/mage/client/plugins/MagePlugins.java b/Mage.Client/src/main/java/mage/client/plugins/MagePlugins.java index 53d0faa6b88..1c1b7204529 100644 --- a/Mage.Client/src/main/java/mage/client/plugins/MagePlugins.java +++ b/Mage.Client/src/main/java/mage/client/plugins/MagePlugins.java @@ -50,4 +50,6 @@ public interface MagePlugins { BufferedImage getOriginalImage(CardView card); ActionCallback getActionCallback(); + + void changeGUISize(); } diff --git a/Mage.Client/src/main/java/mage/client/plugins/impl/Plugins.java b/Mage.Client/src/main/java/mage/client/plugins/impl/Plugins.java index f4a491355c6..62f5e321f15 100644 --- a/Mage.Client/src/main/java/mage/client/plugins/impl/Plugins.java +++ b/Mage.Client/src/main/java/mage/client/plugins/impl/Plugins.java @@ -36,7 +36,7 @@ public class Plugins implements MagePlugins { public static final String PLUGINS_DIRECTORY = "plugins/"; private static final MagePlugins fINSTANCE = new Plugins(); - private static final Logger logger = Logger.getLogger(Plugins.class); + private static final Logger LOGGER = Logger.getLogger(Plugins.class); private static PluginManager pm; private ThemePlugin themePlugin = null; @@ -51,13 +51,13 @@ public class Plugins implements MagePlugins { @Override public void loadPlugins() { - logger.info("Loading plugins..."); + LOGGER.info("Loading plugins..."); pm = PluginManagerFactory.createPluginManager(); pm.addPluginsFrom(new File(PLUGINS_DIRECTORY).toURI()); this.cardPlugin = new CardPluginImpl(); this.counterPlugin = pm.getPlugin(CounterPlugin.class); this.themePlugin = new ThemePluginImpl(); - logger.info("Done."); + LOGGER.info("Done."); } @Override @@ -67,6 +67,18 @@ public class Plugins implements MagePlugins { } } + @Override + public void changeGUISize() { + setGUISize(); + if (this.cardPlugin != null) { + cardPlugin.changeGUISize(); + } + } + + private void setGUISize() { + + } + @Override public void updateGamePanel(Map ui) { if (MageFrame.isLite() || MageFrame.isGray() || themePlugin == null) { @@ -135,7 +147,7 @@ public class Plugins implements MagePlugins { try { return this.counterPlugin.getGamePlayed(); } catch (PluginException e) { - logger.fatal(e.getMessage()); + LOGGER.fatal(e.getMessage()); throw new RuntimeException(e); } } @@ -150,7 +162,7 @@ public class Plugins implements MagePlugins { try { this.counterPlugin.addGamePlayed(); } catch (PluginException e) { - logger.fatal(e.getMessage()); + LOGGER.fatal(e.getMessage()); throw new RuntimeException(e); } } diff --git a/Mage.Client/src/main/java/mage/client/util/GUISizeHelper.java b/Mage.Client/src/main/java/mage/client/util/GUISizeHelper.java index fccec1bb83e..721d84e0e94 100644 --- a/Mage.Client/src/main/java/mage/client/util/GUISizeHelper.java +++ b/Mage.Client/src/main/java/mage/client/util/GUISizeHelper.java @@ -48,6 +48,8 @@ public class GUISizeHelper { public static Font gameDialogAreaFontSmall = new java.awt.Font("Arial", 0, 12); public static Dimension handCardDimension; + public static Dimension otherZonesCardDimension; + public static Dimension battlefieldCardDimension; public static int getTableRowHeight() { int fontSize = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GUI_TABLE_FONT_SIZE, 14); @@ -110,8 +112,12 @@ public class GUISizeHelper { cardTooltipFontSize = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GUI_TOOLTIP_SIZE, 14); int handCardSize = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GUI_CARD_HAND_SIZE, 14); - int width = CARD_IMAGE_WIDTH * handCardSize / 42; - int height = CARD_IMAGE_HEIGHT * handCardSize / 42; - handCardDimension = new Dimension(width, height); + handCardDimension = new Dimension(CARD_IMAGE_WIDTH * handCardSize / 42, CARD_IMAGE_HEIGHT * handCardSize / 42); + + int otherZonesCardSize = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GUI_CARD_OTHER_ZONES_SIZE, 14); + otherZonesCardDimension = new Dimension(CARD_IMAGE_WIDTH * otherZonesCardSize / 42, CARD_IMAGE_HEIGHT * otherZonesCardSize / 42); + + int battlefieldCardSize = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GUI_CARD_BATTLEFIELD_SIZE, 14); + battlefieldCardDimension = new Dimension(CARD_IMAGE_WIDTH * battlefieldCardSize / 42, CARD_IMAGE_HEIGHT * battlefieldCardSize / 42); } } diff --git a/Mage.Client/src/main/java/org/mage/card/arcane/CardPanel.java b/Mage.Client/src/main/java/org/mage/card/arcane/CardPanel.java index 108a98ba8b7..6014221b47f 100644 --- a/Mage.Client/src/main/java/org/mage/card/arcane/CardPanel.java +++ b/Mage.Client/src/main/java/org/mage/card/arcane/CardPanel.java @@ -53,6 +53,7 @@ import net.java.truevfs.access.TFile; import org.apache.log4j.Logger; import org.mage.card.arcane.ScaledImagePanel.MultipassType; import org.mage.card.arcane.ScaledImagePanel.ScalingType; +import static org.mage.plugins.card.constants.Constants.THUMBNAIL_SIZE_FULL; import org.mage.plugins.card.dl.sources.DirectLinksForDownload; import org.mage.plugins.card.images.ImageCache; import org.mage.plugins.card.utils.impl.ImageManagerImpl; @@ -275,8 +276,8 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti titleText = new GlowText(); setText(gameCard); - int fontSize = (int) dimension.getHeight() / 11; - titleText.setFont(getFont().deriveFont(Font.BOLD, fontSize)); +// int fontSize = (int) cardHeight / 11; +// titleText.setFont(getFont().deriveFont(Font.BOLD, fontSize)); titleText.setForeground(Color.white); titleText.setGlow(Color.black, TEXT_GLOW_SIZE, TEXT_GLOW_INTENSITY); titleText.setWrap(true); @@ -288,7 +289,7 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti } else if (CardUtil.isPlaneswalker(gameCard)) { ptText.setText(gameCard.getLoyalty()); } - ptText.setFont(getFont().deriveFont(Font.BOLD, fontSize)); +// ptText.setFont(getFont().deriveFont(Font.BOLD, fontSize)); ptText.setForeground(Color.white); ptText.setGlow(Color.black, TEXT_GLOW_SIZE, TEXT_GLOW_INTENSITY); add(ptText); @@ -587,18 +588,24 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti titleText.setVisible(showText); ptText.setVisible(showText); - int titleX = Math.round(cardWidth * (20f / 480)); - int titleY = Math.round(cardHeight * (9f / 680)) + yTextOffset; - titleText.setBounds(cardXOffset + titleX, cardYOffset + titleY, cardWidth - titleX, cardHeight - titleY); + if (showText) { + int fontSize = (int) cardHeight / 11; + titleText.setFont(getFont().deriveFont(Font.BOLD, fontSize)); - Dimension ptSize = ptText.getPreferredSize(); - ptText.setSize(ptSize.width, ptSize.height); - int ptX = Math.round(cardWidth * (420f / 480)) - ptSize.width / 2; - int ptY = Math.round(cardHeight * (675f / 680)) - ptSize.height; + int titleX = Math.round(cardWidth * (20f / 480)); + int titleY = Math.round(cardHeight * (9f / 680)) + yTextOffset; + titleText.setBounds(cardXOffset + titleX, cardYOffset + titleY, cardWidth - titleX, cardHeight - titleY); - int offsetX = Math.round((CARD_SIZE_FULL.width - cardWidth) / 10.0f); + ptText.setFont(getFont().deriveFont(Font.BOLD, fontSize)); + Dimension ptSize = ptText.getPreferredSize(); + ptText.setSize(ptSize.width, ptSize.height); + int ptX = Math.round(cardWidth * (420f / 480)) - ptSize.width / 2; + int ptY = Math.round(cardHeight * (675f / 680)) - ptSize.height; - ptText.setLocation(cardXOffset + ptX - TEXT_GLOW_SIZE / 2 - offsetX, cardYOffset + ptY - TEXT_GLOW_SIZE / 2); + int offsetX = Math.round((CARD_SIZE_FULL.width - cardWidth) / 10.0f); + + ptText.setLocation(cardXOffset + ptX - TEXT_GLOW_SIZE / 2 - offsetX, cardYOffset + ptY - TEXT_GLOW_SIZE / 2); + } if (isAnimationPanel || cardWidth < 200) { imagePanel.setScalingType(ScalingType.nearestNeighbor); @@ -724,6 +731,8 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti BufferedImage srcImage; if (gameCard.isFaceDown()) { srcImage = getFaceDownImage(); + } else if (cardWidth > THUMBNAIL_SIZE_FULL.width) { + srcImage = ImageCache.getImage(gameCard, cardWidth, cardHeight); } else { srcImage = ImageCache.getThumbnail(gameCard); } diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java b/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java index 1697e27a757..7e76349d6ad 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java @@ -17,6 +17,7 @@ import javax.swing.JDialog; import javax.swing.JLayeredPane; import mage.cards.MagePermanent; import mage.cards.action.ActionCallback; +import mage.client.util.GUISizeHelper; import mage.constants.Rarity; import mage.interfaces.plugin.CardPlugin; import mage.utils.CardUtil; @@ -30,7 +31,6 @@ import net.xeoh.plugins.base.annotations.meta.Author; import org.apache.log4j.Logger; import org.mage.card.arcane.Animation; import org.mage.card.arcane.CardPanel; -import org.mage.plugins.card.constants.Constants; import org.mage.plugins.card.dl.DownloadGui; import org.mage.plugins.card.dl.DownloadJob; import org.mage.plugins.card.dl.Downloader; @@ -65,7 +65,9 @@ public class CardPluginImpl implements CardPlugin { private static final float ATTACHMENT_SPACING_Y = 0.13f; private int landStackMax = 5; - private int cardWidthMin = 50, cardWidthMax = Constants.CARD_SIZE_FULL.width; + // private int cardWidthMin = 50, cardWidthMax = Constants.CARD_SIZE_FULL.width; + private int cardWidthMin = 50, cardWidthMax = (int) GUISizeHelper.battlefieldCardDimension.getWidth(); + private boolean stackVertical = false; private int playAreaWidth, playAreaHeight; @@ -74,6 +76,10 @@ public class CardPluginImpl implements CardPlugin { private int stackSpacingX, stackSpacingY, attachmentSpacingY; private List rows = new ArrayList<>(); + public CardPluginImpl() { + setGUISize(); + } + @Init public void init() { } @@ -88,6 +94,16 @@ public class CardPluginImpl implements CardPlugin { return "[Card plugin, version 0.7]"; } + @Override + public void changeGUISize() { + setGUISize(); + } + + private void setGUISize() { + cardWidthMin = 50; + cardWidthMax = (int) GUISizeHelper.battlefieldCardDimension.getWidth(); + } + @Override public MagePermanent getMagePermanent(PermanentView permanent, Dimension dimension, UUID gameId, ActionCallback callback, boolean canBeFoil, boolean loadImage) { CardPanel cardPanel = new CardPanel(permanent, gameId, loadImage, callback, false, dimension); diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/images/ImageCache.java b/Mage.Client/src/main/java/org/mage/plugins/card/images/ImageCache.java index 6389c70ecff..a62ca5aaaaa 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/images/ImageCache.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/images/ImageCache.java @@ -41,9 +41,9 @@ import org.mage.plugins.card.utils.CardImageUtils; */ public class ImageCache { - private static final Logger log = Logger.getLogger(ImageCache.class); + private static final Logger LOGGER = Logger.getLogger(ImageCache.class); - private static final Map imageCache; + private static final Map IMAGE_CACHE; /** * Common pattern for keys. Format: "##" @@ -51,7 +51,7 @@ public class ImageCache { private static final Pattern KEY_PATTERN = Pattern.compile("(.*)#(.*)#(.*)#(.*)#(.*)"); static { - imageCache = new MapMaker().softValues().makeComputingMap(new Function() { + IMAGE_CACHE = new MapMaker().softValues().makeComputingMap(new Function() { @Override public BufferedImage apply(String key) { try { @@ -112,7 +112,7 @@ public class ImageCache { } } if (exists) { - log.debug("loading thumbnail for " + key + ", path=" + thumbnailPath); + LOGGER.debug("loading thumbnail for " + key + ", path=" + thumbnailPath); return loadImage(thumbnailFile); } else { BufferedImage image = loadImage(file); @@ -120,7 +120,7 @@ public class ImageCache { if (image == null) { return null; } - log.debug("creating thumbnail for " + key); + LOGGER.debug("creating thumbnail for " + key); return makeThumbnail(image, thumbnailPath); } } else { @@ -202,7 +202,7 @@ public class ImageCache { */ private static BufferedImage getImage(String key) { try { - BufferedImage image = imageCache.get(key); + BufferedImage image = IMAGE_CACHE.get(key); return image; } catch (NullPointerException ex) { // unfortunately NullOutputException, thrown when apply() returns @@ -214,7 +214,7 @@ public class ImageCache { if (ex.getCause() instanceof NullPointerException) { return null; } - log.error(ex, ex); + LOGGER.error(ex, ex); return null; } } @@ -249,7 +249,7 @@ public class ImageCache { } BufferedImage image = null; if (!file.exists()) { - log.debug("File does not exist: " + file.toString()); + LOGGER.debug("File does not exist: " + file.toString()); return null; } try { @@ -257,7 +257,7 @@ public class ImageCache { image = ImageIO.read(inputStream); } } catch (Exception e) { - log.error(e, e); + LOGGER.error(e, e); } return image; @@ -274,7 +274,7 @@ public class ImageCache { ImageIO.write(image, "jpg", outputStream); } } catch (IOException e) { - log.error(e, e); + LOGGER.error(e, e); imageFile.delete(); } return image; @@ -345,10 +345,10 @@ public class ImageCache { if (Constants.THUMBNAIL_SIZE_FULL.width + 10 > width) { return getThumbnail(card); } - String key = getKey(card, card.getName(), ""); + String key = getKey(card, card.getName(), Integer.toString(width)); BufferedImage original = getImage(key); if (original == null) { - log.debug(key + " not found"); + LOGGER.debug(key + " not found"); return null; } @@ -365,7 +365,7 @@ public class ImageCache { TFile file = new TFile(path); return file; } catch (NullPointerException ex) { - log.warn("Imagefile does not exist: " + path); + LOGGER.warn("Imagefile does not exist: " + path); } return null; } diff --git a/Mage.Common/src/mage/interfaces/plugin/CardPlugin.java b/Mage.Common/src/mage/interfaces/plugin/CardPlugin.java index e6c5dbd2be7..3c12d333360 100644 --- a/Mage.Common/src/mage/interfaces/plugin/CardPlugin.java +++ b/Mage.Common/src/mage/interfaces/plugin/CardPlugin.java @@ -44,4 +44,6 @@ public interface CardPlugin extends Plugin { JComponent getCardInfoPane(); BufferedImage getOriginalImage(CardView card); + + void changeGUISize(); }