package cc.warlock.rcp.application; import java.util.Timer; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.application.IWorkbenchConfigurer; import org.eclipse.ui.application.IWorkbenchWindowConfigurer; import org.eclipse.ui.application.WorkbenchAdvisor; import org.eclipse.ui.application.WorkbenchWindowAdvisor; import cc.warlock.core.configuration.WarlockConfiguration; public class WarlockWorkbenchAdvisor extends WorkbenchAdvisor { private Timer timer = new Timer(); @Override public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) { return new WarlockWorkbenchWindowAdvisor(configurer); } @Override public String getInitialWindowPerspectiveId () { return WarlockPerspectiveFactory.WARLOCK_PERSPECTIVE_ID; } @Override public void initialize(IWorkbenchConfigurer configurer) { configurer.setSaveAndRestore(true); if (WarlockUpdates.autoUpdate()) { Thread updateTask = new Thread() { public void run () { WarlockUpdates.checkForUpdates(new NullProgressMonitor()); } }; updateTask.start(); } } @Override public IAdaptable getDefaultPageInput() { return null; } @Override public void preStartup() { WarlockConfiguration.getMainConfiguration().addConfigurationProvider(WarlockPerspectiveLayout.instance()); } @Override public void postStartup() { WarlockPerspectiveLayout.instance().loadBounds(); } @Override public boolean preShutdown() { timer.cancel(); WarlockPerspectiveLayout.instance().saveLayout(); return true; } public IWorkbenchWindowConfigurer getWindowConfigurer(IWorkbenchWindow w) { return getWorkbenchConfigurer().getWindowConfigurer(w); } }