/* * Created on 25.04.2005 */ package net.sourceforge.ganttproject.application; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import net.sourceforge.ganttproject.GPLogger; import net.sourceforge.ganttproject.GanttProject; import org.eclipse.core.runtime.IPlatformRunnable; /** * @author bard */ public class MainApplication implements IPlatformRunnable { private Object myLock = new Object(); // The hack with waiting is necessary because when you // launch Runtime Workbench in Eclipse, it exists as soon as // GanttProject.main() method exits // without Eclipse, Swing thread continues execution. So we wait until main // window closes @Override public Object run(Object args) throws Exception { Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); String[] cmdLine = (String[]) args; Runnable onApplicationQuit = new Runnable() { public void run() { synchronized(myLock) { myLock.notify(); } } }; GanttProject.setApplicationQuitCallback(onApplicationQuit); if (GanttProject.main(cmdLine)) { synchronized (myLock) { GPLogger.log("Waiting until main window closes"); myLock.wait(); GPLogger.log("Main window has closed"); } } GPLogger.log("Program terminated"); GPLogger.close(); System.exit(0); return null; } }