Pagine della procedura guidata Java

Il pacchetto org.eclipse.jdt.ui.wizards fornisce pagine della procedura guidata per la creazione e la configurazione di elementi Java.  Tale pacchetto comprende molte pagine precostituite.

Configurazione delle impostazioni di generazione Java

JavaCapabilityConfigurationPage supporta la modifica delle impostazioni di generazione Java (configurazione della cartella di origine, progetti a cui si fa riferimento e librerie a cui si fa riferimento ed esportate).  

Se è necessario fornire una procedura guidata che configuri un progetto per il plugin utilizzato configurandolo con la natura Java e altre funzioni del progetto Java, è necessario utilizzare questa pagina (anziché la sottoclasse NewJavaProjectWizardPage).

Creazione di nuovi elementi Java

Una gerarchia di pagine della procedura guidata supporta la creazione di nuovi elementi Java.  

NewElementWizardPage è la classe astratta che definisce l'operazione di base della procedura guidata. Nella gerarchia vengono fornite altre classi astratte per eseguire le personalizzazioni alle funzionalità fornite dalle procedure guidate concrete.

Le procedure guidate concrete per la creazione possono essere utilizzate direttamente e in genere non prevedono sottoclassi. 

Utilizzo di una pagina della procedura guidata relativa al contenitore di un percorso classi

L'interfaccia IClasspathContainerPage definisce una struttura per l'utilizzo di una pagina della procedura guidata che consente a un utente di definire una nuova voce del contenitore del percorso classi o di modificare una voce esistente. Se nel plugin è stato definito il tipo di contenitore del percorso classi utilizzando il punto di estensione org.eclipse.jdt.core.classpathContainerInitializer del JDT di base, è possibile definire una pagina corrispondente della procedura guidata per la modifica e la creazione di contenitori del percorso classi di questo tipo.

Il tag del plugin deve fornire un'estensione org.eclipse.jdt.ui.classpathContainerPageNel tag di estensione, viene fornito il nome della classe che implementa IClasspathContainerPage.  Se si desidera fornire informazioni supplementari nella pagina della procedura guidata su un contesto del percorso classi quando selezionato, è possibile implementare IClasspathContainerPageExtension per inizializzare qualsiasi stato che dipenda dalle voci selezionate nel percorso classi corrente.

Personalizzazione di una pagina della procedura guidata

Utilizzando le pagine precostituite, è possibile inserire le pagine della procedura guidata in sottoclassi per aggiungere i propri campi di input oppure per influenzare la generazione del codice. Per personalizzare una procedura guidata anziché inserire nella sottoclasse le classi concrete, è necessario utilizzare le classi astratte presenti nella gerarchia NewElementWizardPage .

Di seguito è riportato l'esempio di una pagina di procedura guidata di un nuovo tipo che viene personalizzata per la creazione di classi di tipi di verifica JUnit. La pagina inizializza il campo di superclasse con "junit.framework.TestCase" e aggiunge una casella di controllo che controlla se creare gli stub di metodo per i metodi setUp() e tearDown().

public class TestCaseWizardPage extends NewTypeWizardPage {
    	private Button fCreateStubs;

    	public TestCaseWizardPage() {
        		super(true, "TestCaseWizardPage");
    }

    /**
     * The wizard managing this wizard page must call this method
     * during initialization with a corresponding selection.
     */   
    	public void init(IStructuredSelection selection) {
        		IJavaElement jelem= getInitialJavaElement(selection);
        		initContainerPage(jelem);
        		initTypePage(jelem);
        doStatusUpdate();
    }

    private void doStatusUpdate() {
        // define the components for which a status is desired
        		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);

        // Create the standard input fields
        		createContainerControls(composite, nColumns);
        		createPackageControls(composite, nColumns);
        		createSeparator(composite, nColumns);
        		createTypeNameControls(composite, nColumns);
        		createSuperClassControls(composite, nColumns);

        // Create the checkbox controlling whether we want stubs
        		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);

        // Initialize the super type field and mark it as read-only
        		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); 
        }
   }
}