Example usage for java.awt Toolkit addAWTEventListener

List of usage examples for java.awt Toolkit addAWTEventListener

Introduction

In this page you can find the example usage for java.awt Toolkit addAWTEventListener.

Prototype

public void addAWTEventListener(AWTEventListener listener, long eventMask) 

Source Link

Document

Adds an AWTEventListener to receive all AWTEvents dispatched system-wide that conform to the given eventMask .

Usage

From source file:Main.java

public static void main(String[] args) throws Exception {
    Toolkit tk = Toolkit.getDefaultToolkit();
    final Main main = new Main();

    tk.addAWTEventListener(main, AWTEvent.WINDOW_EVENT_MASK);

    final JFrame frame = new JFrame("");
    frame.setName("your frame");
    JMenuBar mb = new JMenuBar();
    JMenu menu = new JMenu("File");
    menu.add(new AbstractAction("Quit") {
        public void actionPerformed(ActionEvent evt) {
            try {
                main.saveSettings();//w ww  . java2s  . co m
                System.exit(0);
            } catch (Exception ex) {
                System.out.println(ex);
            }
        }
    });
    mb.add(menu);
    frame.setJMenuBar(mb);
    frame.pack();
    frame.setVisible(true);
}

From source file:com.maxl.java.amikodesk.AMiKoDesk.java

