diff --git a/src/main/java/forge/deck/DeckgenUtil.java b/src/main/java/forge/deck/DeckgenUtil.java
index 3124ee2483a..4a4a7a1e610 100644
--- a/src/main/java/forge/deck/DeckgenUtil.java
+++ b/src/main/java/forge/deck/DeckgenUtil.java
@@ -269,7 +269,7 @@ public class DeckgenUtil {
msg.append("Copy Decklist to Clipboard?");
// Output
- final int rcMsg = JOptionPane.showConfirmDialog(null, msg, "Decklist", JOptionPane.OK_CANCEL_OPTION);
+ final int rcMsg = JOptionPane.showConfirmDialog(JOptionPane.getRootFrame(), msg, "Decklist", JOptionPane.OK_CANCEL_OPTION);
if (rcMsg == JOptionPane.OK_OPTION) {
final StringSelection ss = new StringSelection(deckList.toString());
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
@@ -287,14 +287,14 @@ public class DeckgenUtil {
boolean result = true;
if (colors0.size() == 4) {
- JOptionPane.showMessageDialog(null,
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(),
"Sorry, four color generated decks aren't supported yet."
+ "\n\rPlease use 2, 3, or 5 colors for this deck.",
"Generate deck: 4 colors", JOptionPane.ERROR_MESSAGE);
result = false;
}
else if (colors0.size() > 5) {
- JOptionPane.showMessageDialog(null,
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(),
"Generate deck: maximum five colors!",
"Generate deck: too many colors", JOptionPane.ERROR_MESSAGE);
result = false;
diff --git a/src/main/java/forge/deck/io/OldDeckParser.java b/src/main/java/forge/deck/io/OldDeckParser.java
index 800676d0149..a745b2379c6 100644
--- a/src/main/java/forge/deck/io/OldDeckParser.java
+++ b/src/main/java/forge/deck/io/OldDeckParser.java
@@ -150,7 +150,7 @@ public class OldDeckParser {
this.draft.add(d);
} else {
final String msg = String.format("Draft '%s' lacked some decks.%n%nShould it be deleted?");
- mayDelete = JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(null, msg, "Draft loading error",
+ mayDelete = JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(JOptionPane.getRootFrame(), msg, "Draft loading error",
JOptionPane.YES_NO_OPTION);
}
@@ -187,7 +187,7 @@ public class OldDeckParser {
.format("Can not convert deck '%s' for some unsupported cards it contains. %n%s%n%nMay Forge delete all such decks?",
name, ex.getMessage());
allowDeleteUnsupportedConstructed = JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(
- null, msg, "Problem converting decks", JOptionPane.YES_NO_OPTION);
+ JOptionPane.getRootFrame(), msg, "Problem converting decks", JOptionPane.YES_NO_OPTION);
}
}
if (importedOk || allowDeleteUnsupportedConstructed) {
diff --git a/src/main/java/forge/error/BugReporter.java b/src/main/java/forge/error/BugReporter.java
index 64e0f2d5f49..886ee7d49d3 100644
--- a/src/main/java/forge/error/BugReporter.java
+++ b/src/main/java/forge/error/BugReporter.java
@@ -274,7 +274,7 @@ public class BugReporter {
// browse to url
Desktop.getDesktop().browse(new URI(url));
} catch (Exception ex) {
- JOptionPane.showMessageDialog(null,
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(),
"Sorry, a problem occurred while opening the forum in your default browser.",
"A problem occured", JOptionPane.ERROR_MESSAGE);
}
diff --git a/src/main/java/forge/game/limited/BoosterDraft.java b/src/main/java/forge/game/limited/BoosterDraft.java
index 1ee3183d704..7ef6d767bf5 100644
--- a/src/main/java/forge/game/limited/BoosterDraft.java
+++ b/src/main/java/forge/game/limited/BoosterDraft.java
@@ -138,11 +138,9 @@ public final class BoosterDraft implements IBoosterDraft {
final List myDrafts = this.loadCustomDrafts("res/draft/", ".draft");
if (myDrafts.isEmpty()) {
- JOptionPane
- .showMessageDialog(null, "No custom draft files found.", "", JOptionPane.INFORMATION_MESSAGE);
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "No custom draft files found.", "", JOptionPane.INFORMATION_MESSAGE);
} else {
- final CustomLimited draft = GuiChoose.one("Choose Custom Draft",
- myDrafts);
+ final CustomLimited draft = GuiChoose.one("Choose Custom Draft", myDrafts);
this.setupCustomDraft(draft);
}
break;
diff --git a/src/main/java/forge/game/limited/SealedCardPoolGenerator.java b/src/main/java/forge/game/limited/SealedCardPoolGenerator.java
index a4ef1444719..80d5482fb9c 100644
--- a/src/main/java/forge/game/limited/SealedCardPoolGenerator.java
+++ b/src/main/java/forge/game/limited/SealedCardPoolGenerator.java
@@ -152,7 +152,7 @@ public class SealedCardPoolGenerator {
// present list to user
if (customs.isEmpty()) {
- JOptionPane.showMessageDialog(null, "No custom sealed files found.", "", JOptionPane.INFORMATION_MESSAGE);
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "No custom sealed files found.", "", JOptionPane.INFORMATION_MESSAGE);
} else {
final CustomLimited draft = GuiChoose.one("Choose Custom Sealed Pool", customs);
diff --git a/src/main/java/forge/game/player/PlayerControllerHuman.java b/src/main/java/forge/game/player/PlayerControllerHuman.java
index 460e679d11f..f1fc105c1c8 100644
--- a/src/main/java/forge/game/player/PlayerControllerHuman.java
+++ b/src/main/java/forge/game/player/PlayerControllerHuman.java
@@ -146,10 +146,10 @@ public class PlayerControllerHuman extends PlayerController {
if (newMain != null) {
if (newMain.size() < deckMinSize) {
String errMsg = String.format("Too few cards in your main deck (minimum %d), please make modifications to your deck again.", deckMinSize);
- JOptionPane.showMessageDialog(null, errMsg, "Invalid deck", JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), errMsg, "Invalid deck", JOptionPane.ERROR_MESSAGE);
} else {
String errMsg = String.format("Too many cards in your sideboard (maximum %d), please make modifications to your deck again.", sbMax);
- JOptionPane.showMessageDialog(null, errMsg, "Invalid deck", JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), errMsg, "Invalid deck", JOptionPane.ERROR_MESSAGE);
}
}
// Sideboard rules have changed for M14, just need to consider min maindeck and max sideboard sizes
@@ -218,7 +218,7 @@ public class PlayerControllerHuman extends PlayerController {
String message = String.format("How much will you announce for %s?%s", announce, canChooseZero ? "" : " (X cannot be 0)");
while(true){
- String str = JOptionPane.showInputDialog(null, message, ability.getSourceCard().getName(), JOptionPane.QUESTION_MESSAGE);
+ String str = JOptionPane.showInputDialog(JOptionPane.getRootFrame(), message, ability.getSourceCard().getName(), JOptionPane.QUESTION_MESSAGE);
if (null == str) return null; // that is 'cancel'
if(StringUtils.isNumeric(str)) {
diff --git a/src/main/java/forge/gui/CardListViewer.java b/src/main/java/forge/gui/CardListViewer.java
index af3950fa3db..d457e085f68 100644
--- a/src/main/java/forge/gui/CardListViewer.java
+++ b/src/main/java/forge/gui/CardListViewer.java
@@ -138,7 +138,7 @@ public class CardListViewer {
}
this.jList.setSelectedIndex(0);
- this.dialog = this.optionPane.createDialog(this.optionPane.getParent(), this.title);
+ this.dialog = this.optionPane.createDialog(JOptionPane.getRootFrame(), this.title);
this.dialog.setSize(720, 360);
this.dialog.addWindowFocusListener(new CardListFocuser());
this.dialog.setLocationRelativeTo(null);
diff --git a/src/main/java/forge/gui/GuiDialog.java b/src/main/java/forge/gui/GuiDialog.java
index 1cbb641df26..c010dad0c32 100644
--- a/src/main/java/forge/gui/GuiDialog.java
+++ b/src/main/java/forge/gui/GuiDialog.java
@@ -39,7 +39,7 @@ public class GuiDialog {
final String title = c == null ? "Question" : c.getName() + " - Ability";
String questionToUse = StringUtils.isBlank(question) ? "Activate card's ability?" : question;
String[] opts = options == null ? defaultConfirmOptions : options;
- int answer = JOptionPane.showOptionDialog(null, questionToUse, title,
+ int answer = JOptionPane.showOptionDialog(JOptionPane.getRootFrame(), questionToUse, title,
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null,
opts, opts[defaultIsYes ? 0 : 1]);
return answer == JOptionPane.YES_OPTION;
@@ -72,7 +72,7 @@ public class GuiDialog {
FThreads.invokeInEdtAndWait(new Runnable() {
@Override
public void run() {
- JOptionPane.showMessageDialog(null, message, title, JOptionPane.PLAIN_MESSAGE);
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), message, title, JOptionPane.PLAIN_MESSAGE);
}
});
}
diff --git a/src/main/java/forge/gui/GuiDisplayUtil.java b/src/main/java/forge/gui/GuiDisplayUtil.java
index ab38b4444c5..913b9acc21a 100644
--- a/src/main/java/forge/gui/GuiDisplayUtil.java
+++ b/src/main/java/forge/gui/GuiDisplayUtil.java
@@ -129,9 +129,9 @@ public final class GuiDisplayUtil {
in.close();
} catch (final FileNotFoundException fnfe) {
- JOptionPane.showMessageDialog(null, "File not found: " + fc.getSelectedFile().getAbsolutePath());
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "File not found: " + fc.getSelectedFile().getAbsolutePath());
} catch (final Exception e) {
- JOptionPane.showMessageDialog(null, "Error loading battle setup file!");
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "Error loading battle setup file!");
return;
}
diff --git a/src/main/java/forge/gui/ListChooser.java b/src/main/java/forge/gui/ListChooser.java
index 84527feb662..1d976ee3f7c 100644
--- a/src/main/java/forge/gui/ListChooser.java
+++ b/src/main/java/forge/gui/ListChooser.java
@@ -145,7 +145,7 @@ public class ListChooser {
}
Integer value;
do {
- this.dialog = this.optionPane.createDialog(this.optionPane.getParent(), this.title);
+ this.dialog = this.optionPane.createDialog(JOptionPane.getRootFrame(), this.title);
if (this.minChoices != 0) {
this.dialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
}
diff --git a/src/main/java/forge/gui/deckeditor/SEditorIO.java b/src/main/java/forge/gui/deckeditor/SEditorIO.java
index e13933eb63a..8aed070289d 100644
--- a/src/main/java/forge/gui/deckeditor/SEditorIO.java
+++ b/src/main/java/forge/gui/deckeditor/SEditorIO.java
@@ -41,7 +41,7 @@ public class SEditorIO {
// Warn if no name
if (name == null || name.isEmpty()) {
- JOptionPane.showMessageDialog(null,
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(),
"Please name your deck using the 'Title' box.",
"Save Error!",
JOptionPane.ERROR_MESSAGE);
@@ -84,7 +84,7 @@ public class SEditorIO {
public static boolean confirmSaveChanges() {
if (!((DeckController) CDeckEditorUI
.SINGLETON_INSTANCE.getCurrentEditorController().getDeckController()).isSaved()) {
- final int choice = JOptionPane.showConfirmDialog(null,
+ final int choice = JOptionPane.showConfirmDialog(JOptionPane.getRootFrame(),
"Save changes to current deck?",
"Save Changes?",
JOptionPane.YES_NO_CANCEL_OPTION,
diff --git a/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java b/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java
index 5b89e430461..2a2b3196a3c 100644
--- a/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java
+++ b/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java
@@ -188,7 +188,7 @@ public class CEditorDraftingProcess extends ACEditorBase {
*
*/
private void saveDraft() {
- String s = JOptionPane.showInputDialog(null,
+ String s = JOptionPane.showInputDialog(JOptionPane.getRootFrame(),
"Save this draft as:",
"Save draft",
JOptionPane.QUESTION_MESSAGE);
diff --git a/src/main/java/forge/gui/deckeditor/controllers/CEditorQuestCardShop.java b/src/main/java/forge/gui/deckeditor/controllers/CEditorQuestCardShop.java
index 04357136d85..241bf0121fe 100644
--- a/src/main/java/forge/gui/deckeditor/controllers/CEditorQuestCardShop.java
+++ b/src/main/java/forge/gui/deckeditor/controllers/CEditorQuestCardShop.java
@@ -357,7 +357,7 @@ public final class CEditorQuestCardShop extends ACEditorBase this.questData.getAssets().getCredits()) {
- JOptionPane.showMessageDialog(null, "Not enough credits!");
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "Not enough credits!");
return;
}
@@ -394,7 +394,7 @@ public final class CEditorQuestCardShop extends ACEditorBase sealedDecks = Singletons.getModel().getDecks().getSealed();
if (sealedDecks.contains(sDeckName)) {
- final int deleteDeck = JOptionPane.showConfirmDialog(null, "\"" + sDeckName
+ final int deleteDeck = JOptionPane.showConfirmDialog(JOptionPane.getRootFrame(), "\"" + sDeckName
+ "\" already exists! Do you want to replace it?",
"Sealed Deck Game Exists", JOptionPane.YES_NO_OPTION);
diff --git a/src/main/java/forge/gui/home/settings/CSubmenuPreferences.java b/src/main/java/forge/gui/home/settings/CSubmenuPreferences.java
index 3d89bc9fd0c..1f3836d87cb 100644
--- a/src/main/java/forge/gui/home/settings/CSubmenuPreferences.java
+++ b/src/main/java/forge/gui/home/settings/CSubmenuPreferences.java
@@ -163,7 +163,7 @@ public enum CSubmenuPreferences implements ICDoc {
String userPrompt =
"This will reset all preferences to their defaults and restart Forge.\n\n" +
"Reset and restart Forge?";
- int reply = JOptionPane.showConfirmDialog(null, userPrompt, "Reset Settings", JOptionPane.YES_NO_OPTION);
+ int reply = JOptionPane.showConfirmDialog(JOptionPane.getRootFrame(), userPrompt, "Reset Settings", JOptionPane.YES_NO_OPTION);
if (reply == JOptionPane.YES_OPTION) {
ForgePreferences prefs = Singletons.getModel().getPreferences();
prefs.reset();
@@ -178,10 +178,10 @@ public enum CSubmenuPreferences implements ICDoc {
"This will reset the Deck Editor screen layout.\n" +
"All tabbed views will be restored to their default positions.\n\n" +
"Reset layout?";
- int reply = JOptionPane.showConfirmDialog(null, userPrompt, "Reset Deck Editor Layout", JOptionPane.YES_NO_OPTION);
+ int reply = JOptionPane.showConfirmDialog(JOptionPane.getRootFrame(), userPrompt, "Reset Deck Editor Layout", JOptionPane.YES_NO_OPTION);
if (reply == JOptionPane.YES_OPTION) {
deleteScreenLayoutFile(Screens.DECK_EDITOR_CONSTRUCTED);
- JOptionPane.showMessageDialog(null, "Deck Editor layout has been reset.");
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "Deck Editor layout has been reset.");
}
}
@@ -191,10 +191,10 @@ public enum CSubmenuPreferences implements ICDoc {
"If you want to save the current layout first, please use " +
"the Dock tab -> Save Layout option in the Match screen.\n\n" +
"Reset layout?";
- int reply = JOptionPane.showConfirmDialog(null, userPrompt, "Reset Match Screen Layout", JOptionPane.YES_NO_OPTION);
+ int reply = JOptionPane.showConfirmDialog(JOptionPane.getRootFrame(), userPrompt, "Reset Match Screen Layout", JOptionPane.YES_NO_OPTION);
if (reply == JOptionPane.YES_OPTION) {
deleteScreenLayoutFile(Screens.MATCH_SCREEN);
- JOptionPane.showMessageDialog(null, "Match Screen layout has been reset.");
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "Match Screen layout has been reset.");
}
}
diff --git a/src/main/java/forge/gui/home/settings/GamePlayerUtil.java b/src/main/java/forge/gui/home/settings/GamePlayerUtil.java
index f4361bfd1b5..ae5cc027489 100644
--- a/src/main/java/forge/gui/home/settings/GamePlayerUtil.java
+++ b/src/main/java/forge/gui/home/settings/GamePlayerUtil.java
@@ -20,7 +20,7 @@ public final class GamePlayerUtil {
if (StringUtils.isBlank(playerName)) {
newName = (String)JOptionPane.showInputDialog(
- Singletons.getView().getFrame(),
+ JOptionPane.getRootFrame(),
"By default, Forge will refer to you as the \"Human\" during gameplay.\n" +
"If you would prefer a different name please enter it now.\n",
"Personalize Forge Gameplay",
@@ -43,7 +43,7 @@ public final class GamePlayerUtil {
if (StringUtils.isBlank(playerName) && newName != "Human") {
JOptionPane.showMessageDialog(
- Singletons.getView().getFrame(),
+ JOptionPane.getRootFrame(),
"Thank you, " + newName + ". " +
"You will not be prompted again but you can change\nyour name at any time using the \"Player Name\" setting in Preferences.\n\n");
}
@@ -53,7 +53,7 @@ public final class GamePlayerUtil {
private static String getNewPlayerNameFromInputDialog(String playerName) {
String newName =
(String)JOptionPane.showInputDialog(
- Singletons.getView().getFrame(),
+ JOptionPane.getRootFrame(),
"Please enter a new name (alpha-numeric only)\n",
"Personalize Forge Gameplay",
JOptionPane.PLAIN_MESSAGE,
diff --git a/src/main/java/forge/gui/home/variant/CSubmenuCommander.java b/src/main/java/forge/gui/home/variant/CSubmenuCommander.java
index fcf5bf02c8a..c3b211378d6 100644
--- a/src/main/java/forge/gui/home/variant/CSubmenuCommander.java
+++ b/src/main/java/forge/gui/home/variant/CSubmenuCommander.java
@@ -130,7 +130,7 @@ public enum CSubmenuCommander implements ICDoc {
if (null != errorMessage) {
if(!problemDecks.contains(d))
{
- JOptionPane.showMessageDialog(null, "The deck " + d.getName() + " " + errorMessage + " Please edit or choose a different deck.", "Invalid deck", JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "The deck " + d.getName() + " " + errorMessage + " Please edit or choose a different deck.", "Invalid deck", JOptionPane.ERROR_MESSAGE);
problemDecks.add(d);
}
}
diff --git a/src/main/java/forge/gui/match/controllers/CDock.java b/src/main/java/forge/gui/match/controllers/CDock.java
index d2afb6950de..a6eb1b7c1f0 100644
--- a/src/main/java/forge/gui/match/controllers/CDock.java
+++ b/src/main/java/forge/gui/match/controllers/CDock.java
@@ -267,7 +267,7 @@ public enum CDock implements ICDoc {
msg.append("Copy Decklist to Clipboard?");
- int rcMsg = JOptionPane.showConfirmDialog(null, msg, ttl, JOptionPane.OK_CANCEL_OPTION);
+ int rcMsg = JOptionPane.showConfirmDialog(JOptionPane.getRootFrame(), msg, ttl, JOptionPane.OK_CANCEL_OPTION);
if (rcMsg == JOptionPane.OK_OPTION) {
final StringSelection ss = new StringSelection(deckList.toString());
diff --git a/src/main/java/forge/gui/menus/HelpMenu.java b/src/main/java/forge/gui/menus/HelpMenu.java
index 4cec6e2dd51..bad4d6bb74d 100644
--- a/src/main/java/forge/gui/menus/HelpMenu.java
+++ b/src/main/java/forge/gui/menus/HelpMenu.java
@@ -12,7 +12,6 @@ import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.KeyStroke;
-import forge.Singletons;
import forge.model.BuildInfo;
import forge.util.FileUtil;
@@ -44,7 +43,7 @@ public final class HelpMenu {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(
- Singletons.getView().getFrame(),
+ JOptionPane.getRootFrame(),
"Version : " + BuildInfo.getVersionString(),
"About Forge",
JOptionPane.INFORMATION_MESSAGE);
diff --git a/src/main/java/forge/gui/menus/MenuUtil.java b/src/main/java/forge/gui/menus/MenuUtil.java
index d0d775efe61..c9586560a5c 100644
--- a/src/main/java/forge/gui/menus/MenuUtil.java
+++ b/src/main/java/forge/gui/menus/MenuUtil.java
@@ -37,7 +37,7 @@ public final class MenuUtil {
public static boolean getUserConfirmation(String prompt, String dialogTitle) {
Object[] options = {"Yes", "No"};
int reply = JOptionPane.showOptionDialog(
- null,
+ JOptionPane.getRootFrame(),
prompt,
dialogTitle,
JOptionPane.YES_NO_OPTION,
diff --git a/src/main/java/forge/gui/toolbox/FHyperlink.java b/src/main/java/forge/gui/toolbox/FHyperlink.java
index 50e483c4b27..eb0cefbe899 100644
--- a/src/main/java/forge/gui/toolbox/FHyperlink.java
+++ b/src/main/java/forge/gui/toolbox/FHyperlink.java
@@ -58,7 +58,7 @@ public class FHyperlink extends FLabel {
try {
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
} catch (IllegalStateException ex) {
- JOptionPane.showMessageDialog(null,
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(),
"Sorry, a problem occurred while copying this link to your system clipboard.",
"A problem occured", JOptionPane.ERROR_MESSAGE);
}
diff --git a/src/main/java/forge/gui/toolbox/special/DeckLister.java b/src/main/java/forge/gui/toolbox/special/DeckLister.java
index 148c41335d7..3267e9846c3 100644
--- a/src/main/java/forge/gui/toolbox/special/DeckLister.java
+++ b/src/main/java/forge/gui/toolbox/special/DeckLister.java
@@ -468,7 +468,7 @@ public class DeckLister extends JPanel implements ILocalRepaint {
private void deleteDeck(final RowPanel r0) {
final Deck d0 = r0.getDeck();
- final int n = JOptionPane.showConfirmDialog(null, "Are you sure you want to delete \"" + d0.getName() + "\" ?",
+ final int n = JOptionPane.showConfirmDialog(JOptionPane.getRootFrame(), "Are you sure you want to delete \"" + d0.getName() + "\" ?",
"Delete Deck", JOptionPane.YES_NO_OPTION);
if (n == JOptionPane.NO_OPTION) {
diff --git a/src/main/java/forge/quest/QuestUtilUnlockSets.java b/src/main/java/forge/quest/QuestUtilUnlockSets.java
index cee0f2db5bd..19204b7876b 100644
--- a/src/main/java/forge/quest/QuestUtilUnlockSets.java
+++ b/src/main/java/forge/quest/QuestUtilUnlockSets.java
@@ -94,7 +94,7 @@ public class QuestUtilUnlockSets {
CardEdition choosenEdition = toBuy.left;
if (qData.getAssets().getCredits() < price) {
- JOptionPane.showMessageDialog(null, "Unfortunately, you cannot afford that set yet.\n"
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), "Unfortunately, you cannot afford that set yet.\n"
+ "To unlock " + choosenEdition.getName() + ", you need " + price + " credits.\n"
+ "You have only " + qData.getAssets().getCredits() + " credits.",
"Failed to unlock " + choosenEdition.getName(),
@@ -102,7 +102,7 @@ public class QuestUtilUnlockSets {
return null;
}
- final int unlockConfirm = JOptionPane.showConfirmDialog(null,
+ final int unlockConfirm = JOptionPane.showConfirmDialog(JOptionPane.getRootFrame(),
"Unlocking " + choosenEdition.getName() + " will cost you " + price + " credits.\n"
+ "You have " + qData.getAssets().getCredits() + " credits.\n\n"
+ "Are you sure you want to unlock " + choosenEdition.getName() + "?",
diff --git a/src/main/java/forge/util/storage/StorageReaderFile.java b/src/main/java/forge/util/storage/StorageReaderFile.java
index 2fd938a6166..422bee0e823 100644
--- a/src/main/java/forge/util/storage/StorageReaderFile.java
+++ b/src/main/java/forge/util/storage/StorageReaderFile.java
@@ -78,7 +78,7 @@ public abstract class StorageReaderFile extends StorageReaderBase {
if (null == item) {
final String msg = "An object stored in " + this.file.getPath()
+ " failed to load.\nPlease submit this as a bug with the mentioned file attached.";
- JOptionPane.showMessageDialog(null, msg);
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), msg);
continue;
}
diff --git a/src/main/java/forge/util/storage/StorageReaderFileSections.java b/src/main/java/forge/util/storage/StorageReaderFileSections.java
index 08881df2169..57974777fe1 100644
--- a/src/main/java/forge/util/storage/StorageReaderFileSections.java
+++ b/src/main/java/forge/util/storage/StorageReaderFileSections.java
@@ -104,7 +104,7 @@ public abstract class StorageReaderFileSections extends StorageReaderBase
if (null != item) return item;
final String msg = "An object stored in " + this.file.getPath() + " failed to load.\nPlease submit this as a bug with the mentioned file attached.";
- JOptionPane.showMessageDialog(null, msg);
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), msg);
return null;
}
diff --git a/src/main/java/forge/util/storage/StorageReaderFolder.java b/src/main/java/forge/util/storage/StorageReaderFolder.java
index 1c2d98db9d5..b4ac29cbfa6 100644
--- a/src/main/java/forge/util/storage/StorageReaderFolder.java
+++ b/src/main/java/forge/util/storage/StorageReaderFolder.java
@@ -100,7 +100,7 @@ public abstract class StorageReaderFolder extends StorageReaderBase {
final String msg = "An object stored in "
+ file.getPath()
+ " failed to load.\nPlease submit this as a bug with the mentioned file/directory attached.";
- JOptionPane.showMessageDialog(null, msg);
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(), msg);
continue;
}
String newKey = keySelector.apply(newDeck);
@@ -110,10 +110,8 @@ public abstract class StorageReaderFolder extends StorageReaderBase {
result.put(newKey, newDeck);
} catch (final OldDeckFileFormatException ex) {
if (!hasWarnedOfOldFormat) {
- JOptionPane
- .showMessageDialog(
- null,
- "Found a deck in old fileformat in the storage.\nMoving this file and all similiar ones to parent folder.\n\nForge will try to convert them in a second.");
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(),
+ "Found a deck in old fileformat in the storage.\nMoving this file and all similiar ones to parent folder.\n\nForge will try to convert them in a second.");
hasWarnedOfOldFormat = true;
}
file.renameTo(new File(this.directory.getParentFile(), file.getName()));
@@ -125,7 +123,7 @@ public abstract class StorageReaderFolder extends StorageReaderBase {
}
if (!decksThatFailedToLoad.isEmpty()) {
- JOptionPane.showMessageDialog(null,
+ JOptionPane.showMessageDialog(JOptionPane.getRootFrame(),
StringUtils.join(decksThatFailedToLoad, System.getProperty("line.separator")),
"Some of your objects were not loaded.", JOptionPane.WARNING_MESSAGE);
}
diff --git a/src/main/java/forge/view/FView.java b/src/main/java/forge/view/FView.java
index 24096d65cc8..b009a1a183f 100644
--- a/src/main/java/forge/view/FView.java
+++ b/src/main/java/forge/view/FView.java
@@ -17,6 +17,7 @@ import java.util.List;
import java.util.Set;
import javax.swing.JLayeredPane;
+import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
@@ -94,6 +95,7 @@ public enum FView {
private FView() {
frmSplash = new SplashFrame();
frmDocument.setTitle("Forge: " + BuildInfo.getVersionString());
+ JOptionPane.setRootFrame(frmDocument);
}
/** */