O pacote org.eclipse.jdt.ui.wizards fornece páginas de assistentes para a criação de elementos Java. Além de utilizar as páginas pré-fabricadas, os clientes possuem a capacidade de dividir as páginas de assistentes em subclasses para incluir seus próprios campos de entrada ou para influenciar na geração de código. A seguir, o exemplo de uma nova página de assistente de tipo personalizada para criar classes de instrução de teste JUnit. A página inicializa o campo de superclasse com "junit.framework.TestCase" e inclui uma caixa de opção que controla se os stubs dos métodos setUp() e tearDown() devem ser criados.
public class TestCaseWizardPage extends NewTypeWizardPage {
private Button fCreateStubs;
public TestCaseWizardPage() {
super(true, "TestCaseWizardPage");
}
/**
* O assistente que está gerenciando esta página de assistente deve chamar este método
* durante a inicialização com uma seleção correspondente.
*/
public void init(IStructuredSelection selection) {
IJavaElement jelem= getInitialJavaElement(selection);
initContainerPage(jelem);
initTypePage(jelem);
// definir os componentes para os quais se deseja um status
IStatus[] status= new IStatus[] {
fContainerStatus,
isEnclosingTypeSelected() ? fEnclosingTypeStatus : fPackageStatus,
fTypeNameStatus,
};
updateStatus(status);
}
public void createControl(Composite parent) {
initializeDialogUnits(parent);
Composite composite= new Composite(parent, SWT.NONE);
int nColumns= 4;
GridLayout layout= new GridLayout();
layout.numColumns= nColumns;
composite.setLayout(layout);
// Criar os campos de entrada padrão
createContainerControls(composite, nColumns);
createPackageControls(composite, nColumns);
createSeparator(composite, nColumns);
createTypeNameControls(composite, nColumns);
createSuperClassControls(composite, nColumns);
// Criar a caixa de opção que controla se os stubs são desejados
fCreateStubs= new Button(composite, SWT.CHECK);
fCreateStubs.setText("Incluir 'setUp()' e 'tearDown()' na nova classe");
GridData gd= new GridData();
gd.horizontalSpan= nColumns;
fCreateStubs.setLayoutData(gd);
setControl(composite);
// Inicializar o campo de supertipo e marcá-lo como somente leitura
setSuperClass("junit.framework.TestCase", false);
}
protected void createTypeMembers(IType newType, ImportsManager imports, IProgressMonitor monitor) throws CoreException {
if (fCreateStubs.getSelection()) {
String setUpMathod= "public void setUp() {}";
newType.createMethod(setUpMathod, null, false, null);
String tearDownMathod= "public void setUp() {}"
newType.createMethod(tearDownMathod, null, false, null);
}
}
}