public static void main(String[] args) {

    // Initialize globales
    m_application_data_folder = Utilities.appDataFolder();
    favorite_meds_set = new HashSet<String>();
    favorite_data = new DataStore(m_application_data_folder);
    favorite_meds_set = favorite_data.load(); // HashSet containing registration numbers

    // Register toolkit
    Toolkit tk = Toolkit.getDefaultToolkit();
    tk.addAWTEventListener(WindowSaver.getInstance(m_application_data_folder), AWTEvent.WINDOW_EVENT_MASK);

    // Specify command line options
    Options options = new Options();
    addOption(options, "help", "print this message", false, false);
    addOption(options, "version", "print the version information and exit", false, false);
    addOption(options, "port", "starts AmiKo-server at given port", true, false);
    addOption(options, "width", "sets window width", true, false);
    addOption(options, "height", "sets window height", true, false);
    addOption(options, "lang", "use given language", true, false);
    addOption(options, "type", "start light or full app", true, false);
    addOption(options, "title", "display medical info related to given title", true, false);
    addOption(options, "eancode", "display medical info related to given 13-digit ean-code", true, false);
    addOption(options, "regnr", "display medical info related to given 5-digit registration number", true,
            false);//from   ww  w.j  a va2s  .co  m
    // Activate command line parser
    commandLineParse(options, args);

    // Initialize language files
    if (Utilities.appLanguage().equals("de"))
        m_rb = ResourceBundle.getBundle("amiko_de_CH", new Locale("de", "CH"));
    else if (Utilities.appLanguage().equals("fr"))
        m_rb = ResourceBundle.getBundle("amiko_fr_CH", new Locale("fr", "CH"));

    if (Utilities.appCustomization().equals("desitin")) {
        new SplashWindow(Constants.APP_NAME, 5000);
    } else if (Utilities.appCustomization().equals("meddrugs")) {
        new SplashWindow(Constants.APP_NAME, 5000);
    } else if (Utilities.appCustomization().equals("zurrose")) {
        new SplashWindow(Constants.APP_NAME, 3000);
    }
    // Load javascript
    String jscript_str = FileOps.readFromFile(Constants.JS_FOLDER + "main_callbacks.js");
    m_jscript_str = "<script language=\"javascript\">" + jscript_str + "</script>";

    // Load css style sheet
    m_css_str = "<style>" + FileOps.readFromFile(Constants.CSS_SHEET) + "</style>";

    // Load main database
    m_sqldb = new MainSqlDb();
    // Attempt to load alternative database. if db does not exist, load
    // default database
    // These databases are NEVER zipped!
    if (m_sqldb.loadDBFromPath(m_application_data_folder + "\\" + Constants.DEFAULT_AMIKO_DB_BASE
            + Utilities.appLanguage() + ".db") == 0) {
        System.out.println("Loading default amiko database");
        if (Utilities.appLanguage().equals("de"))
            m_sqldb.loadDB("de");
        else if (Utilities.appLanguage().equals("fr"))
            m_sqldb.loadDB("fr");
    }

    // Load rose database
    if (Utilities.appCustomization().equals("zurrose")) {
        m_rosedb = new RoseSqlDb();
        if (m_rosedb.loadDBFromPath(m_application_data_folder + "\\" + Constants.DEFAULT_ROSE_DB) == 0) {
            System.out.println("Loading default rose db");
            m_rosedb.loadDB();
        }
    }

    // Initialize update class
    m_maindb_update = new UpdateDb(m_sqldb);

    // Create shop folder in application data folder
    File wdir = new File(m_application_data_folder + "\\shop");
    if (!wdir.exists())
        wdir.mkdirs();

    // Load interaction cart
    m_interactions_cart = new InteractionsCart();

    // Create shopping cart and load related files
    m_shopping_cart = new ShoppingCart();
    loadAuthors();
    m_emailer = new Emailer(m_rb);

    // Create comparison cart and load related files
    m_comparison_cart = new ComparisonCart();

    // Preferences
    m_prefs = Preferences.userRoot().node(SettingsPage.class.getName());

    // UIUtils.setPreferredLookAn dFeel();
    NativeInterface.open();
    NativeSwing.initialize();

    // Setup font size based on screen size
    UIManager.getLookAndFeelDefaults().put("defaultFont", new Font("Dialog", Font.PLAIN, 14));
    UIManager.put("Label.font", new Font("Dialog", Font.PLAIN, 12));
    UIManager.put("CheckBox.font", new Font("Dialog", Font.PLAIN, 12));
    UIManager.put("Button.font", new Font("Dialog", Font.BOLD, 14));
    UIManager.put("ToggleButton.font", new Font("Dialog", Font.BOLD, 14));
    UIManager.put("ToggleButton.select", m_selected_but_color);
    UIManager.put("Menu.font", new Font("Dialog", Font.PLAIN, 12));
    UIManager.put("MenuBar.font", new Font("Dialog", Font.PLAIN, 12));
    UIManager.put("MenuItem.font", new Font("Dialog", Font.PLAIN, 12));
    UIManager.put("ToolBar.font", new Font("Dialog", Font.PLAIN, 12));

    // Schedule a job for the event-dispatching thread:
    // creating and showing this application's GUI
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            if (!commandLineOptionsProvided()) {
                System.out.println("No relevant command line options provided... creating full GUI");
                createAndShowFullGUI();
            } else if (CML_OPT_TYPE.equals("full")) {
                System.out.println("Creating full GUI");
                createAndShowFullGUI();
            } else if (CML_OPT_TYPE.equals("light")) {
                System.out.println("Creating light GUI");
                createAndShowLightGUI();
            }
        }
    });

    NativeInterface.runEventPump();
}

From source file:net.sourceforge.squirrel_sql.fw.gui.debug.DebugEventListener.java

public void setEnabled(boolean enable) {
    Toolkit kit = Toolkit.getDefaultToolkit();
    if (enable) {
        /* register as a listener for mouse events */
        kit.addAWTEventListener(this, AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK);

        /* show all tooltips for ten seconds before hiding */
        ToolTipManager.sharedInstance().setDismissDelay(10000);
    } else {/*w  ww . j  a va 2  s . c  o  m*/
        kit.removeAWTEventListener(this);
    }
}

From source file:org.tinymediamanager.TinyMediaManager.java

/**
 * The main method./*from   www .ja va2  s .co m*/
 * 
 * @param args
 *          the arguments
 */
