diff --git a/Mage.Client/src/main/java/mage/client/dialog/ErrorDialog.java b/Mage.Client/src/main/java/mage/client/dialog/ErrorDialog.java index 9a9a4c7107c..e036b55effd 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/ErrorDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/ErrorDialog.java @@ -46,11 +46,11 @@ public class ErrorDialog extends MageDialog { public void changeGUISize() { super.changeGUISize(); - this.textError.setFont(GUISizeHelper.menuFont); - this.textInfo.setFont(GUISizeHelper.menuFont); - this.btnCopyToClipboard.setFont(GUISizeHelper.menuFont); - this.btnOpenGithub.setFont(GUISizeHelper.menuFont); - this.btnOK.setFont(GUISizeHelper.menuFont); + this.textError.setFont(GUISizeHelper.gameDialogAreaFont); + this.textInfo.setFont(GUISizeHelper.gameDialogAreaFont); + this.btnCopyToClipboard.setFont(GUISizeHelper.gameDialogAreaFont); + this.btnOpenGithub.setFont(GUISizeHelper.gameDialogAreaFont); + this.btnOK.setFont(GUISizeHelper.gameDialogAreaFont); } private void openGithub() { diff --git a/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java b/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java index 7d93668d03f..583b37813eb 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/PickChoiceDialog.java @@ -14,10 +14,12 @@ import mage.client.MageFrame; import mage.client.cards.BigCard; import mage.client.cards.VirtualCardInfo; import mage.client.components.MageEditorPane; +import mage.client.util.GUISizeHelper; import mage.client.util.gui.MageDialogState; import mage.game.command.Dungeon; import mage.view.CardView; import mage.view.DungeonView; +import org.mage.card.arcane.ManaSymbols; /** * GUI: choosing one of the list's item. Uses in game's and non game's GUI like fast search @@ -39,6 +41,25 @@ public class PickChoiceDialog extends MageDialog { final private static String HTML_HEADERS_TEMPLATE = "
%s
"; + public PickChoiceDialog() { + initComponents(); + + this.textMessage.enableHyperlinksAndCardPopups(); + this.textMessage.enableTextLabelMode(); + this.textSubMessage.enableHyperlinksAndCardPopups(); + this.textSubMessage.enableTextLabelMode(); + + // pick choice shared in multiple dialogs, so modify window size only one time + // TODO: implement global window size settings and runtime theme support by gui scale logic (interface like MageThemeSupported:onSizeChanged,onThemeChanged,etc) + float guiScale = GUISizeHelper.gameDialogAreaFont.getSize2D() / GUISizeHelper.gameDialogAreaDefaultFontSize; + int newWidth = GUISizeHelper.guiSizeScale(this.getSize().width, guiScale); + int newHeight = GUISizeHelper.guiSizeScale(this.getSize().height, guiScale); + this.setSize(newWidth, newHeight); + + this.listChoices.setModel(dataModel); + this.setModal(true); + } + public void showDialog(Choice choice, String startSelectionValue) { showDialog(choice, startSelectionValue, null, null, null); } @@ -48,8 +69,10 @@ public class PickChoiceDialog extends MageDialog { this.bigCard = bigCard; this.gameId = objectId; - setMessageText(this.textMessage, choice.getMessage(), false); - setMessageText(this.textSubMessage, choice.getSubMessage(), true); + changeGUISize(); + + setMessageText(this.textMessage, choice.getMessage()); + setMessageText(this.textSubMessage, choice.getSubMessage()); btCancel.setEnabled(!choice.isRequired()); @@ -92,7 +115,7 @@ public class PickChoiceDialog extends MageDialog { this.editSearch.setText(""); } - // listeners for inremental filtering + // listeners for incremental filtering editSearch.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { @@ -226,6 +249,20 @@ public class PickChoiceDialog extends MageDialog { this.setVisible(true); } + @Override + public void changeGUISize() { + super.changeGUISize(); + + this.textMessage.setFont(GUISizeHelper.gameDialogAreaFont); + this.textSubMessage.setFont(GUISizeHelper.gameDialogAreaFont); + this.labelSearch.setFont(GUISizeHelper.gameDialogAreaFont); + this.editSearch.setFont(GUISizeHelper.gameDialogAreaFont); + this.cbSpecial.setFont(GUISizeHelper.gameDialogAreaFont); + this.listChoices.setFont(GUISizeHelper.tableFont); + this.btOK.setFont(GUISizeHelper.gameDialogAreaFont); + this.btCancel.setFont(GUISizeHelper.gameDialogAreaFont); + } + private void choiceHintShow(int modelIndex) { switch (choice.getHintType()) { @@ -258,10 +295,13 @@ public class PickChoiceDialog extends MageDialog { case TEXT: { // as popup text if (lastModelIndex != modelIndex) { - // new hint + // new hint with GUI size and mana symbols support listChoices.setToolTipText(null); KeyValueItem item = (KeyValueItem) listChoices.getModel().getElementAt(modelIndex); - listChoices.setToolTipText(item.getValue()); + String hint = item.getValue(); + hint = ManaSymbols.replaceSymbolsWithHTML(hint, ManaSymbols.Type.DIALOG); + hint = GUISizeHelper.textToHtmlWithSize(hint, listChoices.getFont()); + listChoices.setToolTipText(hint); } lastModelIndex = modelIndex; break; @@ -315,11 +355,11 @@ public class PickChoiceDialog extends MageDialog { } } - private void setMessageText(MageEditorPane editor, String text, boolean useBoldFont) { + private void setMessageText(MageEditorPane editor, String text) { editor.setGameData(this.gameId, this.bigCard); if ((text != null) && !text.equals("")) { - String realText = useBoldFont ? "" + text + "" : text; + String realText = ManaSymbols.replaceSymbolsWithHTML(text, ManaSymbols.Type.DIALOG); editor.setText(String.format(HTML_HEADERS_TEMPLATE, realText)); editor.setVisible(true); } else { @@ -357,21 +397,6 @@ public class PickChoiceDialog extends MageDialog { hideDialog(); } - /** - * Creates new form PickChoiceDialog - */ - public PickChoiceDialog() { - initComponents(); - - this.textMessage.enableHyperlinksAndCardPopups(); - this.textMessage.enableTextLabelMode(); - this.textSubMessage.enableHyperlinksAndCardPopups(); - this.textSubMessage.enableTextLabelMode(); - - this.listChoices.setModel(dataModel); - this.setModal(true); - } - public boolean setChoice() { KeyValueItem item = (KeyValueItem) this.listChoices.getSelectedValue(); boolean isSpecial = choice.isSpecialEnabled() && cbSpecial.isSelected(); diff --git a/Mage.Client/src/main/java/mage/client/util/GUISizeHelper.java b/Mage.Client/src/main/java/mage/client/util/GUISizeHelper.java index 0b7f60b59ae..ed66ee0f16f 100644 --- a/Mage.Client/src/main/java/mage/client/util/GUISizeHelper.java +++ b/Mage.Client/src/main/java/mage/client/util/GUISizeHelper.java @@ -7,6 +7,7 @@ import org.mage.card.arcane.CardRenderer; import javax.swing.*; import java.awt.*; +import java.util.Locale; /** * Helper class for GUI @@ -54,6 +55,7 @@ public final class GUISizeHelper { public static int gameDialogAreaButtonHigh = 16; public static Font gameDialogAreaFont = new java.awt.Font("Arial", 0, 12); + public static float gameDialogAreaDefaultFontSize = gameDialogAreaFont.getSize2D(); public static int gameDialogButtonHeight; public static int gameDialogButtonWidth; @@ -225,4 +227,11 @@ public final class GUISizeHelper { public static float guiSizeScale(float value, float scaleMod) { return value * scaleMod; } + + public static String textToHtmlWithSize(String text, Font font) { + if (text != null && !text.toLowerCase(Locale.ENGLISH).startsWith("")) { + return "

" + text + "

"; + } + return text; + } }