| package org.eclipse.equinox.p2.examples.rcp.prestartupdate; |
| |
| import java.lang.reflect.InvocationTargetException; |
| |
| import org.eclipse.core.runtime.IProgressMonitor; |
| import org.eclipse.jface.dialogs.ProgressMonitorDialog; |
| import org.eclipse.jface.operation.IRunnableWithProgress; |
| import org.eclipse.ui.PlatformUI; |
| import org.eclipse.ui.application.IWorkbenchWindowConfigurer; |
| import org.eclipse.ui.application.WorkbenchAdvisor; |
| import org.eclipse.ui.application.WorkbenchWindowAdvisor; |
| |
| /** |
| * This workbench advisor creates the window advisor, and specifies the |
| * perspective id for the initial window. |
| */ |
| public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor { |
| |
| public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor( |
| IWorkbenchWindowConfigurer configurer) { |
| return new ApplicationWorkbenchWindowAdvisor(configurer); |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.ui.application.WorkbenchAdvisor#preStartup() |
| */ |
| public void preStartup() { |
| // XXX check for updates before starting up. |
| // If an update is performed, restart. |
| |
| IRunnableWithProgress runnable = new IRunnableWithProgress() { |
| public void run(IProgressMonitor monitor) |
| throws InvocationTargetException, InterruptedException { |
| if (P2Util.checkForUpdates(monitor)) |
| PlatformUI.getWorkbench().restart(); |
| } |
| }; |
| try { |
| new ProgressMonitorDialog(null).run(true, true, runnable); |
| } catch (InvocationTargetException e) { |
| e.printStackTrace(); |
| } catch (InterruptedException e) { |
| } |
| } |
| |
| public String getInitialWindowPerspectiveId() { |
| return Perspective.ID; |
| } |
| |
| } |