Comment créer une page d'assistant "Nouvel élément Java" personnalisée ?

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); } } }

Copyright IBM Corporation and others 2000, 2002. All Rights Reserved.