From 7ef0a0a7f0e6ea81e361fdcf4d01a3b6ca189bbe Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 13 Feb 2016 02:30:05 +0100 Subject: [PATCH] Some more changes to GUI to better support high screen resolutions. --- .../src/main/java/mage/client/MageFrame.java | 25 ++- .../main/java/mage/client/cards/Cards.java | 84 +++++--- .../java/mage/client/cards/CardsList.java | 11 +- .../java/mage/client/chat/ChatPanelBasic.java | 10 +- .../mage/client/chat/ChatPanelSeparated.java | 4 +- .../mage/client/deckeditor/CardSelector.java | 11 +- .../client/dialog/CardInfoWindowDialog.java | 7 +- .../mage/client/dialog/PreferencesDialog.form | 154 ++++++++++----- .../mage/client/dialog/PreferencesDialog.java | 182 ++++++++++++------ .../client/dialog/TableWaitingDialog.java | 17 +- .../java/mage/client/draft/DraftPane.form | 2 +- .../java/mage/client/draft/DraftPane.java | 28 +-- .../java/mage/client/draft/DraftPanel.java | 69 ++++--- .../mage/client/game/BattlefieldPanel.java | 6 +- .../main/java/mage/client/game/GamePane.java | 2 + .../main/java/mage/client/game/GamePanel.java | 13 +- .../main/java/mage/client/game/HandPanel.java | 49 ++--- .../java/mage/client/game/HelperPanel.java | 6 +- .../java/mage/client/game/PlayAreaPanel.java | 8 +- .../plugins/adapters/MageActionCallback.java | 56 +++--- .../mage/client/table/PlayersChatPanel.form | 9 +- .../mage/client/table/PlayersChatPanel.java | 30 +-- .../java/mage/client/table/TablesPanel.java | 26 +-- .../client/tournament/TournamentPanel.java | 30 +-- .../java/mage/client/util/FontSizeHelper.java | 101 ---------- .../java/mage/client/util/GUISizeHelper.java | 117 +++++++++++ .../java/mage/client/util/ImageHelper.java | 56 ++++-- .../util/gui/countryBox/CountryUtil.java | 42 ++-- .../java/org/mage/card/arcane/CardPanel.java | 84 ++++---- .../org/mage/card/arcane/ManaSymbols.java | 18 +- .../org/mage/plugins/card/CardPluginImpl.java | 6 +- 31 files changed, 745 insertions(+), 518 deletions(-) delete mode 100644 Mage.Client/src/main/java/mage/client/util/FontSizeHelper.java create mode 100644 Mage.Client/src/main/java/mage/client/util/GUISizeHelper.java diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index 7c543514ba..c13db89bb1 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -115,11 +115,12 @@ import mage.client.remote.CallbackClientImpl; import mage.client.table.TablesPane; import mage.client.tournament.TournamentPane; import mage.client.util.EDTExceptionHandler; -import mage.client.util.FontSizeHelper; +import mage.client.util.GUISizeHelper; import mage.client.util.SettingsManager; import mage.client.util.SystemUtil; import mage.client.util.audio.MusicPlayer; import mage.client.util.gui.ArrowBuilder; +import mage.client.util.gui.countryBox.CountryUtil; import mage.client.util.stats.UpdateMemUsageTask; import mage.components.ImagePanel; import mage.interfaces.MageClient; @@ -238,11 +239,8 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { try { UIManager.put("desktop", new Color(0, 0, 0, 0)); UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); - FontSizeHelper.calculateGUISizes(); - // Change default font and row size for JTables - Font font = FontSizeHelper.getTableFont(); - UIManager.put("Table.font", font); - UIManager.put("Table.rowHeight", FontSizeHelper.tableRowHeight); + GUISizeHelper.calculateGUISizes(); + // UIManager.put("Table.rowHeight", GUISizeHelper.tableRowHeight); } catch (Exception ex) { LOGGER.fatal(null, ex); } @@ -532,7 +530,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { MagePane window = (MagePane) windows[i]; if (window.isVisible()) { menuItem = new MagePaneMenuItem(window); - menuItem.setFont(FontSizeHelper.getToolbarFont()); + menuItem.setFont(GUISizeHelper.getToolbarFont()); menuItem.setState(i == 0); menuItem.addActionListener(new ActionListener() { @Override @@ -1070,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() { @@ -1407,6 +1403,8 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { public void changeGUISize() { setGUISize(); + + CountryUtil.changeGUISize(); for (Component component : desktopPane.getComponents()) { if (component instanceof MageDialog) { ((MageDialog) component).changeGUISize(); @@ -1415,16 +1413,15 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { ((MagePane) component).changeGUISize(); } } - Font font = FontSizeHelper.getChatFont(); for (ChatPanelBasic chatPanel : getChatPanels().values()) { - chatPanel.changeGUISize(font); + chatPanel.changeGUISize(GUISizeHelper.chatFont); } this.revalidate(); this.repaint(); } private void setGUISize() { - Font font = FontSizeHelper.getToolbarFont(); + Font font = GUISizeHelper.getToolbarFont(); mageToolbar.setFont(font); int newHeight = font.getSize() + 6; Dimension mageToolbarDimension = mageToolbar.getPreferredSize(); @@ -1448,7 +1445,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { component.setMaximumSize(d); } } - balloonTip.setFont(FontSizeHelper.tooltipFont); + balloonTip.setFont(GUISizeHelper.tooltipFont); } } 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 50d6b6b51b..574612cefd 100644 --- a/Mage.Client/src/main/java/mage/client/cards/Cards.java +++ b/Mage.Client/src/main/java/mage/client/cards/Cards.java @@ -26,7 +26,7 @@ * or implied, of BetaSteward_at_googlemail.com. */ -/* + /* * Cards.java * * Created on Dec 18, 2009, 10:40:12 AM @@ -50,6 +50,7 @@ import mage.cards.MageCard; import mage.client.plugins.impl.Plugins; import mage.client.util.CardsViewUtil; import mage.client.util.Config; +import mage.client.util.GUISizeHelper; import mage.view.CardView; import mage.view.CardsView; import mage.view.PermanentView; @@ -64,15 +65,14 @@ import org.mage.card.arcane.CardPanel; */ public class Cards extends javax.swing.JPanel { - private static final Logger logger = Logger.getLogger(Cards.class); + private static final Logger LOGGER = Logger.getLogger(Cards.class); + private static final Border EMPTY_BORDER = new EmptyBorder(0, 0, 0, 0); private final Map cards = new LinkedHashMap<>(); private boolean dontDisplayTapped = false; private static final int GAP_X = 5; // needed for marking cards with coloured fram (e.g. on hand) private String zone; - private static final Border emptyBorder = new EmptyBorder(0, 0, 0, 0); - private int minOffsetY = 0; /** @@ -98,17 +98,35 @@ public class Cards extends javax.swing.JPanel { if (!skipAddingScrollPane) { jScrollPane1.setOpaque(false); jScrollPane1.getViewport().setOpaque(false); - jScrollPane1.setBorder(emptyBorder); + jScrollPane1.setBorder(EMPTY_BORDER); } if (Plugins.getInstance().isCardPluginLoaded()) { cardArea.setLayout(null); } - cardArea.setBorder(emptyBorder); + cardArea.setBorder(EMPTY_BORDER); + setGUISize(); } public void cleanUp() { } + public void changeGUISize() { + setGUISize(); + for (MageCard mageCard : cards.values()) { + mageCard.setCardBounds(0, 0, getCardDimension().width, getCardDimension().height); + mageCard.updateImage(); + } + layoutCards(); + sizeCards(cardDimension); + } + + private void setGUISize() { + if (jScrollPane1 != null) { + jScrollPane1.getVerticalScrollBar().setPreferredSize(new Dimension(GUISizeHelper.scrollBarSize, 0)); + jScrollPane1.getHorizontalScrollBar().setPreferredSize(new Dimension(0, GUISizeHelper.scrollBarSize)); + } + } + /** * Sets components background color * @@ -151,18 +169,18 @@ public class Cards extends javax.swing.JPanel { } // Workaround for bug leaving display of objects on the stack (issue #213 https://github.com/magefree/mage/issues/213) - if (cardsView.size() == 0 && countCards() > 0) { + if (cardsView.isEmpty() && countCards() > 0) { // problem happens with transformable cards - logger.fatal("Card object on the cards panel was not removed"); + LOGGER.fatal("Card object on the cards panel was not removed"); for (Component comp : cardArea.getComponents()) { if (comp instanceof Card) { Card card = (Card) comp; - logger.fatal("Card name:" + card.getName() + " type:" + card.getType(null)); + LOGGER.fatal("Card name:" + card.getName() + " type:" + card.getType(null)); } else if (comp instanceof MageCard) { MageCard mageCard = (MageCard) comp; - logger.fatal("MageCard name:" + mageCard.getName() + " toolTiptext:" + mageCard.getToolTipText()); + LOGGER.fatal("MageCard name:" + mageCard.getName() + " toolTiptext:" + mageCard.getToolTipText()); } else { - logger.fatal("Unknown object:" + comp.getName() + " className:" + comp.getClass().getName()); + LOGGER.fatal("Unknown object:" + comp.getName() + " className:" + comp.getClass().getName()); } cardArea.remove(comp); } @@ -235,15 +253,25 @@ public class Cards extends javax.swing.JPanel { return cardDimension; } - private void addCard(CardView card, BigCard bigCard, UUID gameId) { - MageCard cardImg = Plugins.getInstance().getMageCard(card, bigCard, getCardDimension(), gameId, true); - if (zone != null) { - cardImg.setZone(zone); + public void setCardDimension(Dimension dimension) { + this.cardDimension = dimension; + for (Component component : cardArea.getComponents()) { + if (component instanceof CardPanel) { + ((CardPanel) component).setBounds(0, 0, dimension.width, dimension.height); + } } - cards.put(card.getId(), cardImg); - cardArea.add(cardImg); - definePosition(cardImg); - cardImg.setCardAreaRef(cardArea); + layoutCards(); + } + + private void addCard(CardView card, BigCard bigCard, UUID gameId) { + MageCard mageCard = Plugins.getInstance().getMageCard(card, bigCard, getCardDimension(), gameId, true); + if (zone != null) { + mageCard.setZone(zone); + } + cards.put(card.getId(), mageCard); + cardArea.add(mageCard); + definePosition(mageCard); + mageCard.setCardAreaRef(cardArea); } private void definePosition(MageCard card) { @@ -320,28 +348,24 @@ public class Cards extends javax.swing.JPanel { } } - public void setCardDimension(Dimension dimension) { - this.cardDimension = dimension; - layoutCards(); - } - private void layoutCards() { - java.util.List cards = new ArrayList<>(); - + java.util.List cardsToLayout = new ArrayList<>(); + // get all the card panels for (Component component : cardArea.getComponents()) { if (component instanceof CardPanel) { - cards.add((CardPanel) component); + cardsToLayout.add((CardPanel) component); } } - Collections.sort(cards, new Comparator() { + // sort the cards + Collections.sort(cardsToLayout, new Comparator() { @Override public int compare(CardPanel cp1, CardPanel cp2) { return Integer.valueOf(cp1.getLocation().x).compareTo(cp2.getLocation().x); } }); - + // relocate the cards int dx = 0; - for (Component component : cards) { + for (Component component : cardsToLayout) { component.setLocation(dx, Math.max(component.getLocation().y, minOffsetY)); dx += ((CardPanel) component).getCardWidth() + GAP_X; } diff --git a/Mage.Client/src/main/java/mage/client/cards/CardsList.java b/Mage.Client/src/main/java/mage/client/cards/CardsList.java index 79616816d4..e3b374ca49 100644 --- a/Mage.Client/src/main/java/mage/client/cards/CardsList.java +++ b/Mage.Client/src/main/java/mage/client/cards/CardsList.java @@ -36,7 +36,6 @@ package mage.client.cards; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; -import java.awt.Font; import java.awt.Rectangle; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; @@ -73,7 +72,7 @@ import mage.client.util.CardViewNameComparator; import mage.client.util.CardViewRarityComparator; import mage.client.util.Config; import mage.client.util.Event; -import mage.client.util.FontSizeHelper; +import mage.client.util.GUISizeHelper; import mage.client.util.Listener; import mage.client.util.gui.TableSpinnerEditor; import mage.constants.CardType; @@ -148,9 +147,11 @@ public class CardsList extends javax.swing.JPanel implements MouseListener, ICar } private void setGUISize() { - Font font = FontSizeHelper.getTableFont(); - mainTable.getTableHeader().setFont(font); - mainTable.getTableHeader().setPreferredSize(new Dimension(FontSizeHelper.tableHeaderHeight, FontSizeHelper.tableHeaderHeight)); + mainTable.getTableHeader().setFont(GUISizeHelper.tableFont); + mainTable.getTableHeader().setPreferredSize(new Dimension(GUISizeHelper.tableHeaderHeight, GUISizeHelper.tableHeaderHeight)); + mainTable.setFont(GUISizeHelper.tableFont); + mainTable.setRowHeight(GUISizeHelper.getTableRowHeight()); + } private void makeTransparent() { diff --git a/Mage.Client/src/main/java/mage/client/chat/ChatPanelBasic.java b/Mage.Client/src/main/java/mage/client/chat/ChatPanelBasic.java index c62cb95a77..57e1d3d27c 100644 --- a/Mage.Client/src/main/java/mage/client/chat/ChatPanelBasic.java +++ b/Mage.Client/src/main/java/mage/client/chat/ChatPanelBasic.java @@ -40,7 +40,7 @@ import java.awt.event.KeyEvent; import java.util.UUID; import javax.swing.JTextField; import mage.client.MageFrame; -import mage.client.util.FontSizeHelper; +import mage.client.util.GUISizeHelper; import mage.remote.Session; import mage.view.ChatMessage.MessageColor; import mage.view.ChatMessage.MessageType; @@ -122,7 +122,7 @@ public class ChatPanelBasic extends javax.swing.JPanel { public ChatPanelBasic() { initComponents(); setBackground(new Color(0, 0, 0, CHAT_ALPHA)); - changeGUISize(FontSizeHelper.getChatFont()); + changeGUISize(GUISizeHelper.chatFont); if (jScrollPaneTxt != null) { jScrollPaneTxt.setBackground(new Color(0, 0, 0, CHAT_ALPHA)); jScrollPaneTxt.getViewport().setBackground(new Color(0, 0, 0, CHAT_ALPHA)); @@ -138,14 +138,14 @@ public class ChatPanelBasic extends javax.swing.JPanel { txtMessage.setFont(font); if (jScrollPaneTxt != null) { jScrollPaneTxt.setFont(font); - jScrollPaneTxt.getVerticalScrollBar().setPreferredSize(new Dimension(FontSizeHelper.scrollBarSize, 0)); - jScrollPaneTxt.getHorizontalScrollBar().setPreferredSize(new Dimension(0, FontSizeHelper.scrollBarSize)); + jScrollPaneTxt.getVerticalScrollBar().setPreferredSize(new Dimension(GUISizeHelper.scrollBarSize, 0)); + jScrollPaneTxt.getHorizontalScrollBar().setPreferredSize(new Dimension(0, GUISizeHelper.scrollBarSize)); } int height = 30; if (font.getSize() > 20) { height = 30 + Math.min(font.getSize() - 10, 30); } - txtMessage.setMinimumSize(new Dimension(txtMessage.getWidth(), height)); + txtMessage.setMinimumSize(new Dimension(20, height)); txtMessage.setMaximumSize(new Dimension(txtMessage.getWidth(), height)); txtMessage.setPreferredSize(new Dimension(txtMessage.getWidth(), height)); txtMessage.setSize(new Dimension(txtMessage.getWidth(), height)); diff --git a/Mage.Client/src/main/java/mage/client/chat/ChatPanelSeparated.java b/Mage.Client/src/main/java/mage/client/chat/ChatPanelSeparated.java index 3ff7864af0..e95edd6e98 100644 --- a/Mage.Client/src/main/java/mage/client/chat/ChatPanelSeparated.java +++ b/Mage.Client/src/main/java/mage/client/chat/ChatPanelSeparated.java @@ -30,7 +30,7 @@ package mage.client.chat; import java.awt.Font; import static mage.client.chat.ChatPanelBasic.TIMESTAMP_COLOR; import mage.client.components.ColorPane; -import mage.client.util.FontSizeHelper; +import mage.client.util.GUISizeHelper; import mage.view.ChatMessage; import org.mage.card.arcane.ManaSymbols; @@ -105,7 +105,7 @@ public class ChatPanelSeparated extends ChatPanelBasic { public void setSystemMessagesPane(ColorPane systemMessagesPane) { this.systemMessagesPane = systemMessagesPane; - changeGUISize(FontSizeHelper.getChatFont()); + changeGUISize(GUISizeHelper.chatFont); } @Override diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java index c84b9cc986..7d7c2fabe7 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java +++ b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java @@ -36,7 +36,6 @@ package mage.client.deckeditor; import java.awt.Color; import java.awt.Cursor; import java.awt.Dimension; -import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentEvent; @@ -65,7 +64,7 @@ import mage.client.cards.CardGrid; import mage.client.cards.ICardGrid; import mage.client.constants.Constants.SortBy; import mage.client.deckeditor.table.TableModel; -import mage.client.util.FontSizeHelper; +import mage.client.util.GUISizeHelper; import mage.client.util.sets.ConstructedFormats; import mage.constants.CardType; import mage.filter.FilterCard; @@ -187,9 +186,11 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene } private void setGUISize() { - Font font = FontSizeHelper.getTableFont(); - mainTable.getTableHeader().setFont(font); - mainTable.getTableHeader().setPreferredSize(new Dimension(FontSizeHelper.tableHeaderHeight, FontSizeHelper.tableHeaderHeight)); + mainTable.getTableHeader().setFont(GUISizeHelper.tableFont); + mainTable.getTableHeader().setPreferredSize(new Dimension(GUISizeHelper.tableHeaderHeight, GUISizeHelper.tableHeaderHeight)); + mainTable.setFont(GUISizeHelper.tableFont); + mainTable.setRowHeight(GUISizeHelper.getTableRowHeight()); + } public void switchToGrid() { 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 c578a59015..c79a1550f1 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/CardInfoWindowDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/CardInfoWindowDialog.java @@ -26,7 +26,7 @@ * or implied, of BetaSteward_at_googlemail.com. */ -/* + /* * CardInfoWindowDialog.java * * Created on Feb 1, 2010, 3:00:35 PM @@ -57,10 +57,9 @@ import org.mage.plugins.card.utils.impl.ImageManagerImpl; */ public class CardInfoWindowDialog extends MageDialog { - private static final Logger logger = Logger.getLogger(CardInfoWindowDialog.class); + private static final Logger LOGGER = Logger.getLogger(CardInfoWindowDialog.class); public static enum ShowType { - REVEAL, REVEAL_TOP_LIBRARY, LOOKED_AT, EXILE, GRAVEYARD, OTHER }; @@ -124,7 +123,7 @@ public class CardInfoWindowDialog extends MageDialog { try { this.setIcon(false); } catch (PropertyVetoException ex) { - logger.error(null, ex); + LOGGER.error(null, ex); } } } else { 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 78d042e922..e45a542937 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form +++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form @@ -25,7 +25,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -83,12 +83,12 @@ - + - + @@ -116,8 +116,7 @@ - - + @@ -131,30 +130,16 @@ - - - - - - - - - - - - - - @@ -217,7 +202,7 @@ - + @@ -398,8 +383,8 @@ - - + + @@ -407,8 +392,8 @@ - - + + @@ -418,7 +403,7 @@ - + @@ -427,20 +412,8 @@ - + - - - - - - - - - - - - @@ -451,10 +424,105 @@ + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -871,7 +939,7 @@ - + @@ -2162,7 +2230,7 @@ - + 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 d8b7032f72..9f8118844b 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java @@ -60,7 +60,7 @@ import javax.swing.border.Border; import javax.swing.filechooser.FileFilter; import mage.client.MageFrame; import mage.client.util.Config; -import mage.client.util.FontSizeHelper; +import mage.client.util.GUISizeHelper; import mage.client.util.ImageHelper; import mage.client.util.gui.BufferedImageBuilder; import static mage.constants.Constants.DEFAULT_AVATAR_ID; @@ -82,7 +82,6 @@ public class PreferencesDialog extends javax.swing.JDialog { private static final Logger LOGGER = Logger.getLogger(PreferencesDialog.class); - public static final String KEY_HAND_USE_BIG_CARDS = "handUseBigCards"; public static final String KEY_SHOW_TOOLTIPS_DELAY = "showTooltipsDelay"; public static final String KEY_SHOW_CARD_NAMES = "showCardNames"; public static final String KEY_PERMANENTS_IN_ONE_PILE = "nonLandPermanentsInOnePile"; @@ -93,7 +92,9 @@ public class PreferencesDialog extends javax.swing.JDialog { public static final String KEY_GAME_CONFIRM_EMPTY_MANA_POOL = "gameConfirmEmptyManaPool"; public static final String KEY_GAME_ASK_MOVE_TO_GRAVE_ORDER = "gameAskMoveToGraveORder"; - public static final String KEY_GUI_FONT_SIZE = "guiFontSize"; + public static final String KEY_GUI_TABLE_FONT_SIZE = "guiTableFontSize"; + public static final String KEY_GUI_CHAT_FONT_SIZE = "guiChatFontSize"; + public static final String KEY_GUI_CARD_HAND_SIZE = "guiCardHandSize"; public static final String KEY_GAME_LOG_AUTO_SAVE = "gameLogAutoSave"; public static final String KEY_DRAFT_LOG_AUTO_SAVE = "draftLogAutoSave"; @@ -125,7 +126,7 @@ public class PreferencesDialog extends javax.swing.JDialog { public static final String MAIN_YOU = "mainYou"; public static final String BEFORE_COMBAT_YOU = "beforeCombatYou"; public static final String END_OF_COMBAT_YOU = "endOfCombatYou"; - public static final String MAIN_2_YOU = "main2You"; + public static final String MAIN_TWO_YOU = "main2You"; public static final String END_OF_TURN_YOU = "endOfTurnYou"; public static final String UPKEEP_OTHERS = "upkeepOthers"; @@ -133,7 +134,7 @@ public class PreferencesDialog extends javax.swing.JDialog { public static final String MAIN_OTHERS = "mainOthers"; public static final String BEFORE_COMBAT_OTHERS = "beforeCombatOthers"; public static final String END_OF_COMBAT_OTHERS = "endOfCombatOthers"; - public static final String MAIN_2_OTHERS = "main2Others"; + public static final String MAIN_TWO_OTHERS = "main2Others"; public static final String END_OF_TURN_OTHERS = "endOfTurnOthers"; public static final String KEY_STOP_ATTACK = "stopDeclareAttacksStep"; @@ -339,11 +340,11 @@ public class PreferencesDialog extends javax.swing.JDialog { @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { + java.awt.GridBagConstraints gridBagConstraints; tabsPanel = new javax.swing.JTabbedPane(); tabMain = new javax.swing.JPanel(); main_card = new javax.swing.JPanel(); - displayBigCardsInHand = new javax.swing.JCheckBox(); showCardName = new javax.swing.JCheckBox(); tooltipDelayLabel = new javax.swing.JLabel(); tooltipDelay = new javax.swing.JSlider(); @@ -360,8 +361,12 @@ public class PreferencesDialog extends javax.swing.JDialog { cbDraftLogAutoSave = new javax.swing.JCheckBox(); tabGuiSize = new javax.swing.JPanel(); guiSize_font = new javax.swing.JPanel(); - fontSizeLabel = new javax.swing.JLabel(); sliderFontSize = new javax.swing.JSlider(); + fontSizeLabel = new javax.swing.JLabel(); + sliderCardSizeHand = new javax.swing.JSlider(); + labelCardSizeHand = new javax.swing.JLabel(); + sliderChatFontSize = new javax.swing.JSlider(); + chatFontSizeLabel = new javax.swing.JLabel(); tabPhases = new javax.swing.JPanel(); jLabelHeadLine = new javax.swing.JLabel(); jLabelYourTurn = new javax.swing.JLabel(); @@ -479,16 +484,6 @@ public class PreferencesDialog extends javax.swing.JDialog { main_card.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Card")); - displayBigCardsInHand.setText("Use big images (for high resolution screens)"); - displayBigCardsInHand.setToolTipText("Changes the size of the cards shown in hand. Switch this option off if you have a small screen size."); - displayBigCardsInHand.setActionCommand(""); - displayBigCardsInHand.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - displayBigCardsInHand.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - displayBigCardsInHandActionPerformed(evt); - } - }); - showCardName.setSelected(true); showCardName.setText("Show card name on card panel"); showCardName.setToolTipText("Write the card's name on the card to make the card name more recognizable."); @@ -520,8 +515,7 @@ public class PreferencesDialog extends javax.swing.JDialog { .addGroup(main_cardLayout.createSequentialGroup() .addGap(6, 6, 6) .addGroup(main_cardLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(tooltipDelayLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(displayBigCardsInHand, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(tooltipDelayLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 481, Short.MAX_VALUE) .addComponent(tooltipDelay, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(main_cardLayout.createSequentialGroup() .addComponent(showCardName) @@ -531,14 +525,11 @@ public class PreferencesDialog extends javax.swing.JDialog { main_cardLayout.setVerticalGroup( main_cardLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(main_cardLayout.createSequentialGroup() - .addComponent(displayBigCardsInHand) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(showCardName) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(tooltipDelayLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(tooltipDelay, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addContainerGap()) + .addComponent(tooltipDelay, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); main_game.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Game")); @@ -625,7 +616,7 @@ public class PreferencesDialog extends javax.swing.JDialog { .addComponent(cbAllowRequestToShowHandCards, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(cbShowStormCounter, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(cbAskMoveToGraveOrder, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap(7, Short.MAX_VALUE)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); main_gameLayout.setVerticalGroup( main_gameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -697,7 +688,7 @@ public class PreferencesDialog extends javax.swing.JDialog { .addComponent(main_card, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(main_gamelog, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(tabMainLayout.createSequentialGroup() - .addComponent(main_game, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(main_game, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(0, 0, Short.MAX_VALUE))) .addContainerGap()) ); @@ -705,25 +696,20 @@ public class PreferencesDialog extends javax.swing.JDialog { tabMainLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(tabMainLayout.createSequentialGroup() .addContainerGap() - .addComponent(main_card, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(main_card, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(main_game, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(main_gamelog, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap()) + .addContainerGap(45, Short.MAX_VALUE)) ); main_card.getAccessibleContext().setAccessibleName("Game panel"); tabsPanel.addTab("Main", tabMain); - guiSize_font.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Font")); - guiSize_font.setLayout(new java.awt.BorderLayout()); - - fontSizeLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - fontSizeLabel.setText("Size"); - fontSizeLabel.setToolTipText("The size of the font used to display text."); - guiSize_font.add(fontSizeLabel, java.awt.BorderLayout.CENTER); + guiSize_font.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Size elements")); + guiSize_font.setLayout(new java.awt.GridBagLayout()); sliderFontSize.setMajorTickSpacing(5); sliderFontSize.setMaximum(50); @@ -733,7 +719,77 @@ public class PreferencesDialog extends javax.swing.JDialog { sliderFontSize.setPaintTicks(true); sliderFontSize.setSnapToTicks(true); sliderFontSize.setToolTipText("Size of the font."); - guiSize_font.add(sliderFontSize, java.awt.BorderLayout.PAGE_START); + 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); + + fontSizeLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + fontSizeLabel.setText("Size of table font"); + fontSizeLabel.setToolTipText("The size of the font used to display table text."); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 0; + gridBagConstraints.ipadx = 3; + gridBagConstraints.ipady = 3; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; + guiSize_font.add(fontSizeLabel, gridBagConstraints); + + sliderCardSizeHand.setMajorTickSpacing(5); + sliderCardSizeHand.setMaximum(50); + sliderCardSizeHand.setMinimum(10); + sliderCardSizeHand.setMinorTickSpacing(1); + sliderCardSizeHand.setPaintLabels(true); + sliderCardSizeHand.setPaintTicks(true); + sliderCardSizeHand.setSnapToTicks(true); + sliderCardSizeHand.setToolTipText("Size of the font."); + sliderCardSizeHand.setValue(14); + sliderCardSizeHand.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + sliderCardSizeHand.setMinimumSize(new java.awt.Dimension(150, 40)); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 3; + gridBagConstraints.gridy = 0; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; + gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); + guiSize_font.add(sliderCardSizeHand, gridBagConstraints); + + labelCardSizeHand.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + labelCardSizeHand.setText("Size of hand cards"); + labelCardSizeHand.setToolTipText("The size of the hand cards"); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridx = 3; + gridBagConstraints.gridy = 1; + gridBagConstraints.ipadx = 3; + gridBagConstraints.ipady = 3; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; + guiSize_font.add(labelCardSizeHand, gridBagConstraints); + + sliderChatFontSize.setMajorTickSpacing(5); + sliderChatFontSize.setMaximum(50); + sliderChatFontSize.setMinimum(10); + sliderChatFontSize.setMinorTickSpacing(1); + sliderChatFontSize.setPaintLabels(true); + sliderChatFontSize.setPaintTicks(true); + sliderChatFontSize.setSnapToTicks(true); + sliderChatFontSize.setToolTipText("Size of the font."); + sliderChatFontSize.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + sliderChatFontSize.setMinimumSize(new java.awt.Dimension(150, 40)); + gridBagConstraints = new java.awt.GridBagConstraints(); + gridBagConstraints.gridy = 3; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; + gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); + guiSize_font.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.ipadx = 3; + gridBagConstraints.ipady = 3; + gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; + guiSize_font.add(chatFontSizeLabel, gridBagConstraints); javax.swing.GroupLayout tabGuiSizeLayout = new javax.swing.GroupLayout(tabGuiSize); tabGuiSize.setLayout(tabGuiSizeLayout); @@ -741,15 +797,15 @@ public class PreferencesDialog extends javax.swing.JDialog { tabGuiSizeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(tabGuiSizeLayout.createSequentialGroup() .addContainerGap() - .addComponent(guiSize_font, javax.swing.GroupLayout.PREFERRED_SIZE, 222, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(296, Short.MAX_VALUE)) + .addComponent(guiSize_font, javax.swing.GroupLayout.DEFAULT_SIZE, 506, Short.MAX_VALUE) + .addContainerGap()) ); tabGuiSizeLayout.setVerticalGroup( tabGuiSizeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(tabGuiSizeLayout.createSequentialGroup() .addContainerGap() - .addComponent(guiSize_font, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(332, Short.MAX_VALUE)) + .addComponent(guiSize_font, javax.swing.GroupLayout.PREFERRED_SIZE, 216, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(211, Short.MAX_VALUE)) ); tabsPanel.addTab("GUI Size", tabGuiSize); @@ -1023,7 +1079,7 @@ public class PreferencesDialog extends javax.swing.JDialog { .addComponent(cbSaveToZipFiles, javax.swing.GroupLayout.Alignment.LEADING)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(cbPreferedImageLanguage, javax.swing.GroupLayout.PREFERRED_SIZE, 153, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addGap(0, 190, Short.MAX_VALUE)) + .addGap(0, 188, Short.MAX_VALUE)) .addGroup(panelCardImagesLayout.createSequentialGroup() .addGap(24, 24, 24) .addComponent(txtImageFolderPath) @@ -1915,7 +1971,7 @@ public class PreferencesDialog extends javax.swing.JDialog { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(cbProxyType, javax.swing.GroupLayout.PREFERRED_SIZE, 126, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(connection_servers, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap(16, Short.MAX_VALUE)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); tabConnectionLayout.setVerticalGroup( tabConnectionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -1956,7 +2012,7 @@ public class PreferencesDialog extends javax.swing.JDialog { layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addContainerGap(405, Short.MAX_VALUE) + .addContainerGap(403, Short.MAX_VALUE) .addComponent(saveButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(exitButton, javax.swing.GroupLayout.PREFERRED_SIZE, 55, javax.swing.GroupLayout.PREFERRED_SIZE) @@ -1981,7 +2037,6 @@ public class PreferencesDialog extends javax.swing.JDialog { Preferences prefs = MageFrame.getPreferences(); // main - save(prefs, dialog.displayBigCardsInHand, KEY_HAND_USE_BIG_CARDS, "true", "false", UPDATE_CACHE_POLICY); save(prefs, dialog.tooltipDelay, KEY_SHOW_TOOLTIPS_DELAY, "true", "false", UPDATE_CACHE_POLICY); save(prefs, dialog.showCardName, KEY_SHOW_CARD_NAMES, "true", "false", UPDATE_CACHE_POLICY); save(prefs, dialog.nonLandPermanentsInOnePile, KEY_PERMANENTS_IN_ONE_PILE, "true", "false", UPDATE_CACHE_POLICY); @@ -1995,9 +2050,22 @@ public class PreferencesDialog extends javax.swing.JDialog { save(prefs, dialog.cbDraftLogAutoSave, KEY_DRAFT_LOG_AUTO_SAVE, "true", "false", UPDATE_CACHE_POLICY); // GUI Size - if (getCachedValue(KEY_GUI_FONT_SIZE, 14) != dialog.sliderFontSize.getValue()) { - save(prefs, dialog.sliderFontSize, KEY_GUI_FONT_SIZE, "true", "false", UPDATE_CACHE_POLICY); - FontSizeHelper.changeGUISize(); + boolean sizeGUIChanged = false; + if (getCachedValue(KEY_GUI_TABLE_FONT_SIZE, 14) != dialog.sliderFontSize.getValue()) { + save(prefs, dialog.sliderFontSize, KEY_GUI_TABLE_FONT_SIZE, "true", "false", UPDATE_CACHE_POLICY); + sizeGUIChanged = true; + } + if (getCachedValue(KEY_GUI_CHAT_FONT_SIZE, 14) != dialog.sliderFontSize.getValue()) { + save(prefs, dialog.sliderChatFontSize, KEY_GUI_CHAT_FONT_SIZE, "true", "false", UPDATE_CACHE_POLICY); + sizeGUIChanged = true; + } + if (getCachedValue(KEY_GUI_CARD_HAND_SIZE, 14) != dialog.sliderCardSizeHand.getValue()) { + save(prefs, dialog.sliderCardSizeHand, KEY_GUI_CARD_HAND_SIZE, "true", "false", UPDATE_CACHE_POLICY); + sizeGUIChanged = true; + } + if (sizeGUIChanged) { + // do as worker job + GUISizeHelper.changeGUISize(); } // Phases & Priority @@ -2006,7 +2074,7 @@ public class PreferencesDialog extends javax.swing.JDialog { save(prefs, dialog.checkBoxMainYou, MAIN_YOU); save(prefs, dialog.checkBoxBeforeCYou, BEFORE_COMBAT_YOU); save(prefs, dialog.checkBoxEndOfCYou, END_OF_COMBAT_YOU); - save(prefs, dialog.checkBoxMain2You, MAIN_2_YOU); + save(prefs, dialog.checkBoxMain2You, MAIN_TWO_YOU); save(prefs, dialog.checkBoxEndTurnYou, END_OF_TURN_YOU); save(prefs, dialog.checkBoxUpkeepOthers, UPKEEP_OTHERS); @@ -2014,7 +2082,7 @@ public class PreferencesDialog extends javax.swing.JDialog { save(prefs, dialog.checkBoxMainOthers, MAIN_OTHERS); save(prefs, dialog.checkBoxBeforeCOthers, BEFORE_COMBAT_OTHERS); save(prefs, dialog.checkBoxEndOfCOthers, END_OF_COMBAT_OTHERS); - save(prefs, dialog.checkBoxMain2Others, MAIN_2_OTHERS); + save(prefs, dialog.checkBoxMain2Others, MAIN_TWO_OTHERS); save(prefs, dialog.checkBoxEndTurnOthers, END_OF_TURN_OTHERS); save(prefs, dialog.cbStopAttack, KEY_STOP_ATTACK, "true", "false", UPDATE_CACHE_POLICY); @@ -2263,10 +2331,6 @@ public class PreferencesDialog extends javax.swing.JDialog { // TODO add your handling code here: }//GEN-LAST:event_showPlayerNamesPermanentlyActionPerformed - private void displayBigCardsInHandActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_displayBigCardsInHandActionPerformed - - }//GEN-LAST:event_displayBigCardsInHandActionPerformed - private void showCardNameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_showCardNameActionPerformed }//GEN-LAST:event_showCardNameActionPerformed @@ -2429,7 +2493,6 @@ public class PreferencesDialog extends javax.swing.JDialog { } private static void loadPhases(Preferences prefs) { - load(prefs, dialog.displayBigCardsInHand, KEY_HAND_USE_BIG_CARDS, "true", "true"); load(prefs, dialog.tooltipDelay, KEY_SHOW_TOOLTIPS_DELAY, "300"); load(prefs, dialog.showCardName, KEY_SHOW_CARD_NAMES, "true"); load(prefs, dialog.nonLandPermanentsInOnePile, KEY_PERMANENTS_IN_ONE_PILE, "true"); @@ -2448,7 +2511,7 @@ public class PreferencesDialog extends javax.swing.JDialog { load(prefs, dialog.checkBoxMainYou, MAIN_YOU, "on", "on"); load(prefs, dialog.checkBoxBeforeCYou, BEFORE_COMBAT_YOU, "on", "on"); load(prefs, dialog.checkBoxEndOfCYou, END_OF_COMBAT_YOU, "on", "on"); - load(prefs, dialog.checkBoxMain2You, MAIN_2_YOU, "on", "on"); + load(prefs, dialog.checkBoxMain2You, MAIN_TWO_YOU, "on", "on"); load(prefs, dialog.checkBoxEndTurnYou, END_OF_TURN_YOU, "on", "on"); load(prefs, dialog.checkBoxUpkeepOthers, UPKEEP_OTHERS, "on", "on"); @@ -2456,7 +2519,7 @@ public class PreferencesDialog extends javax.swing.JDialog { load(prefs, dialog.checkBoxMainOthers, MAIN_OTHERS, "on", "on"); load(prefs, dialog.checkBoxBeforeCOthers, BEFORE_COMBAT_OTHERS, "on", "on"); load(prefs, dialog.checkBoxEndOfCOthers, END_OF_COMBAT_OTHERS, "on", "on"); - load(prefs, dialog.checkBoxMain2Others, MAIN_2_OTHERS, "on", "on"); + load(prefs, dialog.checkBoxMain2Others, MAIN_TWO_OTHERS, "on", "on"); load(prefs, dialog.checkBoxEndTurnOthers, END_OF_TURN_OTHERS, "on", "on"); load(prefs, dialog.cbStopAttack, KEY_STOP_ATTACK, "true", "true"); @@ -2470,7 +2533,9 @@ public class PreferencesDialog extends javax.swing.JDialog { } private static void loadGuiSize(Preferences prefs) { - load(prefs, dialog.sliderFontSize, KEY_GUI_FONT_SIZE, "14"); + load(prefs, dialog.sliderFontSize, KEY_GUI_TABLE_FONT_SIZE, "14"); + load(prefs, dialog.sliderChatFontSize, KEY_GUI_CHAT_FONT_SIZE, "14"); + load(prefs, dialog.sliderCardSizeHand, KEY_GUI_CARD_HAND_SIZE, "14"); } private static void loadImagesSettings(Preferences prefs) { @@ -2891,6 +2956,7 @@ public class PreferencesDialog extends javax.swing.JDialog { private javax.swing.JCheckBox cbUseDefaultBattleImage; private javax.swing.JCheckBox cbUseDefaultImageFolder; private javax.swing.JCheckBox cbUseRandomBattleImage; + private javax.swing.JLabel chatFontSizeLabel; private javax.swing.JCheckBox checkBoxBeforeCOthers; private javax.swing.JCheckBox checkBoxBeforeCYou; private javax.swing.JCheckBox checkBoxDrawOthers; @@ -2906,7 +2972,6 @@ public class PreferencesDialog extends javax.swing.JDialog { private javax.swing.JCheckBox checkBoxUpkeepOthers; private javax.swing.JCheckBox checkBoxUpkeepYou; private javax.swing.JPanel connection_servers; - private javax.swing.JCheckBox displayBigCardsInHand; private javax.swing.JButton exitButton; private javax.swing.JLabel fontSizeLabel; private javax.swing.JPanel guiSize_font; @@ -2949,6 +3014,7 @@ 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 labelCardSizeHand; private javax.swing.JLabel labelPreferedImageLanguage; private javax.swing.JLabel lblProxyPassword; private javax.swing.JLabel lblProxyPort; @@ -2970,6 +3036,8 @@ 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 sliderCardSizeHand; + private javax.swing.JSlider sliderChatFontSize; private javax.swing.JSlider sliderFontSize; private javax.swing.JPanel sounds_backgroundMusic; private javax.swing.JPanel sounds_clips; diff --git a/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java b/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java index f0b8308cd4..bea8603e16 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java @@ -34,7 +34,6 @@ package mage.client.dialog; import java.awt.Dimension; -import java.awt.Font; import java.util.List; import java.util.UUID; import java.util.concurrent.CancellationException; @@ -48,7 +47,7 @@ import mage.client.components.MageComponents; import mage.client.components.tray.MageTray; import static mage.client.dialog.PreferencesDialog.KEY_TABLE_WAITING_COLUMNS_ORDER; import static mage.client.dialog.PreferencesDialog.KEY_TABLE_WAITING_COLUMNS_WIDTH; -import mage.client.util.FontSizeHelper; +import mage.client.util.GUISizeHelper; import mage.client.util.audio.AudioManager; import mage.client.util.gui.TableUtil; import mage.client.util.gui.countryBox.CountryCellRenderer; @@ -98,18 +97,20 @@ public class TableWaitingDialog extends MageDialog { MageFrame.getUI().addButton(MageComponents.TABLE_WAITING_START_BUTTON, btnStart); } + @Override public void changeGUISize() { setGUISize(); } private void setGUISize() { - Font font = FontSizeHelper.getTableFont(); - tableSeats.getTableHeader().setFont(font); - tableSeats.getTableHeader().setPreferredSize(new Dimension(FontSizeHelper.tableHeaderHeight, FontSizeHelper.tableHeaderHeight)); + tableSeats.getTableHeader().setFont(GUISizeHelper.tableFont); + tableSeats.getTableHeader().setPreferredSize(new Dimension(GUISizeHelper.tableHeaderHeight, GUISizeHelper.tableHeaderHeight)); + tableSeats.setFont(GUISizeHelper.tableFont); + tableSeats.setRowHeight(GUISizeHelper.getTableRowHeight()); - jSplitPane1.setDividerSize(FontSizeHelper.dividerBarSize); - jScrollPane1.getVerticalScrollBar().setPreferredSize(new Dimension(FontSizeHelper.scrollBarSize, 0)); - jScrollPane1.getHorizontalScrollBar().setPreferredSize(new Dimension(0, FontSizeHelper.scrollBarSize)); + jSplitPane1.setDividerSize(GUISizeHelper.dividerBarSize); + jScrollPane1.getVerticalScrollBar().setPreferredSize(new Dimension(GUISizeHelper.scrollBarSize, 0)); + jScrollPane1.getHorizontalScrollBar().setPreferredSize(new Dimension(0, GUISizeHelper.scrollBarSize)); } public void update(TableView table) { diff --git a/Mage.Client/src/main/java/mage/client/draft/DraftPane.form b/Mage.Client/src/main/java/mage/client/draft/DraftPane.form index 2112f5b491..851b49929c 100644 --- a/Mage.Client/src/main/java/mage/client/draft/DraftPane.form +++ b/Mage.Client/src/main/java/mage/client/draft/DraftPane.form @@ -1,4 +1,4 @@ - +
diff --git a/Mage.Client/src/main/java/mage/client/draft/DraftPane.java b/Mage.Client/src/main/java/mage/client/draft/DraftPane.java index 28c6cf061e..04438f81e1 100644 --- a/Mage.Client/src/main/java/mage/client/draft/DraftPane.java +++ b/Mage.Client/src/main/java/mage/client/draft/DraftPane.java @@ -26,12 +26,11 @@ * or implied, of BetaSteward_at_googlemail.com. */ -/* + /* * DraftPane.java * * Created on Jan 7, 2011, 2:11:44 PM */ - package mage.client.draft; import java.awt.Component; @@ -48,11 +47,13 @@ import mage.client.plugins.impl.Plugins; */ public class DraftPane extends MagePane { - /** Creates new form DraftPane */ + /** + * Creates new form DraftPane + */ public DraftPane() { boolean initialized = false; if (Plugins.getInstance().isThemePluginLoaded()) { - Map uiComponents = new HashMap(); + Map uiComponents = new HashMap<>(); JComponent container = Plugins.getInstance().updateTablePanel(uiComponents); if (container != null) { draftPanel1 = new mage.client.draft.DraftPanel(); @@ -68,20 +69,25 @@ public class DraftPane extends MagePane { } } + @Override + public void changeGUISize() { + super.changeGUISize(); //To change body of generated methods, choose Tools | Templates. + } + public void showDraft(UUID draftId) { this.setTitle("Draft - " + draftId); this.draftPanel1.showDraft(draftId); } - + public void removeDraft() { draftPanel1.cleanUp(); this.removeFrame(); } - /** 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. + /** + * 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 @@ -112,11 +118,11 @@ public class DraftPane extends MagePane { getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(container, javax.swing.GroupLayout.DEFAULT_SIZE, 885, Short.MAX_VALUE) + .addComponent(container, javax.swing.GroupLayout.DEFAULT_SIZE, 885, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(container, javax.swing.GroupLayout.DEFAULT_SIZE, 626, Short.MAX_VALUE) + .addComponent(container, javax.swing.GroupLayout.DEFAULT_SIZE, 626, Short.MAX_VALUE) ); pack(); diff --git a/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java b/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java index 679cb823d0..7b1f9ca069 100644 --- a/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java +++ b/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java @@ -26,7 +26,7 @@ * or implied, of BetaSteward_at_googlemail.com. */ -/* + /* * DraftPanel.java * * Created on Jan 7, 2011, 2:15:48 PM @@ -88,7 +88,7 @@ import org.apache.log4j.Logger; */ public class DraftPanel extends javax.swing.JPanel { - private static final Logger logger = Logger.getLogger(DraftPanel.class); + private static final Logger LOGGER = Logger.getLogger(DraftPanel.class); private UUID draftId; private Session session; @@ -121,7 +121,7 @@ public class DraftPanel extends javax.swing.JPanel { private String currentBoosterHeader; private String[] currentBooster; - private static final CardsView emptyView = new CardsView(); + private static final CardsView EMPTY_VIEW = new CardsView(); /** * Creates new form DraftPanel @@ -145,16 +145,16 @@ public class DraftPanel extends javax.swing.JPanel { countdown = new Timer(1000, new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - if (--timeout > 0) { - setTimeout(timeout); - } else { - setTimeout(0); - countdown.stop(); - } - } + @Override + public void actionPerformed(ActionEvent e) { + if (--timeout > 0) { + setTimeout(timeout); + } else { + setTimeout(0); + countdown.stop(); } + } + } ); } @@ -170,6 +170,15 @@ public class DraftPanel extends javax.swing.JPanel { } } + public void changeGUISize() { + draftPicks.changeGUISize(); + setGUISize(); + } + + private void setGUISize() { + + } + public synchronized void showDraft(UUID draftId) { this.draftId = draftId; session = MageFrame.getSession(); @@ -186,7 +195,7 @@ public class DraftPanel extends javax.swing.JPanel { try { Files.write(pathToDraftLog(), "".getBytes(), StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING); } catch (IOException ex) { - logger.error(null, ex); + LOGGER.error(null, ex); } } else { logFilename = null; @@ -319,24 +328,24 @@ public class DraftPanel extends javax.swing.JPanel { this.draftBooster.clearCardEventListeners(); this.draftBooster.addCardEventListener( new Listener() { - @Override - public void event(Event event) { - if (event.getEventName().equals("pick-a-card")) { - SimpleCardView source = (SimpleCardView) event.getSource(); - DraftPickView view = session.sendCardPick(draftId, source.getId(), cardsHidden); - if (view != null) { - loadCardsToPickedCardsArea(view.getPicks()); - draftBooster.loadBooster(emptyView, bigCard); - Plugins.getInstance().getActionCallback().hideTooltipPopup(); - setMessage("Waiting for other players"); - } - } - if (event.getEventName().equals("mark-a-card")) { - SimpleCardView source = (SimpleCardView) event.getSource(); - session.sendCardMark(draftId, source.getId()); - } + @Override + public void event(Event event) { + if (event.getEventName().equals("pick-a-card")) { + SimpleCardView source = (SimpleCardView) event.getSource(); + DraftPickView view = session.sendCardPick(draftId, source.getId(), cardsHidden); + if (view != null) { + loadCardsToPickedCardsArea(view.getPicks()); + draftBooster.loadBooster(EMPTY_VIEW, bigCard); + Plugins.getInstance().getActionCallback().hideTooltipPopup(); + setMessage("Waiting for other players"); } } + if (event.getEventName().equals("mark-a-card")) { + SimpleCardView source = (SimpleCardView) event.getSource(); + session.sendCardMark(draftId, source.getId()); + } + } + } ); setMessage("Pick a card"); if (!MageFrame.getInstance().isActive()) { @@ -524,7 +533,7 @@ public class DraftPanel extends javax.swing.JPanel { try { Files.write(pathToDraftLog(), data.getBytes(), StandardOpenOption.APPEND); } catch (IOException ex) { - logger.error(null, ex); + LOGGER.error(null, ex); } } 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 d046213dc9..9f4708391c 100644 --- a/Mage.Client/src/main/java/mage/client/game/BattlefieldPanel.java +++ b/Mage.Client/src/main/java/mage/client/game/BattlefieldPanel.java @@ -47,7 +47,7 @@ import mage.client.cards.BigCard; import mage.client.cards.Permanent; import mage.client.plugins.impl.Plugins; import mage.client.util.Config; -import mage.client.util.FontSizeHelper; +import mage.client.util.GUISizeHelper; import mage.client.util.audio.AudioManager; import mage.client.util.layout.CardLayoutStrategy; import mage.client.util.layout.impl.OldCardLayoutStrategy; @@ -125,8 +125,8 @@ public class BattlefieldPanel extends javax.swing.JLayeredPane { } private void setGUISize() { - jScrollPane.getVerticalScrollBar().setPreferredSize(new Dimension(FontSizeHelper.scrollBarSize, 0)); - jScrollPane.getHorizontalScrollBar().setPreferredSize(new Dimension(0, FontSizeHelper.scrollBarSize)); + jScrollPane.getVerticalScrollBar().setPreferredSize(new Dimension(GUISizeHelper.scrollBarSize, 0)); + jScrollPane.getHorizontalScrollBar().setPreferredSize(new Dimension(0, GUISizeHelper.scrollBarSize)); } public void update(Map battlefield) { 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 195af6e7f3..d47393b5c7 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePane.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePane.java @@ -74,6 +74,8 @@ public class GamePane extends MagePane { public void changeGUISize() { super.changeGUISize(); gamePanel.changeGUISize(); + this.revalidate(); + this.repaint(); } public void removeGame() { 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 284dc06c38..87866fa518 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java @@ -103,7 +103,7 @@ import mage.client.plugins.impl.Plugins; import mage.client.util.CardsViewUtil; import mage.client.util.Config; import mage.client.util.Event; -import mage.client.util.FontSizeHelper; +import mage.client.util.GUISizeHelper; import mage.client.util.GameManager; import mage.client.util.Listener; import mage.client.util.audio.AudioManager; @@ -205,7 +205,7 @@ public final class GamePanel extends javax.swing.JPanel { public GamePanel() { initComponents(); - changeGUISize(); + setGUISize(); initPopupMenuTriggerOrder(); //this.add(popupMenuTriggerOrder); @@ -332,12 +332,13 @@ public final class GamePanel extends javax.swing.JPanel { playAreaPanel.changeGUISize(); } feedbackPanel.changeGUISize(); + } private void setGUISize() { - jSplitPane0.setDividerSize(FontSizeHelper.dividerBarSize); - jSplitPane1.setDividerSize(FontSizeHelper.dividerBarSize); - jSplitPane2.setDividerSize(FontSizeHelper.dividerBarSize); + jSplitPane0.setDividerSize(GUISizeHelper.dividerBarSize); + jSplitPane1.setDividerSize(GUISizeHelper.dividerBarSize); + jSplitPane2.setDividerSize(GUISizeHelper.dividerBarSize); } private void saveDividerLocations() { @@ -386,7 +387,6 @@ public final class GamePanel extends javax.swing.JPanel { bigCard.setPreferredSize(bbDimension); pnlShortCuts.revalidate(); pnlShortCuts.repaint(); - //this.handContainer.sizeHand(0.8, smallMode); for (PlayAreaPanel p : players.values()) { p.sizePlayer(smallMode); } @@ -399,7 +399,6 @@ public final class GamePanel extends javax.swing.JPanel { bigCard.setPreferredSize(bbDimension); pnlShortCuts.revalidate(); pnlShortCuts.repaint(); - this.handContainer.sizeHand(1, smallMode); for (PlayAreaPanel p : players.values()) { p.sizePlayer(smallMode); } diff --git a/Mage.Client/src/main/java/mage/client/game/HandPanel.java b/Mage.Client/src/main/java/mage/client/game/HandPanel.java index c2b7174622..5d0cc26963 100644 --- a/Mage.Client/src/main/java/mage/client/game/HandPanel.java +++ b/Mage.Client/src/main/java/mage/client/game/HandPanel.java @@ -6,33 +6,23 @@ import javax.swing.*; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; import mage.client.cards.BigCard; -import mage.client.dialog.PreferencesDialog; -import mage.client.util.Config; -import mage.client.util.FontSizeHelper; +import mage.client.util.GUISizeHelper; import mage.constants.Zone; import mage.view.CardsView; public class HandPanel extends JPanel { - private static final int CARD_WIDTH = 75; - private static final double ASPECT_RATIO = 3.5 / 2.5; private static final int HAND_MIN_CARDS_OFFSET_Y = -10; - private boolean smallMode = false; - private Dimension handCardDimensionBig; - private Dimension handCardDimension; - public HandPanel() { - double factor = 1; initComponents(); changeGUISize(); - sizeHand(factor, false); } public void initComponents() { hand = new mage.client.cards.Cards(true); - hand.setCardDimension(getHandCardDimension()); hand.setMinOffsetY(HAND_MIN_CARDS_OFFSET_Y); + hand.setCardDimension(GUISizeHelper.handCardDimension); jPanel = new JPanel(); jScrollPane1 = new JScrollPane(jPanel); @@ -46,11 +36,11 @@ public class HandPanel extends JPanel { jPanel.setOpaque(false); jScrollPane1.setOpaque(false); - jPanel.setBorder(emptyBorder); - jScrollPane1.setBorder(emptyBorder); + jPanel.setBorder(EMPTY_BORDER); + jScrollPane1.setBorder(EMPTY_BORDER); jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); jScrollPane1.getHorizontalScrollBar().setUnitIncrement(8); - jScrollPane1.setViewportBorder(emptyBorder); + jScrollPane1.setViewportBorder(EMPTY_BORDER); setLayout(new BorderLayout()); add(jScrollPane1, BorderLayout.CENTER); @@ -58,7 +48,7 @@ public class HandPanel extends JPanel { hand.setHScrollSpeed(8); hand.setBackgroundColor(new Color(0, 0, 0, 0)); hand.setVisibleIfEmpty(false); - hand.setBorder(emptyBorder); + hand.setBorder(EMPTY_BORDER); hand.setZone(Zone.HAND.toString()); } @@ -71,36 +61,19 @@ public class HandPanel extends JPanel { } private void setGUISize() { - jScrollPane1.getVerticalScrollBar().setPreferredSize(new Dimension(FontSizeHelper.scrollBarSize, 0)); - jScrollPane1.getHorizontalScrollBar().setPreferredSize(new Dimension(0, FontSizeHelper.scrollBarSize)); + jScrollPane1.getVerticalScrollBar().setPreferredSize(new Dimension(GUISizeHelper.scrollBarSize, 0)); + jScrollPane1.getHorizontalScrollBar().setPreferredSize(new Dimension(0, GUISizeHelper.scrollBarSize)); + hand.setCardDimension(GUISizeHelper.handCardDimension); + hand.changeGUISize(); } public void loadCards(CardsView cards, BigCard bigCard, UUID gameId) { hand.loadCards(cards, bigCard, gameId, true); - hand.sizeCards(getHandCardDimension()); - } - - private Dimension getHandCardDimension() { - String useBigCards = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_HAND_USE_BIG_CARDS, "true"); - if (!smallMode && useBigCards.equals("true")) { - return handCardDimensionBig; - } - return handCardDimension; - } - - public void sizeHand(double factor, boolean smallMode) { - this.smallMode = smallMode; - int width = (int) (factor * CARD_WIDTH); - int bigWidth = (int) (Config.handScalingFactor * CARD_WIDTH); - handCardDimension = new Dimension(width, (int) (width * ASPECT_RATIO)); - handCardDimensionBig = new Dimension(bigWidth, (int) (bigWidth * ASPECT_RATIO)); - hand.setCardDimension(getHandCardDimension()); - hand.sizeCards(getHandCardDimension()); } private JPanel jPanel; private JScrollPane jScrollPane1; - private static final Border emptyBorder = new EmptyBorder(0, 0, 0, 0); + private static final Border EMPTY_BORDER = new EmptyBorder(0, 0, 0, 0); private mage.client.cards.Cards hand; } diff --git a/Mage.Client/src/main/java/mage/client/game/HelperPanel.java b/Mage.Client/src/main/java/mage/client/game/HelperPanel.java index cfce6f7c7c..5dc9fe001e 100644 --- a/Mage.Client/src/main/java/mage/client/game/HelperPanel.java +++ b/Mage.Client/src/main/java/mage/client/game/HelperPanel.java @@ -50,7 +50,7 @@ import mage.client.MageFrame; import mage.client.components.MageTextArea; import mage.client.game.FeedbackPanel.FeedbackMode; import static mage.client.game.FeedbackPanel.FeedbackMode.QUESTION; -import mage.client.util.FontSizeHelper; +import mage.client.util.GUISizeHelper; import static mage.constants.PlayerAction.REQUEST_AUTO_ANSWER_ID_NO; import static mage.constants.PlayerAction.REQUEST_AUTO_ANSWER_ID_YES; import static mage.constants.PlayerAction.REQUEST_AUTO_ANSWER_RESET_ALL; @@ -115,12 +115,12 @@ public class HelperPanel extends JPanel { private void setGUISize() { for (Component comp : popupMenuAskNo.getComponents()) { if (comp instanceof JMenuItem) { - comp.setFont(FontSizeHelper.menuFont); + comp.setFont(GUISizeHelper.menuFont); } } for (Component comp : popupMenuAskYes.getComponents()) { if (comp instanceof JMenuItem) { - comp.setFont(FontSizeHelper.menuFont); + comp.setFont(GUISizeHelper.menuFont); } } } 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 2e7c99a556..ad43989cc6 100644 --- a/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java +++ b/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java @@ -56,7 +56,7 @@ import mage.client.dialog.PreferencesDialog; import static mage.client.dialog.PreferencesDialog.KEY_GAME_ALLOW_REQUEST_SHOW_HAND_CARDS; import static mage.client.dialog.PreferencesDialog.KEY_GAME_MANA_AUTOPAYMENT; import static mage.client.dialog.PreferencesDialog.KEY_GAME_MANA_AUTOPAYMENT_ONLY_ONE; -import mage.client.util.FontSizeHelper; +import mage.client.util.GUISizeHelper; import mage.constants.PlayerAction; import mage.view.PlayerView; @@ -150,11 +150,11 @@ public class PlayAreaPanel extends javax.swing.JPanel { private void setGUISize() { for (Component comp : popupMenu.getComponents()) { if (comp instanceof JMenuItem) { - comp.setFont(FontSizeHelper.menuFont); + comp.setFont(GUISizeHelper.menuFont); if (comp instanceof JMenu) { - comp.setFont(FontSizeHelper.menuFont); + comp.setFont(GUISizeHelper.menuFont); for (Component subComp : ((JMenu) comp).getMenuComponents()) { - subComp.setFont(FontSizeHelper.menuFont); + subComp.setFont(GUISizeHelper.menuFont); } } } diff --git a/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java b/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java index 9226a64c96..069d3a8a8e 100644 --- a/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java +++ b/Mage.Client/src/main/java/mage/client/plugins/adapters/MageActionCallback.java @@ -56,7 +56,7 @@ import org.mage.plugins.card.images.ImageCache; */ public class MageActionCallback implements ActionCallback { - private static final Logger logger = Logger.getLogger(ActionCallback.class); + private static final Logger LOGGER = Logger.getLogger(ActionCallback.class); public static final int GAP_X = 5; public static final double COMPARE_GAP_X = 30; @@ -88,7 +88,7 @@ public class MageActionCallback implements ActionCallback { private static final ScheduledExecutorService timeoutExecutor = Executors.newScheduledThreadPool(1); private ScheduledFuture hideTimeout; - private CardPanel prevCard; + private CardPanel prevCardPanel; private boolean startedDragging; private boolean isDragging; private Point initialCardPos; @@ -207,7 +207,7 @@ public class MageActionCallback implements ActionCallback { ); } catch (InterruptedException e) { - logger.warn(e.getMessage()); + LOGGER.warn(e.getMessage()); } } }); @@ -219,11 +219,11 @@ public class MageActionCallback implements ActionCallback { // for some reason sometime mouseRelease happens before numerous Mouse_Dragged events // that results in not finished dragging - clearDragging(this.prevCard); + clearDragging(this.prevCardPanel); isDragging = false; startedDragging = false; - prevCard = null; + prevCardPanel = null; cardPanels.clear(); Point mouse = new Point(e.getX(), e.getY()); SwingUtilities.convertPointToScreen(mouse, data.component); @@ -266,7 +266,7 @@ public class MageActionCallback implements ActionCallback { } private void clearDragging(CardPanel card) { - if (this.startedDragging && prevCard != null && card != null) { + if (this.startedDragging && prevCardPanel != null && card != null) { for (Component component : card.getCardArea().getComponents()) { if (component instanceof CardPanel) { if (cardPanels.contains((CardPanel) component)) { @@ -278,7 +278,7 @@ public class MageActionCallback implements ActionCallback { sort(card, card.getCardArea(), true); cardPanels.clear(); } - prevCard = null; + prevCardPanel = null; } @Override @@ -288,8 +288,8 @@ public class MageActionCallback implements ActionCallback { @Override public void mouseDragged(MouseEvent e, TransferData transferData) { - CardPanel card = ((CardPanel) transferData.component); - if (card.getZone() == null || !card.getZone().equalsIgnoreCase("hand")) { + CardPanel cardPanel = ((CardPanel) transferData.component); + if (cardPanel.getZone() == null || !cardPanel.getZone().equalsIgnoreCase("hand")) { // drag'n'drop is allowed for HAND zone only return; } @@ -298,19 +298,19 @@ public class MageActionCallback implements ActionCallback { return; } isDragging = true; - prevCard = card; - Point p = card.getCardLocation(); + prevCardPanel = cardPanel; + Point cardPanelLocationOld = cardPanel.getLocation(); Point mouse = new Point(e.getX(), e.getY()); SwingUtilities.convertPointToScreen(mouse, transferData.component); - int xOffset = card.getXOffset(card.getCardWidth()); + int xOffset = cardPanel.getXOffset(cardPanel.getCardWidth()); int newX = Math.max(initialCardPos.x + (int) (mouse.getX() - initialMousePos.x) - xOffset, 0); - card.setCardBounds( + cardPanel.setCardBounds( newX, - p.y, - card.getCardWidth(), - card.getCardHeight()); - card.getCardArea().setComponentZOrder(card, 0); - sort(card, card.getCardArea(), false); + cardPanelLocationOld.y + cardPanel.getCardYOffset(), + cardPanel.getCardWidth(), + cardPanel.getCardHeight()); + cardPanel.getCardArea().setComponentZOrder(cardPanel, 0); + sort(cardPanel, cardPanel.getCardArea(), false); if (!this.startedDragging) { this.startedDragging = true; @@ -336,10 +336,8 @@ public class MageActionCallback implements ActionCallback { component.setLocation(component.getLocation().x, component.getLocation().y + GO_DOWN_ON_DRAG_Y_OFFSET); } cardPanels.add((CardPanel) component); - } else { - if (!startedDragging) { - component.setLocation(component.getLocation().x, component.getLocation().y - GO_UP_ON_DRAG_Y_OFFSET); - } + } else if (!startedDragging) { + component.setLocation(component.getLocation().x, component.getLocation().y - GO_UP_ON_DRAG_Y_OFFSET); } cards.add((CardPanel) component); } @@ -430,7 +428,7 @@ public class MageActionCallback implements ActionCallback { Component popupContainer = MageFrame.getUI().getComponent(MageComponents.POPUP_CONTAINER); popupContainer.setVisible(false); } catch (Exception e2) { - logger.warn("Can't set tooltip to visible = false", e2); + LOGGER.warn("Can't set tooltip to visible = false", e2); } } @@ -462,10 +460,8 @@ public class MageActionCallback implements ActionCallback { if (notches > 0) { hideEnlargedCard(); } - } else { - if (notches < 0) { - hideEnlargedCard(); - } + } else if (notches < 0) { + hideEnlargedCard(); } return; } @@ -515,7 +511,7 @@ public class MageActionCallback implements ActionCallback { cardPreviewContainer.setVisible(false); } catch (InterruptedException e) { - logger.warn("Can't hide enlarged card", e); + LOGGER.warn("Can't hide enlarged card", e); } } } @@ -587,11 +583,11 @@ public class MageActionCallback implements ActionCallback { displayCardInfo(mageCard, image, bigCard); } else { - logger.warn("No Card preview Pane in Mage Frame defined. Card: " + cardView.getName()); + LOGGER.warn("No Card preview Pane in Mage Frame defined. Card: " + cardView.getName()); } } catch (Exception e) { - logger.warn("Problem dring display of enlarged card", e); + LOGGER.warn("Problem dring display of enlarged card", e); } } }); diff --git a/Mage.Client/src/main/java/mage/client/table/PlayersChatPanel.form b/Mage.Client/src/main/java/mage/client/table/PlayersChatPanel.form index 324258710a..5fcc58ed8d 100644 --- a/Mage.Client/src/main/java/mage/client/table/PlayersChatPanel.form +++ b/Mage.Client/src/main/java/mage/client/table/PlayersChatPanel.form @@ -72,19 +72,20 @@ - - - - + + + + + diff --git a/Mage.Client/src/main/java/mage/client/table/PlayersChatPanel.java b/Mage.Client/src/main/java/mage/client/table/PlayersChatPanel.java index 4c0fcc8a70..efbc491461 100644 --- a/Mage.Client/src/main/java/mage/client/table/PlayersChatPanel.java +++ b/Mage.Client/src/main/java/mage/client/table/PlayersChatPanel.java @@ -35,7 +35,6 @@ package mage.client.table; import java.awt.Color; import java.awt.Dimension; -import java.awt.Font; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; import java.util.ArrayList; @@ -56,7 +55,7 @@ import mage.client.chat.ChatPanelBasic; import static mage.client.chat.ChatPanelBasic.CHAT_ALPHA; import static mage.client.dialog.PreferencesDialog.KEY_USERS_COLUMNS_ORDER; import static mage.client.dialog.PreferencesDialog.KEY_USERS_COLUMNS_WIDTH; -import mage.client.util.FontSizeHelper; +import mage.client.util.GUISizeHelper; import mage.client.util.MageTableRowSorter; import mage.client.util.gui.TableUtil; import mage.client.util.gui.countryBox.CountryCellRenderer; @@ -123,16 +122,17 @@ public class PlayersChatPanel extends javax.swing.JPanel { } private void setGUISize() { - Font font = FontSizeHelper.getTableFont(); - jTablePlayers.getTableHeader().setFont(font); - jTablePlayers.getTableHeader().setPreferredSize(new Dimension((int) jTablePlayers.getTableHeader().getPreferredSize().getWidth(), FontSizeHelper.tableHeaderHeight)); - jScrollPanePlayers.getVerticalScrollBar().setPreferredSize(new Dimension(FontSizeHelper.scrollBarSize, 0)); - jScrollPanePlayers.getHorizontalScrollBar().setPreferredSize(new Dimension(0, FontSizeHelper.scrollBarSize)); - jScrollPaneSystem.getVerticalScrollBar().setPreferredSize(new Dimension(FontSizeHelper.scrollBarSize, 0)); - jScrollPaneSystem.getHorizontalScrollBar().setPreferredSize(new Dimension(0, FontSizeHelper.scrollBarSize)); + jTablePlayers.getTableHeader().setFont(GUISizeHelper.tableFont); + jTablePlayers.getTableHeader().setPreferredSize(new Dimension((int) jTablePlayers.getTableHeader().getPreferredSize().getWidth(), GUISizeHelper.tableHeaderHeight)); + jTablePlayers.setFont(GUISizeHelper.tableFont); + jTablePlayers.setRowHeight(GUISizeHelper.getTableRowHeight()); + jScrollPanePlayers.getVerticalScrollBar().setPreferredSize(new Dimension(GUISizeHelper.scrollBarSize, 0)); + jScrollPanePlayers.getHorizontalScrollBar().setPreferredSize(new Dimension(0, GUISizeHelper.scrollBarSize)); + jScrollPaneSystem.getVerticalScrollBar().setPreferredSize(new Dimension(GUISizeHelper.scrollBarSize, 0)); + jScrollPaneSystem.getHorizontalScrollBar().setPreferredSize(new Dimension(0, GUISizeHelper.scrollBarSize)); - jTabbedPaneText.setFont(FontSizeHelper.getTabFont()); - jSplitPane1.setDividerSize(FontSizeHelper.dividerBarSize); + jTabbedPaneText.setFont(GUISizeHelper.getTabFont()); + jSplitPane1.setDividerSize(GUISizeHelper.dividerBarSize); } public void setSplitDividerLocation(int location) { @@ -291,7 +291,6 @@ public class PlayersChatPanel extends javax.swing.JPanel { @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { - java.awt.GridBagConstraints gridBagConstraints; jSpinner1 = new javax.swing.JSpinner(); jSplitPane1 = new javax.swing.JSplitPane(); @@ -313,14 +312,15 @@ public class PlayersChatPanel extends javax.swing.JPanel { jTablePlayers.setToolTipText("Connected players"); jTablePlayers.setAutoscrolls(false); jTablePlayers.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); - jTablePlayers.setFocusable(false); - jTablePlayers.setGridColor(new java.awt.Color(255, 255, 255)); jTablePlayers.setOpaque(false); jTablePlayers.setRequestFocusEnabled(false); jTablePlayers.setRowSelectionAllowed(false); + jTablePlayers.setShowHorizontalLines(false); + jTablePlayers.setShowVerticalLines(false); jTablePlayers.setUpdateSelectionOnSort(false); jTablePlayers.setVerifyInputWhenFocusTarget(false); jScrollPanePlayers.setViewportView(jTablePlayers); + jTablePlayers.getAccessibleContext().setAccessibleDescription(""); jSplitPane1.setTopComponent(jScrollPanePlayers); @@ -404,7 +404,7 @@ public class PlayersChatPanel extends javax.swing.JPanel { if (col != null) { MageFrame.getInstance().getBalloonTip().setAttachedComponent(header); JLabel content = new JLabel(tips.get(table.convertColumnIndexToModel(vColIndex))); - content.setFont(FontSizeHelper.tooltipFont); + content.setFont(GUISizeHelper.tooltipFont); MageFrame.getInstance().getBalloonTip().setContents(content); ToolTipUtils.balloonToToolTip(MageFrame.getInstance().getBalloonTip(), 600, 10000); } else { diff --git a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java index cd9f1970c7..afc7fac2a6 100644 --- a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java +++ b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java @@ -36,7 +36,6 @@ package mage.client.table; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; -import java.awt.Font; import java.awt.HeadlessException; import java.awt.Point; import java.awt.Rectangle; @@ -81,7 +80,7 @@ import static mage.client.dialog.PreferencesDialog.KEY_TABLES_COLUMNS_ORDER; import static mage.client.dialog.PreferencesDialog.KEY_TABLES_COLUMNS_WIDTH; import mage.client.dialog.TableWaitingDialog; import mage.client.util.ButtonColumn; -import mage.client.util.FontSizeHelper; +import mage.client.util.GUISizeHelper; import mage.client.util.MageTableRowSorter; import mage.client.util.gui.GuiDisplayUtil; import mage.client.util.gui.TableUtil; @@ -286,15 +285,20 @@ public class TablesPanel extends javax.swing.JPanel { } private void setGUISize() { - Font font = FontSizeHelper.getTableFont(); - tableTables.getTableHeader().setFont(font); - tableTables.getTableHeader().setPreferredSize(new Dimension(FontSizeHelper.tableHeaderHeight, FontSizeHelper.tableHeaderHeight)); - tableCompleted.getTableHeader().setFont(font); - tableCompleted.getTableHeader().setPreferredSize(new Dimension(FontSizeHelper.tableHeaderHeight, FontSizeHelper.tableHeaderHeight)); - jSplitPane1.setDividerSize(FontSizeHelper.dividerBarSize); - jSplitPane2.setDividerSize(FontSizeHelper.dividerBarSize); - jScrollPane1.getVerticalScrollBar().setPreferredSize(new Dimension(FontSizeHelper.scrollBarSize, 0)); - jScrollPane1.getHorizontalScrollBar().setPreferredSize(new Dimension(0, FontSizeHelper.scrollBarSize)); + tableTables.getTableHeader().setFont(GUISizeHelper.tableFont); + tableTables.getTableHeader().setPreferredSize(new Dimension(GUISizeHelper.tableHeaderHeight, GUISizeHelper.tableHeaderHeight)); + tableTables.setFont(GUISizeHelper.tableFont); + tableTables.setRowHeight(GUISizeHelper.getTableRowHeight()); + + tableCompleted.getTableHeader().setFont(GUISizeHelper.tableFont); + tableCompleted.getTableHeader().setPreferredSize(new Dimension(GUISizeHelper.tableHeaderHeight, GUISizeHelper.tableHeaderHeight)); + tableCompleted.setFont(GUISizeHelper.tableFont); + tableCompleted.setRowHeight(GUISizeHelper.getTableRowHeight()); + + jSplitPane1.setDividerSize(GUISizeHelper.dividerBarSize); + jSplitPane2.setDividerSize(GUISizeHelper.dividerBarSize); + jScrollPane1.getVerticalScrollBar().setPreferredSize(new Dimension(GUISizeHelper.scrollBarSize, 0)); + jScrollPane1.getHorizontalScrollBar().setPreferredSize(new Dimension(0, GUISizeHelper.scrollBarSize)); } private void saveDividerLocations() { diff --git a/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java b/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java index e081defffd..d44a663693 100644 --- a/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java +++ b/Mage.Client/src/main/java/mage/client/tournament/TournamentPanel.java @@ -35,7 +35,6 @@ package mage.client.tournament; import java.awt.Component; import java.awt.Dimension; -import java.awt.Font; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.text.DateFormat; @@ -58,8 +57,8 @@ import static mage.client.dialog.PreferencesDialog.KEY_TOURNAMENT_MATCH_COLUMNS_ import static mage.client.dialog.PreferencesDialog.KEY_TOURNAMENT_PLAYER_COLUMNS_ORDER; import static mage.client.dialog.PreferencesDialog.KEY_TOURNAMENT_PLAYER_COLUMNS_WIDTH; import mage.client.util.ButtonColumn; -import mage.client.util.FontSizeHelper; import mage.client.util.Format; +import mage.client.util.GUISizeHelper; import mage.client.util.gui.TableUtil; import mage.client.util.gui.countryBox.CountryCellRenderer; import mage.remote.Session; @@ -152,17 +151,22 @@ public class TournamentPanel extends javax.swing.JPanel { } private void setGUISize() { - Font font = FontSizeHelper.getTableFont(); - tablePlayers.getTableHeader().setFont(font); - tablePlayers.getTableHeader().setPreferredSize(new Dimension(FontSizeHelper.tableHeaderHeight, FontSizeHelper.tableHeaderHeight)); - tableMatches.getTableHeader().setFont(font); - tableMatches.getTableHeader().setPreferredSize(new Dimension(FontSizeHelper.tableHeaderHeight, FontSizeHelper.tableHeaderHeight)); - jSplitPane1.setDividerSize(FontSizeHelper.dividerBarSize); - jSplitPane2.setDividerSize(FontSizeHelper.dividerBarSize); - jScrollPane1.getVerticalScrollBar().setPreferredSize(new Dimension(FontSizeHelper.scrollBarSize, 0)); - jScrollPane1.getHorizontalScrollBar().setPreferredSize(new Dimension(0, FontSizeHelper.scrollBarSize)); - jScrollPane2.getVerticalScrollBar().setPreferredSize(new Dimension(FontSizeHelper.scrollBarSize, 0)); - jScrollPane2.getHorizontalScrollBar().setPreferredSize(new Dimension(0, FontSizeHelper.scrollBarSize)); + tablePlayers.getTableHeader().setFont(GUISizeHelper.tableFont); + tablePlayers.getTableHeader().setPreferredSize(new Dimension(GUISizeHelper.tableHeaderHeight, GUISizeHelper.tableHeaderHeight)); + tablePlayers.setFont(GUISizeHelper.tableFont); + tablePlayers.setRowHeight(GUISizeHelper.getTableRowHeight()); + + tableMatches.getTableHeader().setFont(GUISizeHelper.tableFont); + tableMatches.getTableHeader().setPreferredSize(new Dimension(GUISizeHelper.tableHeaderHeight, GUISizeHelper.tableHeaderHeight)); + tableMatches.setFont(GUISizeHelper.tableFont); + tableMatches.setRowHeight(GUISizeHelper.getTableRowHeight()); + + jSplitPane1.setDividerSize(GUISizeHelper.dividerBarSize); + jSplitPane2.setDividerSize(GUISizeHelper.dividerBarSize); + jScrollPane1.getVerticalScrollBar().setPreferredSize(new Dimension(GUISizeHelper.scrollBarSize, 0)); + jScrollPane1.getHorizontalScrollBar().setPreferredSize(new Dimension(0, GUISizeHelper.scrollBarSize)); + jScrollPane2.getVerticalScrollBar().setPreferredSize(new Dimension(GUISizeHelper.scrollBarSize, 0)); + jScrollPane2.getHorizontalScrollBar().setPreferredSize(new Dimension(0, GUISizeHelper.scrollBarSize)); } private void saveDividerLocations() { diff --git a/Mage.Client/src/main/java/mage/client/util/FontSizeHelper.java b/Mage.Client/src/main/java/mage/client/util/FontSizeHelper.java deleted file mode 100644 index e427e295bd..0000000000 --- a/Mage.Client/src/main/java/mage/client/util/FontSizeHelper.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package mage.client.util; - -import java.awt.Font; -import mage.client.MageFrame; -import mage.client.dialog.PreferencesDialog; - -/** - * - * @author LevelX2 - */ -public class FontSizeHelper { - - public static String basicSymbolSize = "small"; - - public static int symbolCardSize = 15; - public static int symbolTooltipSize = 15; - public static int symbolPaySize = 15; - public static int symbolEditorSize = 15; - - public static int tableHeaderHeight = 24; - public static int tableRowHeight = 20; - - public static int dividerBarSize; - public static int scrollBarSize; - - public static Font tooltipFont = new java.awt.Font("Arial", 0, 12); - - public static Font menuFont = new java.awt.Font("Arial", 0, 12); - - public static Font gameDialogAreaFontBig = new java.awt.Font("Arial", 0, 12); - public static Font gameDialogAreaFontSmall = new java.awt.Font("Arial", 0, 12); - - public static Font getChatFont() { - int fontSize = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GUI_FONT_SIZE, 14); - return new java.awt.Font("Arial", 0, fontSize); - } - - public static Font getTableFont() { - int fontSize = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GUI_FONT_SIZE, 14); - return new java.awt.Font("Arial", 0, fontSize); - } - - public static Font getToolbarFont() { - int fontSize = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GUI_FONT_SIZE, 14); - return new java.awt.Font("Arial", 0, fontSize); - } - - public static int getTableRowHeight() { - int fontSize = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GUI_FONT_SIZE, 14); - return fontSize + 6; - } - - public static Font getTabFont() { - int fontSize = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GUI_FONT_SIZE, 14); - return new java.awt.Font("Arial", 0, fontSize); - } - - public static void changeGUISize() { - calculateGUISizes(); - MageFrame.getInstance().changeGUISize(); - } - - public static void calculateGUISizes() { - // Set basic symbol size - int fontSize = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GUI_FONT_SIZE, 14); - if (fontSize < 25) { - basicSymbolSize = "small"; - } else if (fontSize < 45) { - basicSymbolSize = "medium"; - } else { - basicSymbolSize = "large"; - } - if (fontSize > 15) { - symbolTooltipSize = fontSize - 5; - symbolEditorSize = fontSize - 5; - symbolPaySize = fontSize - 5; - symbolCardSize = 15; - dividerBarSize = 10 + (fontSize / 4); - scrollBarSize = 14 + (fontSize / 4); - } else { - symbolTooltipSize = fontSize; - symbolEditorSize = fontSize; - symbolPaySize = fontSize; - symbolCardSize = 15; - dividerBarSize = 10; - scrollBarSize = 14; - } - tooltipFont = new java.awt.Font("Arial", 0, fontSize - 2); - // used for popup menus - menuFont = new java.awt.Font("Arial", 0, fontSize); - - tableRowHeight = fontSize + 4; - tableHeaderHeight = fontSize + 10; - - } -} diff --git a/Mage.Client/src/main/java/mage/client/util/GUISizeHelper.java b/Mage.Client/src/main/java/mage/client/util/GUISizeHelper.java new file mode 100644 index 0000000000..22d8b495bd --- /dev/null +++ b/Mage.Client/src/main/java/mage/client/util/GUISizeHelper.java @@ -0,0 +1,117 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package mage.client.util; + +import java.awt.Dimension; +import java.awt.Font; +import mage.client.MageFrame; +import mage.client.dialog.PreferencesDialog; + +/** + * + * @author LevelX2 + */ +public class GUISizeHelper { + + // relate the native image card size to a value of the size scale + final static int CARD_IMAGE_WIDTH = 312; + final static int CARD_IMAGE_HEIGHT = 445; + final static int CARD_IMAG_VALUE = 42; + + public static String basicSymbolSize = "small"; + + public static int symbolCardSize = 15; + public static int symbolTooltipSize = 15; + public static int symbolPaySize = 15; + public static int symbolEditorSize = 15; + + public static int tableHeaderHeight = 24; + public static int tableRowHeight = 20; + + public static int dividerBarSize; + public static int scrollBarSize; + + public static int flagHeight; + + public static Font chatFont = new java.awt.Font("Arial", 0, 12); + public static Font tableFont = new java.awt.Font("Arial", 0, 12); + public static Font tooltipFont = new java.awt.Font("Arial", 0, 12); + public static Font menuFont = new java.awt.Font("Arial", 0, 12); + + public static Font gameDialogAreaFontBig = new java.awt.Font("Arial", 0, 12); + public static Font gameDialogAreaFontSmall = new java.awt.Font("Arial", 0, 12); + + public static Dimension handCardDimension; + + public static Font getToolbarFont() { + int fontSize = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GUI_TABLE_FONT_SIZE, 14); + return new java.awt.Font("Arial", 0, fontSize); + } + + public static int getTableRowHeight() { + int fontSize = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GUI_TABLE_FONT_SIZE, 14); + return fontSize + 6; + } + + public static Font getTabFont() { + int fontSize = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GUI_TABLE_FONT_SIZE, 14); + return new java.awt.Font("Arial", 0, fontSize); + } + + public static void changeGUISize() { + calculateGUISizes(); + MageFrame.getInstance().changeGUISize(); + } + + public static void calculateGUISizes() { + int tableFontSize = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GUI_TABLE_FONT_SIZE, 14); + tableFont = new java.awt.Font("Arial", 0, tableFontSize); + tableRowHeight = tableFontSize + 4; + tableHeaderHeight = tableFontSize + 10; + + tooltipFont = new java.awt.Font("Arial", 0, tableFontSize - 2); + // used for popup menus + menuFont = new java.awt.Font("Arial", 0, tableFontSize); + + int chatFontSize = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GUI_CHAT_FONT_SIZE, 14); + chatFont = new java.awt.Font("Arial", 0, chatFontSize); + + // Set basic symbol size + if (tableFontSize > 24) { + flagHeight = tableFontSize - 4; + } else { + flagHeight = 11; + } + if (tableFontSize < 25) { + basicSymbolSize = "small"; + } else if (tableFontSize < 45) { + basicSymbolSize = "medium"; + } else { + basicSymbolSize = "large"; + } + if (tableFontSize > 15) { + symbolTooltipSize = tableFontSize - 5; + symbolEditorSize = tableFontSize - 5; + symbolPaySize = tableFontSize - 5; + symbolCardSize = 15; + dividerBarSize = 10 + (tableFontSize / 4); + scrollBarSize = 14 + (tableFontSize / 4); + } else { + symbolTooltipSize = tableFontSize; + symbolEditorSize = tableFontSize; + symbolPaySize = tableFontSize; + symbolCardSize = 15; + dividerBarSize = 10; + scrollBarSize = 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); + } +} diff --git a/Mage.Client/src/main/java/mage/client/util/ImageHelper.java b/Mage.Client/src/main/java/mage/client/util/ImageHelper.java index 6370ddaa3f..e4d55b0df4 100644 --- a/Mage.Client/src/main/java/mage/client/util/ImageHelper.java +++ b/Mage.Client/src/main/java/mage/client/util/ImageHelper.java @@ -24,8 +24,7 @@ * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of BetaSteward_at_googlemail.com. -*/ - + */ package mage.client.util; import com.mortennobel.imagescaling.ResampleOp; @@ -37,6 +36,7 @@ import java.awt.Image; import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.Transparency; +import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.awt.image.ImageObserver; import java.awt.image.MemoryImageSource; @@ -58,6 +58,7 @@ import org.mage.card.arcane.UI; * @author BetaSteward_at_googlemail.com */ public class ImageHelper { + protected static HashMap images = new HashMap<>(); protected static HashMap backgrounds = new HashMap<>(); @@ -73,7 +74,8 @@ public class ImageHelper { * * @param ref - image name * @param height - height after scaling - * @return a scaled image that preserves the original aspect ratio, with a specified height + * @return a scaled image that preserves the original aspect ratio, with a + * specified height */ public static BufferedImage loadImage(String ref, int height) { BufferedImage image = loadImage(ref); @@ -104,7 +106,6 @@ public class ImageHelper { return background; } - public static BufferedImage scaleImage(BufferedImage image, int width, int height) { BufferedImage scaledImage = image; int w = image.getWidth(); @@ -127,7 +128,7 @@ public class ImageHelper { } public static BufferedImage scaleImage(BufferedImage image, int height) { - double ratio = height / (double)image.getHeight(); + double ratio = height / (double) image.getHeight(); int width = (int) (image.getWidth() * ratio); return scaleImage(image, width, height); } @@ -138,13 +139,12 @@ public class ImageHelper { PixelGrabber grabber = new PixelGrabber(image, 0, 0, dimensions.frameWidth, dimensions.frameHeight, buffer, 0, dimensions.frameWidth); try { grabber.grabPixels(); - } - catch(InterruptedException e) { + } catch (InterruptedException e) { e.printStackTrace(); } - for(int y = 0; y < dimensions.frameHeight; y++) { - for(int x = 0; x < dimensions.frameWidth; x++) { - rotate[((dimensions.frameWidth - x - 1) *dimensions.frameHeight)+y] = buffer[(y*dimensions.frameWidth)+x]; + for (int y = 0; y < dimensions.frameHeight; y++) { + for (int x = 0; x < dimensions.frameWidth; x++) { + rotate[((dimensions.frameWidth - x - 1) * dimensions.frameHeight) + y] = buffer[(y * dimensions.frameWidth) + x]; } } @@ -155,7 +155,7 @@ public class ImageHelper { public static BufferedImage rotate(BufferedImage image, double angle) { double sin = Math.abs(Math.sin(angle)), cos = Math.abs(Math.cos(angle)); int w = image.getWidth(), h = image.getHeight(); - int neww = (int)Math.floor(w*cos+h*sin), newh = (int)Math.floor(h*cos+w*sin); + int neww = (int) Math.floor(w * cos + h * sin), newh = (int) Math.floor(h * cos + w * sin); GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gs = ge.getDefaultScreenDevice(); @@ -163,8 +163,8 @@ public class ImageHelper { BufferedImage result = gc.createCompatibleImage(neww, newh, Transparency.TRANSLUCENT); Graphics2D g = result.createGraphics(); - g.translate((neww-w)/2, (newh-h)/2); - g.rotate(angle, w/2, h/2); + g.translate((neww - w) / 2, (newh - h) / 2); + g.rotate(angle, w / 2, h / 2); g.drawRenderedImage(image, null); g.dispose(); return result; @@ -184,6 +184,7 @@ public class ImageHelper { /** * Returns an image scaled to the size appropriate for the card picture * panel + * * @param original * @param width * @param height @@ -196,8 +197,8 @@ public class ImageHelper { } /** - * Returns an image scaled to fit width - * panel + * Returns an image scaled to fit width panel + * * @param original * @param width * @return @@ -212,8 +213,32 @@ public class ImageHelper { } } + /** + * scale image + * + * @param sbi image to scale + * @param imageType type of image + * @param dWidth width of destination image + * @param dHeight height of destination image + * @return scaled image + */ + public static BufferedImage scale(BufferedImage sbi, int imageType, int dWidth, int dHeight) { + BufferedImage dbi = null; + if (sbi != null) { + double fWidth = dWidth / sbi.getWidth(); + double fHeight = dHeight / sbi.getHeight(); + dbi = new BufferedImage(dWidth, dHeight, imageType); + Graphics2D g = dbi.createGraphics(); + AffineTransform at = AffineTransform.getScaleInstance(fWidth, fHeight); + g.drawRenderedImage(sbi, at); + g.dispose(); + } + return dbi; + } + /** * Returns an image scaled to the needed size + * * @param original * @param sizeNeed * @return @@ -226,6 +251,7 @@ public class ImageHelper { /** * Get image using relative path in resources. + * * @param path * @return */ diff --git a/Mage.Client/src/main/java/mage/client/util/gui/countryBox/CountryUtil.java b/Mage.Client/src/main/java/mage/client/util/gui/countryBox/CountryUtil.java index 17f8386def..8fb2f4c2ed 100644 --- a/Mage.Client/src/main/java/mage/client/util/gui/countryBox/CountryUtil.java +++ b/Mage.Client/src/main/java/mage/client/util/gui/countryBox/CountryUtil.java @@ -5,10 +5,13 @@ */ package mage.client.util.gui.countryBox; -import java.net.URL; +import java.awt.Image; +import java.awt.image.BufferedImage; import java.util.HashMap; import java.util.Map; import javax.swing.ImageIcon; +import mage.client.util.GUISizeHelper; +import mage.client.util.ImageHelper; import org.apache.log4j.Logger; /** @@ -17,33 +20,44 @@ import org.apache.log4j.Logger; */ public class CountryUtil { - private static final Logger logger = Logger.getLogger(CountryUtil.class); - private static final Map flagIconCache = new HashMap<>(); - private static final Map countryMap = new HashMap<>(); + private static final Logger LOGGER = Logger.getLogger(CountryUtil.class); + private static final Map FLAG_ICON_CACHE = new HashMap<>(); + private static final Map COUNTRY_MAP = new HashMap<>(); public static ImageIcon getCountryFlagIcon(String countryCode) { - ImageIcon flagIcon = flagIconCache.get(countryCode); + ImageIcon flagIcon = FLAG_ICON_CACHE.get(countryCode); if (flagIcon == null) { - URL url = CountryUtil.class.getResource("/flags/" + countryCode + (countryCode.endsWith(".png") ? "" : ".png")); - if (url != null) { - flagIcon = new javax.swing.ImageIcon(url); + // URL url = CountryUtil.class.getResource("/flags/" + countryCode + (countryCode.endsWith(".png") ? "" : ".png")); + Image flagImage = ImageHelper.getImageFromResources("/flags/" + countryCode + (countryCode.endsWith(".png") ? "" : ".png")); + if (flagImage != null) { + if (GUISizeHelper.flagHeight > 11) { + int width = Math.round(GUISizeHelper.flagHeight * flagImage.getWidth(null) / flagImage.getHeight(null)); + BufferedImage resized = ImageHelper.scale((BufferedImage) flagImage, BufferedImage.TYPE_4BYTE_ABGR, width, GUISizeHelper.flagHeight); + flagIcon = new ImageIcon(resized); + } else { + flagIcon = new ImageIcon(flagImage); + } } if (flagIcon == null || flagIcon.getImage() == null) { - logger.warn("Country flag resource not found: " + countryCode); - flagIconCache.put(countryCode, flagIcon); + LOGGER.warn("Country flag resource not found: " + countryCode); + FLAG_ICON_CACHE.put(countryCode, flagIcon); } else { - flagIconCache.put(countryCode, flagIcon); + FLAG_ICON_CACHE.put(countryCode, flagIcon); } } return flagIcon; } + public static void changeGUISize() { + FLAG_ICON_CACHE.clear(); + } + public static String getCountryName(String countryCode) { - if (countryMap.isEmpty()) { + if (COUNTRY_MAP.isEmpty()) { for (int i = 0; i <= CountryComboBox.countryList.length - 1; i++) { - countryMap.put(CountryComboBox.countryList[i][1], CountryComboBox.countryList[i][0]); + COUNTRY_MAP.put(CountryComboBox.countryList[i][1], CountryComboBox.countryList[i][0]); } } - return countryMap.get(countryCode); + return COUNTRY_MAP.get(countryCode); } } 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 5f50c70956..108a98ba8b 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 @@ -67,7 +67,7 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti private static final long serialVersionUID = -3272134219262184410L; - private static final Logger logger = Logger.getLogger(CardPanel.class); + private static final Logger LOGGER = Logger.getLogger(CardPanel.class); private static final int WIDTH_LIMIT = 90; // card width limit to create smaller counter public static final double TAPPED_ANGLE = Math.PI / 2; @@ -161,13 +161,14 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti this.gameCard = newGameCard; this.callback = callback; this.gameId = gameId; - this.setCardBounds(0, 0, dimension.width, dimension.height); - this.isPermanent = this.gameCard instanceof PermanentView; + this.isPermanent = this.gameCard instanceof PermanentView; if (isPermanent) { this.hasSickness = ((PermanentView) this.gameCard).hasSummoningSickness(); } + this.setCardBounds(0, 0, dimension.width, dimension.height); + //for container debug (don't remove) //setBorder(BorderFactory.createLineBorder(Color.green)); if (this.gameCard.canTransform()) { @@ -271,9 +272,11 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti addComponentListener(this); displayTitleAnyway = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_SHOW_CARD_NAMES, "true").equals("true"); + titleText = new GlowText(); setText(gameCard); - titleText.setFont(getFont().deriveFont(Font.BOLD, 13f)); + int fontSize = (int) dimension.getHeight() / 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); @@ -285,7 +288,7 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti } else if (CardUtil.isPlaneswalker(gameCard)) { ptText.setText(gameCard.getLoyalty()); } - ptText.setFont(getFont().deriveFont(Font.BOLD, 13f)); + ptText.setFont(getFont().deriveFont(Font.BOLD, fontSize)); ptText.setForeground(Color.white); ptText.setGlow(Color.black, TEXT_GLOW_SIZE, TEXT_GLOW_INTENSITY); add(ptText); @@ -330,9 +333,9 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti } setText(gameCard); } catch (Exception e) { - logger.fatal("Problem during image animation", e); + LOGGER.fatal("Problem during image animation", e); } catch (Error err) { - logger.error("Problem during image animation", err); + LOGGER.error("Problem during image animation", err); } } }); @@ -613,32 +616,49 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti public final void setCardBounds(int x, int y, int cardWidth, int cardHeight) { this.cardWidth = cardWidth; this.cardHeight = cardHeight; - int rotCenterX = Math.round(cardWidth / 2f); - int rotCenterY = cardHeight - rotCenterX; - int rotCenterToTopCorner = Math.round(cardWidth * CardPanel.ROT_CENTER_TO_TOP_CORNER); - int rotCenterToBottomCorner = Math.round(cardWidth * CardPanel.ROT_CENTER_TO_BOTTOM_CORNER); - int xOffset = getXOffset(cardWidth); - int yOffset = getYOffset(cardWidth, cardHeight); - cardXOffset = -xOffset; - cardYOffset = -yOffset; - int width = -xOffset + rotCenterX + rotCenterToTopCorner; - int height = -yOffset + rotCenterY + rotCenterToBottomCorner; - setBounds(x + xOffset, y + yOffset, width, height); + if (this.isPermanent) { + int rotCenterX = Math.round(cardWidth / 2f); + int rotCenterY = cardHeight - rotCenterX; + int rotCenterToTopCorner = Math.round(cardWidth * CardPanel.ROT_CENTER_TO_TOP_CORNER); + int rotCenterToBottomCorner = Math.round(cardWidth * CardPanel.ROT_CENTER_TO_BOTTOM_CORNER); + int xOffset = getXOffset(cardWidth); + int yOffset = getYOffset(cardWidth, cardHeight); + cardXOffset = -xOffset; + cardYOffset = -yOffset; + int width = -xOffset + rotCenterX + rotCenterToTopCorner; + int height = -yOffset + rotCenterY + rotCenterToBottomCorner; + setBounds(x + xOffset, y + yOffset, width, height); + } else { + cardXOffset = 5; + cardYOffset = 5; + int width = cardXOffset * 2 + cardWidth; + int height = cardYOffset * 2 + cardHeight; + setBounds(x - cardXOffset, y - cardYOffset, width, height); + } } public int getXOffset(int cardWidth) { - int rotCenterX = Math.round(cardWidth / 2f); - int rotCenterToBottomCorner = Math.round(cardWidth * CardPanel.ROT_CENTER_TO_BOTTOM_CORNER); - int xOffset = rotCenterX - rotCenterToBottomCorner; - return xOffset; + if (this.isPermanent) { + int rotCenterX = Math.round(cardWidth / 2f); + int rotCenterToBottomCorner = Math.round(cardWidth * CardPanel.ROT_CENTER_TO_BOTTOM_CORNER); + int xOffset = rotCenterX - rotCenterToBottomCorner; + return xOffset; + } else { + return cardXOffset; + } } public int getYOffset(int cardWidth, int cardHeight) { - int rotCenterX = Math.round(cardWidth / 2f); - int rotCenterY = cardHeight - rotCenterX; - int rotCenterToTopCorner = Math.round(cardWidth * CardPanel.ROT_CENTER_TO_TOP_CORNER); - int yOffset = rotCenterY - rotCenterToTopCorner; - return yOffset; + if (this.isPermanent) { + int rotCenterX = Math.round(cardWidth / 2f); + int rotCenterY = cardHeight - rotCenterX; + int rotCenterToTopCorner = Math.round(cardWidth * CardPanel.ROT_CENTER_TO_TOP_CORNER); + int yOffset = rotCenterY - rotCenterToTopCorner; + return yOffset; + } else { + return cardYOffset; + } + } public int getCardX() { @@ -728,12 +748,10 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti } else { return ImageCache.getManifestImage(); } + } else if (this.gameCard instanceof StackAbilityView) { + return ImageCache.getMorphImage(); } else { - if (this.gameCard instanceof StackAbilityView) { - return ImageCache.getMorphImage(); - } else { - return ImageCache.loadImage(new TFile(DirectLinksForDownload.outDir + File.separator + DirectLinksForDownload.cardbackFilename)); - } + return ImageCache.loadImage(new TFile(DirectLinksForDownload.outDir + File.separator + DirectLinksForDownload.cardbackFilename)); } } @@ -1145,7 +1163,7 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti dayNightButton.setIcon(new ImageIcon(night)); } if (this.gameCard.getSecondCardFace() == null) { - logger.error("no second side for card to transform!"); + LOGGER.error("no second side for card to transform!"); return; } if (!isPermanent) { // use only for custom transformation (when pressing day-night button) diff --git a/Mage.Client/src/main/java/org/mage/card/arcane/ManaSymbols.java b/Mage.Client/src/main/java/org/mage/card/arcane/ManaSymbols.java index e441a20131..2f49b43d2e 100644 --- a/Mage.Client/src/main/java/org/mage/card/arcane/ManaSymbols.java +++ b/Mage.Client/src/main/java/org/mage/card/arcane/ManaSymbols.java @@ -14,7 +14,7 @@ import java.util.regex.Pattern; import javax.imageio.ImageIO; import mage.cards.repository.ExpansionRepository; import mage.client.dialog.PreferencesDialog; -import mage.client.util.FontSizeHelper; +import mage.client.util.GUISizeHelper; import mage.client.util.ImageHelper; import mage.client.util.gui.BufferedImageBuilder; import org.apache.log4j.Logger; @@ -40,7 +40,7 @@ public class ManaSymbols { for (String symbol : symbols) { String resourcePath = Constants.RESOURCE_PATH_MANA_SMALL; - switch (FontSizeHelper.basicSymbolSize) { + switch (GUISizeHelper.basicSymbolSize) { case "medium": resourcePath = Constants.RESOURCE_PATH_MANA_SMALL; break; @@ -50,11 +50,11 @@ public class ManaSymbols { } File file = new File(getSymbolsPath() + resourcePath + "/" + symbol + ".jpg"); try { - if (FontSizeHelper.symbolPaySize != 15) { + if (GUISizeHelper.symbolPaySize != 15) { BufferedImage notResized = ImageIO.read(file); MANA_IMAGES.put(symbol, notResized); } else { - Rectangle r = new Rectangle(FontSizeHelper.symbolPaySize, FontSizeHelper.symbolPaySize); + Rectangle r = new Rectangle(GUISizeHelper.symbolPaySize, GUISizeHelper.symbolPaySize); Image image = UI.getImageIcon(file.getAbsolutePath()).getImage(); BufferedImage resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); MANA_IMAGES.put(symbol, resized); @@ -224,23 +224,23 @@ public class ManaSymbols { int symbolSize; switch (type) { case TOOLTIP: - symbolSize = FontSizeHelper.symbolTooltipSize; + symbolSize = GUISizeHelper.symbolTooltipSize; break; case CARD: - symbolSize = FontSizeHelper.symbolCardSize; + symbolSize = GUISizeHelper.symbolCardSize; break; case PAY: - symbolSize = FontSizeHelper.symbolPaySize; + symbolSize = GUISizeHelper.symbolPaySize; break; case EDITOR: - symbolSize = FontSizeHelper.symbolEditorSize; + symbolSize = GUISizeHelper.symbolEditorSize; break; default: symbolSize = 11; break; } replaced = REPLACE_SYMBOLS_PATTERN.matcher(value).replaceAll("$1$2"); } 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 8446f1a8e3..1697e27a75 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 @@ -97,9 +97,9 @@ public class CardPluginImpl implements CardPlugin { } @Override - public MagePermanent getMageCard(CardView permanent, Dimension dimension, UUID gameId, ActionCallback callback, boolean canBeFoil, boolean loadImage) { - CardPanel cardPanel = new CardPanel(permanent, gameId, loadImage, callback, false, dimension); - boolean implemented = permanent.getRarity() != null && !permanent.getRarity().equals(Rarity.NA); + public MagePermanent getMageCard(CardView cardView, Dimension dimension, UUID gameId, ActionCallback callback, boolean canBeFoil, boolean loadImage) { + CardPanel cardPanel = new CardPanel(cardView, gameId, loadImage, callback, false, dimension); + boolean implemented = cardView.getRarity() != null && !cardView.getRarity().equals(Rarity.NA); cardPanel.setShowCastingCost(implemented); return cardPanel; }