From a07db4cb8e23404a4518a5dd18050adbe0acacf7 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Tue, 9 Feb 2016 03:06:32 +0100 Subject: [PATCH] Some more changes to support GUI size for high resolutions. --- .../src/main/java/mage/client/MageFrame.form | 18 +++++- .../src/main/java/mage/client/MageFrame.java | 57 +++++++++++++++++-- .../java/mage/client/chat/ChatPanelBasic.java | 3 + .../mage/client/dialog/PreferencesDialog.form | 3 - .../mage/client/dialog/PreferencesDialog.java | 2 +- .../mage/client/table/PlayersChatPanel.java | 19 +++++++ .../java/mage/client/table/TablesPane.java | 29 ++++++---- .../java/mage/client/table/TablesPanel.java | 18 ++++++ .../java/mage/client/util/FontSizeHelper.java | 23 +++++++- 9 files changed, 148 insertions(+), 24 deletions(-) diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.form b/Mage.Client/src/main/java/mage/client/MageFrame.form index 0335411d31d..07706881ecc 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.form +++ b/Mage.Client/src/main/java/mage/client/MageFrame.form @@ -33,9 +33,9 @@ - - - + + + @@ -60,6 +60,18 @@ + + + + + + + + + + + + diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index 70e9ba435aa..aba96e91146 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -31,6 +31,8 @@ import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Component; import java.awt.Cursor; +import java.awt.Dimension; +import java.awt.Font; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Rectangle; @@ -112,6 +114,7 @@ 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.SettingsManager; import mage.client.util.SystemUtil; import mage.client.util.audio.MusicPlayer; @@ -235,6 +238,10 @@ 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"); + // Change default font and row size for JTables + Font font = FontSizeHelper.getTableFont(); + UIManager.put("Table.font", font); + UIManager.put("Table.rowHeight", FontSizeHelper.getTableRowHeight()); } catch (Exception ex) { LOGGER.fatal(null, ex); } @@ -355,6 +362,8 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { UI.addButton(MageComponents.TABLES_MENU_BUTTON, btnGames); + setGUISize(); + SwingUtilities.invokeLater(new Runnable() { @Override public void run() { @@ -836,6 +845,10 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { mageToolbar.setFloatable(false); mageToolbar.setRollover(true); + mageToolbar.setFont(new java.awt.Font("Segoe UI", 0, 48)); // NOI18N + mageToolbar.setMaximumSize(new java.awt.Dimension(614, 60)); + mageToolbar.setMinimumSize(new java.awt.Dimension(566, 60)); + mageToolbar.setPreferredSize(new java.awt.Dimension(614, 60)); btnSendFeedback.setText("Feedback"); btnSendFeedback.setFocusable(false); @@ -950,9 +963,9 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() - .addComponent(mageToolbar, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, 0) - .addComponent(desktopPane)) + .addComponent(mageToolbar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(2, 2, 2) + .addComponent(desktopPane, javax.swing.GroupLayout.DEFAULT_SIZE, 145, Short.MAX_VALUE)) ); pack(); @@ -1055,9 +1068,11 @@ 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() { @@ -1387,6 +1402,40 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { callbackClient.processCallback(callback); } + public void changeGUISize() { + tablesPane.changeGUISize(); + setGUISize(); + this.revalidate(); + this.repaint(); + } + + private void setGUISize() { + + Font font = FontSizeHelper.getToolbarFont(); + mageToolbar.setFont(font); + int newHeight = font.getSize() + 6; + Dimension mageToolbarDimension = mageToolbar.getPreferredSize(); + mageToolbarDimension.height = newHeight + 6; + mageToolbar.setMinimumSize(mageToolbarDimension); + mageToolbar.setMaximumSize(mageToolbarDimension); + mageToolbar.setPreferredSize(mageToolbarDimension); + for (Component component : mageToolbar.getComponents()) { + if (component instanceof JButton || component instanceof JLabel || component instanceof JToggleButton) { + component.setFont(font); + Dimension d = component.getPreferredSize(); + d.height = newHeight; + component.setMinimumSize(d); + component.setMaximumSize(d); + + } + if (component instanceof javax.swing.JToolBar.Separator) { + Dimension d = component.getPreferredSize(); + d.height = newHeight; + component.setMinimumSize(d); + component.setMaximumSize(d); + } + } + } } class MagePaneMenuItem extends JCheckBoxMenuItem { 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 8fe5bda2537..8794ef0d713 100644 --- a/Mage.Client/src/main/java/mage/client/chat/ChatPanelBasic.java +++ b/Mage.Client/src/main/java/mage/client/chat/ChatPanelBasic.java @@ -147,6 +147,9 @@ public class ChatPanelBasic extends javax.swing.JPanel { txtMessage.setMaximumSize(new Dimension(txtMessage.getWidth(), height)); txtMessage.setPreferredSize(new Dimension(txtMessage.getWidth(), height)); txtMessage.setSize(new Dimension(txtMessage.getWidth(), height)); + if (connectedChat != null) { + connectedChat.changeGUISize(font); + } this.revalidate(); this.repaint(); } 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 ef50eb60d34..41af4cc5dbe 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form +++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form @@ -435,9 +435,6 @@ - - - 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 f992e6a6e56..0a9b2985f0c 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java @@ -1998,7 +1998,7 @@ public class PreferencesDialog extends javax.swing.JDialog { // 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.updateGUI(); + FontSizeHelper.changeGUISize(); } // Phases & Priority 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 38bd28d71ea..6aad8109472 100644 --- a/Mage.Client/src/main/java/mage/client/table/PlayersChatPanel.java +++ b/Mage.Client/src/main/java/mage/client/table/PlayersChatPanel.java @@ -34,6 +34,8 @@ 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; @@ -53,6 +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.MageTableRowSorter; import mage.client.util.gui.TableUtil; import mage.client.util.gui.countryBox.CountryCellRenderer; @@ -85,6 +88,7 @@ public class PlayersChatPanel extends javax.swing.JPanel { jTablePlayers.setBackground(new Color(0, 0, 0, CHAT_ALPHA)); jTablePlayers.setForeground(Color.white); jTablePlayers.setRowSorter(new MageTableRowSorter(userTableModel)); + setGUISize(); TableUtil.setColumnWidthAndOrder(jTablePlayers, DEFAULT_COLUMNS_WIDTH, KEY_USERS_COLUMNS_WIDTH, KEY_USERS_COLUMNS_ORDER); userTableModel.initHeaderTooltips(); @@ -113,6 +117,21 @@ public class PlayersChatPanel extends javax.swing.JPanel { jScrollPaneTalk.cleanUp(); } + public void changeGUISize() { + setGUISize(); + } + + private void setGUISize() { + Font font = FontSizeHelper.getTableFont(); + jTablePlayers.getTableHeader().setFont(font); + int rowHeight = FontSizeHelper.getTableRowHeight(); + jTablePlayers.getTableHeader().setPreferredSize(new Dimension(rowHeight, rowHeight)); + font = FontSizeHelper.getTabFont(); + jTabbedPaneText.setFont(font); + this.revalidate(); + this.repaint(); + } + public void setSplitDividerLocation(int location) { if (jSplitPane1 != null) { jSplitPane1.setDividerLocation(location); diff --git a/Mage.Client/src/main/java/mage/client/table/TablesPane.java b/Mage.Client/src/main/java/mage/client/table/TablesPane.java index cb2e3b0c578..bd7c7feaf76 100644 --- a/Mage.Client/src/main/java/mage/client/table/TablesPane.java +++ b/Mage.Client/src/main/java/mage/client/table/TablesPane.java @@ -24,7 +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.table; import java.util.UUID; @@ -39,7 +39,9 @@ import mage.client.plugins.impl.Plugins; */ public class TablesPane extends MagePane { - /** Creates new form TablesPane */ + /** + * Creates new form TablesPane + */ public TablesPane() { boolean initialized = false; if (Plugins.getInstance().isThemePluginLoaded()) { @@ -56,11 +58,15 @@ public class TablesPane extends MagePane { initComponents(); } } - + public void cleanUp() { tablesPanel.cleanUp(); } + public void changeGUISize() { + tablesPanel.changeGUISize(); + } + public void showTables() { UUID roomId = MageFrame.getSession().getMainRoomId(); if (roomId != null) { @@ -79,10 +85,10 @@ public class TablesPane extends MagePane { tablesPanel.getChatPanel().clear(); } - /** 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 @@ -108,17 +114,16 @@ public class TablesPane extends MagePane { javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(container, javax.swing.GroupLayout.DEFAULT_SIZE, 541, Short.MAX_VALUE) + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(container, javax.swing.GroupLayout.DEFAULT_SIZE, 541, Short.MAX_VALUE) ); layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(container, javax.swing.GroupLayout.DEFAULT_SIZE, 471, Short.MAX_VALUE) + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(container, javax.swing.GroupLayout.DEFAULT_SIZE, 471, Short.MAX_VALUE) ); pack(); } - // Variables declaration - do not modify//GEN-BEGIN:variables private mage.client.table.TablesPanel tablesPanel; // End of variables declaration//GEN-END:variables 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 507a8aae612..afc641d4fa0 100644 --- a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java +++ b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java @@ -35,6 +35,8 @@ 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; @@ -79,6 +81,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.MageTableRowSorter; import mage.client.util.gui.GuiDisplayUtil; import mage.client.util.gui.TableUtil; @@ -141,6 +144,7 @@ public class TablesPanel extends javax.swing.JPanel { PreferencesDialog.KEY_TABLES_COLUMNS_WIDTH, PreferencesDialog.KEY_TABLES_COLUMNS_ORDER); tableCompleted.setRowSorter(new MageTableRowSorter(matchesModel)); + setGUISize(); chatPanelMain.getUserChatPanel().useExtendedView(ChatPanelBasic.VIEW_MODE.NONE); chatPanelMain.getUserChatPanel().setBorder(null); @@ -276,6 +280,20 @@ public class TablesPanel extends javax.swing.JPanel { chatPanelMain.cleanUp(); } + public void changeGUISize() { + chatPanelMain.changeGUISize(); + setGUISize(); + } + + private void setGUISize() { + Font font = FontSizeHelper.getTableFont(); + tableTables.getTableHeader().setFont(font); + int rowHeight = FontSizeHelper.getTableRowHeight(); + tableTables.getTableHeader().setPreferredSize(new Dimension(rowHeight, rowHeight)); + tableCompleted.getTableHeader().setFont(font); + tableCompleted.getTableHeader().setPreferredSize(new Dimension(rowHeight, rowHeight)); + } + private void saveDividerLocations() { // save panel sizes and divider locations. Rectangle rec = MageFrame.getDesktop().getBounds(); diff --git a/Mage.Client/src/main/java/mage/client/util/FontSizeHelper.java b/Mage.Client/src/main/java/mage/client/util/FontSizeHelper.java index b10e01b5752..d4fd0f35fe5 100644 --- a/Mage.Client/src/main/java/mage/client/util/FontSizeHelper.java +++ b/Mage.Client/src/main/java/mage/client/util/FontSizeHelper.java @@ -21,9 +21,30 @@ public class FontSizeHelper { return new java.awt.Font("Arial", 0, fontSize); } - public static void updateGUI() { + 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() { for (ChatPanelBasic chatPanel : MageFrame.getChatPanels().values()) { chatPanel.changeGUISize(getChatFont()); } + MageFrame.getInstance().changeGUISize(); } }