public static void main(String[] args) {
    // simple parse command line
    if (args != null && args.length > 0) {
        LOGGER.debug("TMM started with: " + Arrays.toString(args));
        TinyMediaManagerCMD.parseParams(args);
        System.setProperty("java.awt.headless", "true");
    } else {
        // no cmd params found, but if we are headless - display syntax
        String head = System.getProperty("java.awt.headless");
        if (head != null && head.equals("true")) {
            LOGGER.info("TMM started 'headless', and without params -> displaying syntax ");
            TinyMediaManagerCMD.printSyntax();
            System.exit(0);
        }
    }

    // check if we have write permissions to this folder
    try {
        RandomAccessFile f = new RandomAccessFile("access.test", "rw");
        f.close();
        Files.deleteIfExists(Paths.get("access.test"));
    } catch (Exception e2) {
        String msg = "Cannot write to TMM directory, have no rights - exiting.";
        if (!GraphicsEnvironment.isHeadless()) {
            JOptionPane.showMessageDialog(null, msg);
        } else {
            System.out.println(msg);
        }
        System.exit(1);
    }

    // HACK for Java 7 and JavaFX not being in boot classpath
    // In Java 8 and on, this is installed inside jre/lib/ext
    // see http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8003171 and references
    // so we check if it is already existent in "new" directory, and if not, load it via reflection ;o)
    String dir = new File(LaunchUtil.getJVMPath()).getParentFile().getParent(); // bin, one deeper
    File jfx = new File(dir, "lib/ext/jfxrt.jar");
    if (!jfx.exists()) {
        // java 7
        jfx = new File(dir, "lib/jfxrt.jar");
        if (jfx.exists()) {
            try {
                TmmOsUtils.addPath(jfx.getAbsolutePath());
            } catch (Exception e) {
                LOGGER.debug("failed to load JavaFX - using old styles...");
            }
        }
    }

    if (Globals.isDebug()) {
        ClassLoader cl = ClassLoader.getSystemClassLoader();
        URL[] urls = ((URLClassLoader) cl).getURLs();
        LOGGER.info("=== DEBUG CLASS LOADING =============================");
        for (URL url : urls) {
            LOGGER.info(url.getFile());
        }
    }

    LOGGER.info("=====================================================");
    LOGGER.info("=== tinyMediaManager (c) 2012-2016 Manuel Laggner ===");
    LOGGER.info("=====================================================");
    LOGGER.info("tmm.version      : " + ReleaseInfo.getRealVersion());

    if (Globals.isDonator()) {
        LOGGER.info("tmm.supporter    : THANKS FOR DONATING - ALL FEATURES UNLOCKED :)");
    }

    LOGGER.info("os.name          : " + System.getProperty("os.name"));
    LOGGER.info("os.version       : " + System.getProperty("os.version"));
    LOGGER.info("os.arch          : " + System.getProperty("os.arch"));
    LOGGER.trace("network.id       : " + License.getMac());
    LOGGER.info("java.version     : " + System.getProperty("java.version"));

    if (Globals.isRunningJavaWebStart()) {
        LOGGER.info("java.webstart    : true");
    }
    if (Globals.isRunningWebSwing()) {
        LOGGER.info("java.webswing    : true");
    }

    // START character encoding debug
    debugCharacterEncoding("default encoding : ");
    System.setProperty("file.encoding", "UTF-8");
    System.setProperty("sun.jnu.encoding", "UTF-8");
    Field charset;
    try {
        // we cannot (re)set the properties while running inside JVM
        // so we trick it to reread it by setting them to null ;)
        charset = Charset.class.getDeclaredField("defaultCharset");
        charset.setAccessible(true);
        charset.set(null, null);
    } catch (Exception e) {
        LOGGER.warn("Error resetting to UTF-8", e);
    }
    debugCharacterEncoding("set encoding to  : ");
    // END character encoding debug

    // set GUI default language
    Locale.setDefault(Utils.getLocaleFromLanguage(Globals.settings.getLanguage()));
    LOGGER.info("System language  : " + System.getProperty("user.language") + "_"
            + System.getProperty("user.country"));
    LOGGER.info(
            "GUI language     : " + Locale.getDefault().getLanguage() + "_" + Locale.getDefault().getCountry());
    LOGGER.info("Scraper language : " + MovieModuleManager.MOVIE_SETTINGS.getScraperLanguage());
    LOGGER.info("TV Scraper lang  : " + TvShowModuleManager.SETTINGS.getScraperLanguage());

    // start EDT
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            boolean newVersion = !Globals.settings.isCurrentVersion(); // same snapshots/svn considered as "new", for upgrades
            try {
                Thread.setDefaultUncaughtExceptionHandler(new Log4jBackstop());
                if (!GraphicsEnvironment.isHeadless()) {
                    Thread.currentThread().setName("main");
                } else {
                    Thread.currentThread().setName("headless");
                    LOGGER.debug("starting without GUI...");
                }
                Toolkit tk = Toolkit.getDefaultToolkit();
                tk.addAWTEventListener(TmmWindowSaver.getInstance(), AWTEvent.WINDOW_EVENT_MASK);
                if (!GraphicsEnvironment.isHeadless()) {
                    setLookAndFeel();
                }
                doStartupTasks();

                // suppress logging messages from betterbeansbinding
                org.jdesktop.beansbinding.util.logging.Logger.getLogger(ELProperty.class.getName())
                        .setLevel(Level.SEVERE);

                // init ui logger
                TmmUILogCollector.init();

                LOGGER.info("=====================================================");
                // init splash
                SplashScreen splash = null;
                if (!GraphicsEnvironment.isHeadless()) {
                    splash = SplashScreen.getSplashScreen();
                }
                Graphics2D g2 = null;
                if (splash != null) {
                    g2 = splash.createGraphics();
                    if (g2 != null) {
                        Font font = new Font("Dialog", Font.PLAIN, 14);
                        g2.setFont(font);
                    } else {
                        LOGGER.debug("got no graphics from splash");
                    }
                } else {
                    LOGGER.debug("no splash found");
                }

                if (g2 != null) {
                    updateProgress(g2, "starting tinyMediaManager", 0);
                    splash.update();
                }
                LOGGER.info("starting tinyMediaManager");

                // upgrade check
                String oldVersion = Globals.settings.getVersion();
                if (newVersion) {
                    if (g2 != null) {
                        updateProgress(g2, "upgrading to new version", 10);
                        splash.update();
                    }
                    UpgradeTasks.performUpgradeTasksBeforeDatabaseLoading(oldVersion); // do the upgrade tasks for the old version
                    Globals.settings.setCurrentVersion();
                    Globals.settings.saveSettings();
                }

                // proxy settings
                if (Globals.settings.useProxy()) {
                    LOGGER.info("setting proxy");
                    Globals.settings.setProxy();
                }

                // MediaInfo /////////////////////////////////////////////////////
                if (g2 != null) {
                    updateProgress(g2, "loading MediaInfo libs", 20);
                    splash.update();
                }
                MediaInfoUtils.loadMediaInfo();

                // load modules //////////////////////////////////////////////////
                if (g2 != null) {
                    updateProgress(g2, "loading movie module", 30);
                    splash.update();
                }
                TmmModuleManager.getInstance().startUp();
                TmmModuleManager.getInstance().registerModule(MovieModuleManager.getInstance());
                TmmModuleManager.getInstance().enableModule(MovieModuleManager.getInstance());

                if (g2 != null) {
                    updateProgress(g2, "loading TV show module", 40);
                    splash.update();
                }

                TmmModuleManager.getInstance().registerModule(TvShowModuleManager.getInstance());
                TmmModuleManager.getInstance().enableModule(TvShowModuleManager.getInstance());

                if (g2 != null) {
                    updateProgress(g2, "loading plugins", 50);
                    splash.update();
                }

                // just instantiate static - will block (takes a few secs)
                PluginManager.getInstance();
                if (ReleaseInfo.isSvnBuild()) {
                    PluginManager.loadClasspathPlugins();
                }

                // do upgrade tasks after database loading
                if (newVersion) {
                    if (g2 != null) {
                        updateProgress(g2, "upgrading database to new version", 70);
                        splash.update();
                    }
                    UpgradeTasks.performUpgradeTasksAfterDatabaseLoading(oldVersion);
                }

                // launch application ////////////////////////////////////////////
                if (g2 != null) {
                    updateProgress(g2, "loading ui", 80);
                    splash.update();
                }
                if (!GraphicsEnvironment.isHeadless()) {
                    MainWindow window = new MainWindow("tinyMediaManager / " + ReleaseInfo.getRealVersion());

                    // finished ////////////////////////////////////////////////////
                    if (g2 != null) {
                        updateProgress(g2, "finished starting :)", 100);
                        splash.update();
                    }

                    // write a random number to file, to identify this instance (for
                    // updater, tracking, whatsoever)
                    Utils.trackEvent("startup");

                    TmmWindowSaver.getInstance().loadSettings(window);
                    window.setVisible(true);

                    // wizard for new user
                    if (Globals.settings.newConfig) {
                        Globals.settings.writeDefaultSettings(); // now all plugins are resolved - write again defaults!
                        TinyMediaManagerWizard wizard = new TinyMediaManagerWizard();
                        wizard.setVisible(true);
                    }

                    // show changelog
                    if (newVersion && !ReleaseInfo.getVersion().equals(oldVersion)) {
                        // special case nightly/svn: if same snapshot version, do not display changelog
                        Utils.trackEvent("updated");
                        showChangelog();
                    }
                } else {
                    TinyMediaManagerCMD.startCommandLineTasks();
                    // wait for other tmm threads (artwork download et all)
                    while (TmmTaskManager.getInstance().poolRunning()) {
                        Thread.sleep(2000);
                    }

                    LOGGER.info("bye bye");
                    // MainWindows.shutdown()
                    try {
                        // send shutdown signal
                        TmmTaskManager.getInstance().shutdown();
                        // save unsaved settings
                        Globals.settings.saveSettings();
                        // hard kill
                        TmmTaskManager.getInstance().shutdownNow();
                        // close database connection
                        TmmModuleManager.getInstance().shutDown();
                    } catch (Exception ex) {
                        LOGGER.warn(ex.getMessage());
                    }
                    System.exit(0);
                }
            } catch (IllegalStateException e) {
                LOGGER.error("IllegalStateException", e);
                if (!GraphicsEnvironment.isHeadless() && e.getMessage().contains("file is locked")) {
                    // MessageDialog.showExceptionWindow(e);
                    ResourceBundle bundle = ResourceBundle.getBundle("messages", new UTF8Control()); //$NON-NLS-1$
                    MessageDialog dialog = new MessageDialog(MainWindow.getActiveInstance(),
                            bundle.getString("tmm.problemdetected")); //$NON-NLS-1$
                    dialog.setImage(IconManager.ERROR);
                    dialog.setText(bundle.getString("tmm.nostart"));//$NON-NLS-1$
                    dialog.setDescription(bundle.getString("tmm.nostart.instancerunning"));//$NON-NLS-1$
                    dialog.setResizable(true);
                    dialog.pack();
                    dialog.setLocationRelativeTo(MainWindow.getActiveInstance());
                    dialog.setVisible(true);
                }
                System.exit(1);
            } catch (Exception e) {
                LOGGER.error("Exception while start of tmm", e);
                if (!GraphicsEnvironment.isHeadless()) {
                    MessageDialog.showExceptionWindow(e);
                }
                System.exit(1);
            }
        }

        /**
         * Update progress on splash screen.
         * 
         * @param text
         *          the text
         */
        private void updateProgress(Graphics2D g2, String text, int progress) {
            Object oldAAValue = g2.getRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING);
            g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
            g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
                    RenderingHints.VALUE_TEXT_ANTIALIAS_LCD_HRGB);
            g2.setComposite(AlphaComposite.Clear);
            g2.fillRect(20, 200, 480, 305);
            g2.setPaintMode();

            g2.setColor(new Color(51, 153, 255));
            g2.fillRect(22, 272, 452 * progress / 100, 21);

            g2.setColor(Color.black);
            g2.drawString(text + "...", 23, 310);
            int l = g2.getFontMetrics().stringWidth(ReleaseInfo.getRealVersion()); // bound right
            g2.drawString(ReleaseInfo.getRealVersion(), 480 - l, 325);
            g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, oldAAValue);
            LOGGER.debug("Startup (" + progress + "%) " + text);
        }

        /**
         * Sets the look and feel.
         * 
         * @throws Exception
         *           the exception
         */
        private void setLookAndFeel() throws Exception {
            // get font settings
            String fontFamily = Globals.settings.getFontFamily();
            try {
                // sanity check
                fontFamily = Font.decode(fontFamily).getFamily();
            } catch (Exception e) {
                fontFamily = "Dialog";
            }

            int fontSize = Globals.settings.getFontSize();
            if (fontSize < 12) {
                fontSize = 12;
            }

            String fontString = fontFamily + " " + fontSize;

            // Get the native look and feel class name
            // String laf = UIManager.getSystemLookAndFeelClassName();
            Properties props = new Properties();
            props.setProperty("controlTextFont", fontString);
            props.setProperty("systemTextFont", fontString);
            props.setProperty("userTextFont", fontString);
            props.setProperty("menuTextFont", fontString);
            // props.setProperty("windowTitleFont", "Dialog bold 20");

            fontSize = Math.round((float) (fontSize * 0.833));
            fontString = fontFamily + " " + fontSize;

            props.setProperty("subTextFont", fontString);
            props.setProperty("backgroundColor", "237 237 237");
            props.setProperty("menuBackgroundColor", "237 237 237");
            props.setProperty("controlBackgroundColor", "237 237 237");
            props.setProperty("menuColorLight", "237 237 237");
            props.setProperty("menuColorDark", "237 237 237");
            props.setProperty("toolbarColorLight", "237 237 237");
            props.setProperty("toolbarColorDark", "237 237 237");
            props.setProperty("tooltipBackgroundColor", "255 255 255");
            props.put("windowDecoration", "system");
            props.put("logoString", "");

            // Get the look and feel class name
            com.jtattoo.plaf.luna.LunaLookAndFeel.setTheme(props);
            String laf = "com.jtattoo.plaf.luna.LunaLookAndFeel";

            // Install the look and feel
            UIManager.setLookAndFeel(laf);
        }

        /**
         * Does some tasks at startup
         */
        private void doStartupTasks() {
            // rename downloaded files
            UpgradeTasks.renameDownloadedFiles();

            // extract templates, if GD has not already done
            Utils.extractTemplates();

            // check if a .desktop file exists
            if (Platform.isLinux()) {
                File desktop = new File(TmmOsUtils.DESKTOP_FILE);
                if (!desktop.exists()) {
                    TmmOsUtils.createDesktopFileForLinux(desktop);
                }
            }
        }

        private void showChangelog() {
            // read the changelog
            try {
                final String changelog = Utils.readFileToString(Paths.get("changelog.txt"));
                if (StringUtils.isNotBlank(changelog)) {
                    EventQueue.invokeLater(new Runnable() {
                        @Override
                        public void run() {
                            WhatsNewDialog dialog = new WhatsNewDialog(changelog);
                            dialog.pack();
                            dialog.setLocationRelativeTo(MainWindow.getActiveInstance());
                            dialog.setModalityType(ModalityType.APPLICATION_MODAL);
                            dialog.setVisible(true);
                        }
                    });
                }
            } catch (IOException e) {
                // no file found
                LOGGER.warn(e.getMessage());
            }
        }
    });
}

