package org.xtest.ui.wizards;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.internal.ui.JavaPlugin;
import org.eclipse.jdt.internal.ui.wizards.NewElementWizard;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.text.TextSelection;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.texteditor.ITextEditor;
/**
* Wizard for creating new Xtest files
*
* @author Michael Barry
*/
public class NewXtestFileWizard extends NewElementWizard {
private final NewXtestFileWizardPage fPage;
/**
* Construct a new Xtest file wizard page.
*/
public NewXtestFileWizard() {
this.fPage = new NewXtestFileWizardPage();
setDialogSettings(JavaPlugin.getDefault().getDialogSettings());
setWindowTitle("New Xtest File");
}
@Override
public void addPages() {
super.addPages();
fPage.init(getSelection());
super.addPage(fPage);
}
@Override
public IJavaElement getCreatedElement() {
return null;
}
@Override
public boolean performFinish() {
final int size = this.fPage.createType();
final IResource resource = fPage.getResource();
if (resource != null) {
selectAndReveal(resource);
final Display display = getShell().getDisplay();
display.asyncExec(new Runnable() {
@Override
public void run() {
IEditorPart editor;
try {
editor = IDE.openEditor(JavaPlugin.getActivePage(), (IFile) resource);
if (editor instanceof ITextEditor) {
final ITextEditor textEditor = (ITextEditor) editor;
ISelectionProvider selectionProvider = textEditor
.getSelectionProvider();
ISelection selection = new TextSelection(size - 2, 0);
selectionProvider.setSelection(selection);
}
} catch (PartInitException e) {
throw new RuntimeException(e);
}
}
});
return true;
} else {
return false;
}
}
@Override
public void setDefaultPageImageDescriptor(ImageDescriptor imageDescriptor) {
// Override this to avoid setting a page icon
}
@Override
protected void finishPage(IProgressMonitor monitor) throws InterruptedException, CoreException {
}
}