package me.chenyi.mm; import me.chenyi.jython.Script; import me.chenyi.jython.ScriptTriggerType; import me.chenyi.jython.ScriptUtilities; import me.chenyi.mm.model.DatabaseUtil; import me.chenyi.mm.service.ServiceUtilities; import me.chenyi.mm.util.SysUtil; import javax.swing.*; import java.util.List; import java.util.Map; /** * Class description goes here * * @author $Author:$ * @version $Revision:$ */ public class MovieManager extends ThreadGroup { private static MovieManagerConfig config; private static MovieManagerFrame frame; public MovieManager() { super("Sean's Movie Manager"); } public static MovieManagerFrame getFrame() { return frame; } public static MovieManagerConfig getConfig() { return config; } public static void main(String[] args) { Runnable appStarter = new Runnable() { public void run() { config = new MovieManagerConfig(); //if it is mac, make the JMenuBar show properly. if (SysUtil.isMac()) { System.setProperty("apple.laf.useScreenMenuBar", "true"); // set the name of the application menu item System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Sean's Movie Manager"); } List<String> serviceErrors = ServiceUtilities.initMovieService(); if (serviceErrors != null && serviceErrors.size() > 0) { JOptionPane.showMessageDialog(null, serviceErrors.toString()); } List<String> databaseErrors = DatabaseUtil.initDatabase(); if (databaseErrors != null && databaseErrors.size() > 0) { JOptionPane.showMessageDialog(null, databaseErrors.toString()); return; } Map<ScriptTriggerType,Map<String,Script>> scripts = ScriptUtilities.getScripts(); int scriptCount = 0; for (Map<String, Script> map : scripts.values()) { scriptCount += map.size(); } if (scriptCount == 0) { ScriptUtilities.initPluginList(); } frame = new MovieManagerFrame(); frame.setVisible(true); ScriptUtilities.executeScripts(ScriptTriggerType.OnAppStart); } }; new Thread(new MovieManager(), appStarter, "SeanMovieManager").start(); } public void uncaughtException(Thread t, Throwable ex) { ex.printStackTrace(); } }