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.
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 plug-in utilizzato configurandolo con la natura Java e altre funzioni del progetto Java, è necessario utilizzare questa pagina (anziché la sottoclasse NewJavaProjectWizardPage).
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.
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 plug-in è 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 plug-in deve fornire un'estensione org.eclipse.jdt.ui.classpathContainerPage. Nel 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.
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 test 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"); } /** * La procedura guidata che gestisce questa pagina della procedura guidata deve richiamare questo metodo * durante l'inizializzazione con una selezione corrispondente. */ public void init(IStructuredSelection selection) { IJavaElement jelem= getInitialJavaElement(selection); initContainerPage(jelem); initTypePage(jelem); doStatusUpdate(); } private void doStatusUpdate() { // definire i componenti per cui si desidera uno stato 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); // Creare i campi di input standard createContainerControls(composite, nColumns); createPackageControls(composite, nColumns); createSeparator(composite, nColumns); createTypeNameControls(composite, nColumns); createSuperClassControls(composite, nColumns); // Creare la casella che controlla se inserire stub 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); // Inizializzare il campo del supertipo e contrassegnarlo come campo di sola lettura 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); } } }