/* * This software is Copyright 2005,2006,2007,2008 Langdale Consultants. * Langdale Consultants can be contacted at: http://www.langdale.com.au */ package au.com.langdale.ui.util; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.ISelectionService; import org.eclipse.ui.IViewActionDelegate; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; import org.eclipse.ui.IWorkbenchWizard; public abstract class WizardLauncher implements IWorkbenchWindowActionDelegate, IViewActionDelegate { private IWorkbenchWindow window; private IWorkbenchPart part; private IAction action; public void init(IWorkbenchWindow workbenchWindow) { window = workbenchWindow; } public void init(IViewPart view) { part = view; window =view.getSite().getWorkbenchWindow(); } protected ISelection getSelection() { if( part != null ) { ISelectionProvider provider = part.getSite().getSelectionProvider(); if( provider != null ) return provider.getSelection(); } else { ISelectionService service = window.getSelectionService(); if( service != null ) return service.getSelection(); } return StructuredSelection.EMPTY; } public IWorkbenchWindow getWindow() { return window; } public IWorkbenchPart getPart() { return part; } public IAction getAction() { return action; } public void dispose() { part = null; window = null; } public void run(IAction action) { if (window == null) { // action has been disposed return; } IWorkbenchWizard wizard = createWizard(); IStructuredSelection selectionToPass; ISelection selection = getSelection(); if (selection instanceof IStructuredSelection) { selectionToPass = (IStructuredSelection) selection; } else { selectionToPass = StructuredSelection.EMPTY; } run(wizard, window, selectionToPass); } protected abstract IWorkbenchWizard createWizard(); public void selectionChanged(IAction action, ISelection selection) { this.action = action; } public static void run(IWorkbenchWizard wizard, IWorkbenchWindow window, IStructuredSelection selection) { wizard.init(window.getWorkbench(), selection); Shell parent = window.getShell(); WizardDialog dialog = new WizardDialog(parent, wizard); //Image image = action.getImageDescriptor().createImage(); //dialog.getShell().setImage(image); dialog.create(); dialog.open(); } }