Pages de l'assistant Java

Le package org.eclipse.jdt.ui.wizards fournit des pages d'assistant permettant de créer et de configurer des éléments Java. Plusieurs pages prédéfinies vous sont destinées.

Configuration des paramètres de génération Java

JavaCapabilityConfigurationPage prend en charge l'édition des paramètres de génération Java (définition du dossier source, projets référencés et bibliothèques exportées et référencées).   

Si vous devez fournir un assistant qui configure un projet pour votre plug-in, tout en le configurant avec la nature Java et d'autres capacités de projet Java, utilisez cette page (plutôt que de sous-classer NewJavaProjectWizardPage).

Création d'éléments Java

Une hiérarchie de pages d'assistant prend en charge la création de nouveaux éléments Java.   

NewElementWizardPage est la classe abstraite qui définit l'opération de base de l'assistant. Des classes abstraites supplémentaires sont fournies dans la hiérarchie pour effectuer des personnalisations de la fonctionnalité fournie par les assistants concrets.

Les assistants de création concrets peuvent être utilisés directement et ne sont généralement pas destinés à être sous-classés.  

Ajout d'une page d'assistant de conteneur de chemin de classe

L'interface IClasspathContainerPage définit une structure pour l'ajout d'une page d'assistant permettant à un utilisateur de définir une entrée de conteneur de chemin de classe ou d'en éditer une existante. Si votre plug-in a défini son propre conteneur de chemin de classe à l'aide du point d'extension de l'API principale de JDT org.eclipse.jdt.core.classpathContainerInitializer, vous souhaiterez probablement définir une page d'assistant correspondante pour l'édition et la création des conteneurs de chemin de classe de ce type.

La marque de votre plug-in doit fournir une extension org.eclipse.jdt.ui.classpathContainerPage. Dans la marque de l'extension, indiquez le nom de votre classe qui implémente IClasspathContainerPage. Si vous souhaitez fournir des informations supplémentaires dans votre page d'assistant sur un contexte de chemin de classe lorsqu'il est sélectionné, implémentez IClasspathContainerPageExtension pour initialiser l'état qui dépend des entrées sélectionnées dans le chemin de classe courant.

Personnalisation d'une page d'assistant

Outre le fait de pouvoir utiliser des pages prédéfinies, vous pouvez sous-classer les pages de l'assistant pour ajouter vos propres zones d'entrée ou pour influencer la génération de code. Utilisez les classes abstraites de la hiérarchie NewElementWizardPage pour personnaliser un assistant plutôt que de sous-classer les classes concrètes.

L'exemple ci-dessous illustre un exemple de 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 ajoute une case à cocher qui contrôle si les raccords de méthode pour setUp() et tearDown() doivent être créés.

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

    private void doStatusUpdate() {
        		// définition des composants pour lesquels un statut est demandé
        		IStatus[] status= new IStatus[] {
            fContainerStatus,
            			isEnclosingTypeSelected() ? fEnclosingTypeStatus : fPackageStatus,
            fTypeNameStatus,
        };
        		updateStatus(status);
    }


    protected void handleFieldChanged(String fieldName) {
        super.handleFieldChanged(fieldName);

        doStatusUpdate();
    }
	
    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, 2003. All Rights Reserved.