diff --git a/source/net/filebot/Main.java b/source/net/filebot/Main.java index 1e8437d7..a4b1d68a 100644 --- a/source/net/filebot/Main.java +++ b/source/net/filebot/Main.java @@ -3,6 +3,7 @@ package net.filebot; import static java.awt.GraphicsEnvironment.*; import static java.util.stream.Collectors.*; import static net.filebot.Logging.*; +import static net.filebot.MediaTypes.*; import static net.filebot.Settings.*; import static net.filebot.util.FileUtilities.*; import static net.filebot.util.XPathUtilities.*; @@ -185,11 +186,7 @@ public class Main { args.getLicenseFile().ifPresent(f -> configureLicense(f)); // make sure license is validated and cached - try { - LICENSE.check(); - } catch (Throwable e) { - debug.finest(e::toString); - } + SwingEventBus.getInstance().post(LICENSE); } // JavaFX is used for ProgressMonitor and GettingStartedDialog @@ -253,8 +250,9 @@ public class Main { if (isMacApp()) { // Mac specific configuration MacAppUtilities.initializeApplication(FileBotMenuBar.createHelp(), files -> { - if (LICENSE.isFile() && files.size() == 1 && files.get(0).getName().endsWith(".psm")) { + if (LICENSE.isFile() && files.size() == 1 && containsOnly(files, LICENSE_FILES)) { configureLicense(files.get(0)); + SwingEventBus.getInstance().post(LICENSE); } else { SwingEventBus.getInstance().post(new FileTransferable(files)); } diff --git a/source/net/filebot/MediaTypes.java b/source/net/filebot/MediaTypes.java index 034ad239..4e549f7b 100644 --- a/source/net/filebot/MediaTypes.java +++ b/source/net/filebot/MediaTypes.java @@ -71,4 +71,6 @@ public class MediaTypes { public static final ExtensionFileFilter LIST_FILES = getTypeFilter("application/list"); public static final ExtensionFileFilter TORRENT_FILES = getTypeFilter("application/torrent"); + public static final ExtensionFileFilter LICENSE_FILES = getTypeFilter("application/filebot-license"); + } diff --git a/source/net/filebot/MediaTypes.properties b/source/net/filebot/MediaTypes.properties index 2bcbee15..7f22a769 100644 --- a/source/net/filebot/MediaTypes.properties +++ b/source/net/filebot/MediaTypes.properties @@ -1,3 +1,5 @@ +application/filebot-license: psm + application/torrent: torrent tor application/list: list txt application/nfo: nfo url diff --git a/source/net/filebot/Settings.java b/source/net/filebot/Settings.java index 7016c5b8..734ebad7 100644 --- a/source/net/filebot/Settings.java +++ b/source/net/filebot/Settings.java @@ -177,6 +177,10 @@ public final class Settings { return getApplicationProperty("link.app.help") + '#' + getApplicationDeployment(); } + public static String getWindowTitle() { + return isAutoUpdateEnabled() ? getApplicationName() : String.format("%s %s", getApplicationName(), getApplicationVersion()); + } + public static String getApplicationIdentifier() { return String.format("%s %s (r%d)", getApplicationName(), getApplicationVersion(), getApplicationRevisionNumber()); } diff --git a/source/net/filebot/ui/MainFrame.java b/source/net/filebot/ui/MainFrame.java index d9e7a704..9d1f086f 100644 --- a/source/net/filebot/ui/MainFrame.java +++ b/source/net/filebot/ui/MainFrame.java @@ -37,6 +37,7 @@ import javax.swing.Timer; import com.google.common.eventbus.Subscribe; import net.filebot.CacheManager; +import net.filebot.LicenseModel; import net.filebot.Settings; import net.filebot.cli.GroovyPad; import net.filebot.util.PreferencesMap.PreferencesEntry; @@ -53,7 +54,7 @@ public class MainFrame extends JFrame { private HeaderPanel headerPanel; public MainFrame(PanelBuilder[] panels) { - super(isAutoUpdateEnabled() ? getApplicationName() : String.format("%s %s", getApplicationName(), getApplicationVersion())); + super(getWindowTitle()); selectionList = new PanelSelectionList(panels); headerPanel = new HeaderPanel(); @@ -132,6 +133,16 @@ public class MainFrame extends JFrame { SwingEventBus.getInstance().register(this); } + @Subscribe + public void updateLicense(LicenseModel licence) { + try { + licence.check(); + setTitle(getWindowTitle()); + } catch (Throwable e) { + setTitle(String.format("%s (%s)", getWindowTitle(), e.getMessage())); + } + } + @Subscribe public void selectPanel(PanelBuilder panel) { selectionList.setSelectedValue(panel, false);