diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuDownloaders.java b/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuDownloaders.java index 53a0814f8c3..b3fd57d9a7f 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuDownloaders.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuDownloaders.java @@ -23,6 +23,13 @@ public enum CSubmenuDownloaders implements ICDoc { VSubmenuDownloaders.SINGLETON_INSTANCE.showLicensing(); } }; + private final UiCommand cmdCheckForUpdates = new UiCommand() { + @Override + public void run() { + new AutoUpdater(false).attemptToUpdate(); + } + }; + private final UiCommand cmdPicDownload = new UiCommand() { @Override public void run() { new GuiDownloader(new GuiDownloadPicturesLQ()).show(); @@ -84,6 +91,7 @@ public enum CSubmenuDownloaders implements ICDoc { @Override public void initialize() { final VSubmenuDownloaders view = VSubmenuDownloaders.SINGLETON_INSTANCE; + view.setCheckForUpdatesCommand(cmdCheckForUpdates); view.setDownloadPicsCommand(cmdPicDownload); view.setDownloadPicsHQCommand(cmdPicDownloadHQ); view.setDownloadSetPicsCommand(cmdSetDownload); diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuDownloaders.java b/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuDownloaders.java index 6e1354a6727..2f48c1841ef 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuDownloaders.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuDownloaders.java @@ -55,6 +55,7 @@ public enum VSubmenuDownloaders implements IVSubmenu { private final JPanel pnlContent = new JPanel(new MigLayout("insets 0, gap 0, wrap, ay center")); private final FScrollPane scrContent = new FScrollPane(pnlContent, false); + private final FLabel btnCheckForUpdates = _makeButton(localizer.getMessage("btnCheckForUpdates")); private final FLabel btnDownloadSetPics = _makeButton(localizer.getMessage("btnDownloadSetPics")); private final FLabel btnDownloadPics = _makeButton(localizer.getMessage("btnDownloadPics")); private final FLabel btnDownloadPicsHQ = _makeButton(localizer.getMessage("btnDownloadPicsHQ")); @@ -80,6 +81,9 @@ public enum VSubmenuDownloaders implements IVSubmenu { if (javaRecentEnough()) { + pnlContent.add(btnCheckForUpdates, constraintsBTN); + pnlContent.add(_makeLabel(localizer.getMessage("lblCheckForUpdates")), constraintsLBL); + pnlContent.add(btnDownloadPics, constraintsBTN); pnlContent.add(_makeLabel(localizer.getMessage("lblDownloadPics")), constraintsLBL); @@ -162,6 +166,7 @@ public enum VSubmenuDownloaders implements IVSubmenu { return EMenuGroup.SETTINGS; } + public void setCheckForUpdatesCommand(UiCommand command) { btnCheckForUpdates.setCommand(command); } public void setDownloadPicsCommand(UiCommand command) { btnDownloadPics.setCommand(command); } public void setDownloadPicsHQCommand(UiCommand command) { btnDownloadPicsHQ.setCommand(command); } public void setDownloadSetPicsCommand(UiCommand command) { btnDownloadSetPics.setCommand(command); } diff --git a/forge-gui/res/languages/en-US.properties b/forge-gui/res/languages/en-US.properties index ed0008ee476..01d1b9fcd5a 100644 --- a/forge-gui/res/languages/en-US.properties +++ b/forge-gui/res/languages/en-US.properties @@ -182,6 +182,7 @@ KeyboardShortcuts=Keyboard Shortcuts #VSubmenuAchievements.java lblAchievements=Achievements #VSubmenuDownloaders.java +btnCheckForUpdates=Check for Updates btnDownloadSetPics=Download LQ Set Pictures btnDownloadPicsHQ=Download HQ Card Pictures (Very Slow!) btnDownloadPics=Download LQ Card Pictures @@ -194,6 +195,7 @@ btnImportPictures=Import Data btnHowToPlay=How To Play btnDownloadPrices=Download Card Prices btnLicensing=License Details +lblCheckForUpdates=Check Forge server to see if there's a more recent release lblDownloadPics=Download default card picture for each card. lblDownloadPicsHQ=Download default card HQ picture for each card. lblDownloadSetPics=Download all pictures of each card (one for each set the card appeared in) diff --git a/forge-gui/src/main/java/forge/download/AutoUpdater.java b/forge-gui/src/main/java/forge/download/AutoUpdater.java index 9a0c34fc207..16d3e7bb9b8 100644 --- a/forge-gui/src/main/java/forge/download/AutoUpdater.java +++ b/forge-gui/src/main/java/forge/download/AutoUpdater.java @@ -9,9 +9,11 @@ import forge.util.WaitCallback; import forge.util.gui.SOptionPane; import org.apache.commons.lang3.StringUtils; +import javax.swing.*; import java.awt.*; import java.io.IOException; import java.io.InputStream; +import java.lang.reflect.InvocationTargetException; import java.net.*; import java.util.List; @@ -129,10 +131,10 @@ public class AutoUpdater { final List options = ImmutableList.of("Update Now", "Update Later"); if (SOptionPane.showOptionDialog(message, "New Version Available", null, options, 0) == 0) { - downloadFromForge(); + return downloadFromForge(); } - return true; + return false; } private boolean downloadFromBrowser() throws URISyntaxException, IOException { @@ -157,15 +159,15 @@ public class AutoUpdater { super.copyInputStream(in, outPath); packagePath = outPath; + extractUpdate(); } }, this); } }; - if (!callback.invokeAndWait()) { - return false; - } else { - return true; - } + + SwingUtilities.invokeLater(callback); + + return false; } private void extractUpdate() {