1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| private static void launchSplashScreenAndLoad() {
final Semaphore semaphore = new Semaphore(1);
try {
final LoadingSplashScreen splash = LoadingSplashScreen.showSplashScreen(1500);
// splashOk[0] = true;
ModuleLoader.getModuleLoader().addLoadingListener(splash);
/* On demande le sémaphore. */
semaphore.acquire();
/* On écoute la fermeture du splashscreen. */
splash.addWindowListener(new WindowAdapter() {
@Override public void windowClosed(WindowEvent e) {
/* Sinon, pour une raison inconnue, l'évènement est déclenché 2x. */
splash.removeWindowListener(this);
/* On libère le sémaphore. */
semaphore.release();
}
});
} catch(SplashScreenException e) {
Logger.getLogger("MyFreeTV").warning("Le splashscreen n'est pas disponible.");
} catch(InterruptedException e) {
Logger.getLogger("MyFreeTV").warning("Chargement du splashscreen interrompu.");
}
/* Charge les modules, et signale les chargements en cours au splashscreen. */
ModuleLoader.getModuleLoader().load();
try {
/* On redemande le sémaphore (bloquant). */
semaphore.acquire();
} catch(InterruptedException e) {
Logger.getLogger("MyFreeTV").warning("Chargement du splashscreen interrompu.");
}
}
private static void initialize() {
launchSplashScreenAndLoad();
mainFrame = new MainFrame(); //donc pas dans l'EDT
} |
Partager