Le package org.eclipse.jdt.ui.wizards fournit des pages d'assistant permettant de créer des éléments Java. Outre le fait de pouvoir utiliser les pages prédéfinies, les clients peuvent sous-classer les pages de l'assistant pour ajouter leurs propres zones d'entrée ou pour influencer la génération de code. Vous trouverez ci-dessous un exemple d'une page d'assistant "Nouveau type" qui a été personnalisée pour créer des classes de scénarios de test JUnit. La page initialise la zone de superclasse avec "junit.framework.TestCase" et une case à cocher contrôlant si les raccords de méthode pour setUp() et tearDown() sont créés est ajoutée.
public class TestCaseWizardPage extends NewTypeWizardPage {
private Button fCreateStubs;
public TestCaseWizardPage() {
super(true, "TestCaseWizardPage");
}
/**
* L'assistant gérant cette page doit appeler cette méthode
* lors de l'initialisation avec une sélection appropriée.
*/
public void init(IStructuredSelection selection) {
IJavaElement jelem= getInitialJavaElement(selection);
initContainerPage(jelem);
initTypePage(jelem);
// définition des composants pour lesquels un statut est demandé
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);
// création des zones d'entrée standard
createContainerControls(composite, nColumns);
createPackageControls(composite, nColumns);
createSeparator(composite, nColumns);
createTypeNameControls(composite, nColumns);
createSuperClassControls(composite, nColumns);
// création de la case à cocher contrôlant les raccords
fCreateStubs= new Button(composite, SWT.CHECK);
fCreateStubs.setText("Add 'setUp()' and 'tearDown()' to new class");
GridData gd= new GridData();
gd.horizontalSpan= nColumns;
fCreateStubs.setLayoutData(gd);
setControl(composite);
// initialisation de la zone de supertype et association de la marque "lecture seule"
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);
}
}
}