package net.sf.eclipsefp.haskell.ui.wizards; import net.sf.eclipsefp.haskell.ui.HaskellUIPlugin; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IResource; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.ide.IDE; import org.eclipse.ui.wizards.newresource.BasicNewResourceWizard; public abstract class RevealAtEndWizard extends Wizard { public RevealAtEndWizard() { super(); } protected void selectAndReveal( final IResource newResource ) { IWorkbenchPage page = getPage(); if( page != null ) { IWorkbenchWindow workbenchWindow = page.getWorkbenchWindow(); BasicNewResourceWizard.selectAndReveal( newResource, workbenchWindow ); } } private IWorkbenchPage getPage() { IWorkbenchPage result = null; IWorkbench workbench = PlatformUI.getWorkbench(); IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); if( window != null ) { result = window.getActivePage(); } return result; } protected void openResource( final IFile resource ) { final IWorkbenchPage activePage = getPage(); if( activePage != null ) { final Display display = getShell().getDisplay(); if( display != null ) { display.asyncExec( new Runnable() { @Override public void run() { try { IDE.openEditor( activePage, resource, true ); } catch( PartInitException pie ) { String msg = "Could not open editor for file '" + resource.getName() + "'."; HaskellUIPlugin.log( msg, pie ); } } } ); } } } }