Java tutorial
package com.vitco; import com.vitco.layout.content.menu.MainMenuLogic; import com.vitco.layout.content.shortcut.ShortcutManager; import com.vitco.manager.action.ActionManager; import com.vitco.manager.action.ComplexActionManager; import com.vitco.manager.error.ErrorHandler; import com.vitco.manager.pref.Preferences; import com.vitco.settings.VitcoSettings; import com.vitco.util.misc.SaveResourceLoader; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.awt.*; import java.io.File; /** * Initially executed class */ public class Main { private static boolean debug = false; // true if the program runs in debug mode public static boolean isDebugMode() { return debug; } public static void main(String[] args) throws Exception { // display version number on splash screen final SplashScreen splash = SplashScreen.getSplashScreen(); if (splash != null) { Graphics2D g = splash.createGraphics(); if (g != null) { g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB); Font font = Font .createFont(Font.TRUETYPE_FONT, new SaveResourceLoader("resource/font/arcade.ttf").asInputStream()) .deriveFont(Font.PLAIN, 42f); g.setFont(font); //g.setFont(g.getFont().deriveFont(9f)); g.setColor(VitcoSettings.SPLASH_SCREEN_OVERLAY_TEXT_COLOR); int width = g.getFontMetrics().stringWidth(VitcoSettings.VERSION_ID); g.drawString(VitcoSettings.VERSION_ID, 400 - 20 - width, 110); splash.update(); g.dispose(); } } // the JIDE license SaveResourceLoader saveResourceLoader = new SaveResourceLoader("resource/jidelicense.txt"); if (!saveResourceLoader.error) { String[] jidelicense = saveResourceLoader.asLines(); if (jidelicense.length == 3) { com.jidesoft.utils.Lm.verifyLicense(jidelicense[0], jidelicense[1], jidelicense[2]); } } // check if we are in debug mode if ((args.length > 0) && args[0].equals("debug")) { ErrorHandler.setDebugMode(); debug = true; } // build the application final ConfigurableApplicationContext context = new ClassPathXmlApplicationContext( "com/vitco/glue/config.xml"); // for debugging if (debug) { ((ActionManager) context.getBean("ActionManager")).performValidityCheck(); ((ComplexActionManager) context.getBean("ComplexActionManager")).performValidityCheck(); } // open vsd file when program is started with "open with" MainMenuLogic mainMenuLogic = ((MainMenuLogic) context.getBean("MainMenuLogic")); for (String arg : args) { if (arg.endsWith(".vsd")) { File file = new File(arg); if (file.exists() && !file.isDirectory()) { mainMenuLogic.openFile(file); break; } } } // perform shortcut check ((ShortcutManager) context.getBean("ShortcutManager")).doSanityCheck(debug); // // test console // final Console console = ((Console) context.getBean("Console")); // new Thread() { // public void run() { // while (true) { // console.addLine("text"); // try { // sleep(2000); // } catch (InterruptedException e) { // //e.printStackTrace(); // } // } // } // }.start(); // add a shutdown hook Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { // make reference so Preferences object doesn't get destroyed Preferences pref = ((Preferences) context.getBean("Preferences")); // trigger @PreDestroy context.close(); // store the preferences (this needs to be done here, b/c // some PreDestroys are used to store preferences!) pref.save(); } }); } }