From source file:org.vpac.grisu.client.view.swing.mainPanel.Grisu.java

/**
 * Launches this application//from  w ww  .jav a2 s.co m
 */
public static void main(String[] args) {

    if ((args.length > 0) && (Arrays.binarySearch(args, "--debug") >= 0)) {
        Level lvl = Level.toLevel("debug");
        Logger.getRootLogger().setLevel(lvl);
    }

    Shibboleth.initDefaultSecurityProvider();

    SwingUtilities.invokeLater(new Runnable() {
        public void run() {

            Toolkit tk = Toolkit.getDefaultToolkit();
            tk.addAWTEventListener(WindowSaver.getInstance(), AWTEvent.WINDOW_EVENT_MASK);

            try {
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            } catch (Exception e) {
                myLogger.debug("Could not set OS look & feel.");
            }

            try {
                CertificateFiles.copyCACerts(false);
            } catch (Exception e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            myLogger.debug("Starting login dialog.");
            LoginDialog ld = new LoginDialog();
            ld.addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
            ld.setVisible(true);

            if (ld.userCancelledLogin()) {
                myLogger.debug("User cancelled login dialog.");
                System.exit(0);
            }

            final Grisu application = new Grisu();
            application.serviceInterface = ld.getServiceInterface();
            myLogger.debug("Removing login dialog.");
            ld.dispose();

            myLogger.debug("Creating splash screen.");
            final LoginSplashScreen lss = new LoginSplashScreen();
            lss.addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
            ApplicationStatusManager.getDefaultManager().addStatusListener(lss);
            lss.setVisible(true);

            new Thread() {
                @Override
                public void run() {
                    myLogger.debug("Creating progress bars.");

                    try {
                        application.em = new EnvironmentManager(application.serviceInterface);
                        GrisuRegistry.setServiceInterface(application.serviceInterface);
                        GrisuRegistry.setEnvironmentSnapshotValues(application.em);
                        application.em.initializeHistoryManager();
                        if (application.serviceInterface == null) {
                            myLogger.debug("Could not create/find service interface. Exiting.");
                            Utils.showErrorMessage(application.em, null, "startupError", null);
                            System.exit(1);
                        }
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        Utils.showErrorMessage(application.em, null, "startupError", e);
                        e.printStackTrace();
                        System.exit(1);
                    }

                    //            application.em.getFileManager().initAllFileSystemsInBackground();
                    //            application.em.buildInfoCacheInBackground();
                    //            application.em.getGlazedJobManagement().loadAllJobsInBackground();

                    //            ProgressDisplay pg_environment = new SwingProgressDisplay(application.getJFrame());
                    //            ProgressDisplay pg_submission = new SwingProgressDisplay(application.getJFrame());
                    ProgressDisplay pg_file_managementTransfer = new SwingProgressDisplay(
                            application.getJFrame());
                    ProgressDisplay pg_file_deletion = new SwingProgressDisplay(application.getJFrame());

                    //            EnvironmentManager.progressDisplay = pg_environment;
                    FileManagerTransferHelpers.progressDisplay = pg_file_managementTransfer;
                    FileManagerDeleteHelpers.progressDisplay = pg_file_deletion;

                    myLogger.debug("Setting application window visible.");
                    application.getJFrame().setVisible(true);

                    Thread.setDefaultUncaughtExceptionHandler(
                            new GrisuRuntimeExceptionHandler(application.getJFrame()));

                    ApplicationStatusManager.getDefaultManager().removeStatusListener(lss);
                    myLogger.debug("Removing splash screen.");
                    lss.dispose();

                    // now test whether there is a VO available
                    int availFqans = application.em.getAvailableFqans().length;
                    myLogger.debug("Number of avail Fqans: " + availFqans);
                    int usedFqans = application.em.getAllUsedFqans().size();
                    myLogger.debug("Number of used Fqans: " + usedFqans);
                    if (availFqans == 0) {
                        Utils.showErrorMessage(application.em, application.getJFrame(), "noVOs", null);
                    } else if (usedFqans == 0) {
                        Utils.showErrorMessage(application.em, application.getJFrame(), "noUsableVOs", null);
                    }

                }
            }.start();

        }
    });
}