From b7e68f3e0a59fb7ba8bc6fcb3aceca5656332486 Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Tue, 2 Apr 2019 08:20:48 +0400 Subject: [PATCH] * Fixed client crush on old systems without JavaFX supports like MacOS 10.9; --- .../src/main/java/mage/client/MageFrame.java | 20 ++++++++++++++----- .../java/mage/client/dialog/AboutDialog.java | 2 +- .../mage/client/dialog/ConnectDialog.java | 2 +- .../java/mage/client/table/TablesPanel.java | 2 +- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index 23f28558d7c..f4a58e9b4eb 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -93,7 +93,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { private static MageFrame instance; private final ConnectDialog connectDialog; - private final WhatsNewDialog whatsNewDialog; + private WhatsNewDialog whatsNewDialog; // can be null private final ErrorDialog errorDialog; private static CallbackClient callbackClient; private static final Preferences PREFS = Preferences.userNodeForPackage(MageFrame.class); @@ -246,7 +246,15 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { SessionHandler.startSession(this); callbackClient = new CallbackClientImpl(this); connectDialog = new ConnectDialog(); - whatsNewDialog = new WhatsNewDialog(); + try + { + whatsNewDialog = new WhatsNewDialog(); + } catch (NoClassDefFoundError e) { + // JavaFX is not supported on old MacOS with OpenJDK + // https://bugs.openjdk.java.net/browse/JDK-8202132 + LOGGER.error("JavaFX is not supported by your system. What's new page will be disabled.", e); + whatsNewDialog = null; + } desktopPane.add(connectDialog, JLayeredPane.MODAL_LAYER); errorDialog = new ErrorDialog(); errorDialog.setLocation(100, 100); @@ -336,7 +344,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { // run what's new checks (loading in background) SwingUtilities.invokeLater(() -> { - whatsNewDialog.checkUpdatesAndShow(false); + showWhatsNewDialog(false); }); } @@ -1578,8 +1586,10 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { addTooltipContainer(); } - public WhatsNewDialog getWhatsNewDialog() { - return whatsNewDialog; + public void showWhatsNewDialog(boolean forceToShowPage) { + if (whatsNewDialog != null) { + whatsNewDialog.checkUpdatesAndShow(forceToShowPage); + } } } diff --git a/Mage.Client/src/main/java/mage/client/dialog/AboutDialog.java b/Mage.Client/src/main/java/mage/client/dialog/AboutDialog.java index d900c12b9c6..c9b8c1165c4 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/AboutDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/AboutDialog.java @@ -136,7 +136,7 @@ public class AboutDialog extends MageDialog { }//GEN-LAST:event_btnOkActionPerformed private void btnWhatsNewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnWhatsNewActionPerformed - MageFrame.getInstance().getWhatsNewDialog().checkUpdatesAndShow(true); + MageFrame.getInstance().showWhatsNewDialog(true); }//GEN-LAST:event_btnWhatsNewActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables diff --git a/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java b/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java index 73649136800..fefd157c06a 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java @@ -794,7 +794,7 @@ public class ConnectDialog extends MageDialog { }//GEN-LAST:event_btnCheckStatusActionPerformed private void btnWhatsNewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnWhatsNewActionPerformed - MageFrame.getInstance().getWhatsNewDialog().checkUpdatesAndShow(true); + MageFrame.getInstance().showWhatsNewDialog(true); }//GEN-LAST:event_btnWhatsNewActionPerformed private void doFastFlagSearch() { 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 d5303b92c90..da3d8402ca3 100644 --- a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java +++ b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java @@ -1600,7 +1600,7 @@ public class TablesPanel extends javax.swing.JPanel { }//GEN-LAST:event_btnFormatVintageActionPerformed private void buttonWhatsNewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonWhatsNewActionPerformed - MageFrame.getInstance().getWhatsNewDialog().checkUpdatesAndShow(true); + MageFrame.getInstance().showWhatsNewDialog(true); }//GEN-LAST:event_buttonWhatsNewActionPerformed private void handleError(Exception ex) {