Das Paket org.eclipse.jdt.ui.wizards stellt Assistentenseiten zum Erstellen und Konfigurieren von Java-Elementen zur Verfügung. Mehrere vorgefertigte Seiten werden zur Nutzung bereitgestellt.
JavaCapabilityConfigurationPage unterstützt die Bearbeitung von Einstellungen für Java-Erstellungsprogramme (Einrichten des Quellenordners, Projekte, auf die verwiesen wird, Bibliotheken, auf die verwiesen wird und exportierte Bibliotheken).
Wenn Sie einen Assistenten bereitstellen müssen, der ein Projekt für Ihr Plug-in konfiguriert und außerdem die Java-Gattung sowie andere Java-Projekteigenschaften definiert, sollten Sie diese Seite verwenden (statt NewJavaProjectWizardPage als Unterklasse zu definieren).
Die Hierarchie der Assistentenseite unterstützt die Erstellung von neuen Java-Elementen.
NewElementWizardPage ist die abstrakte Klasse, die die Basisoperation des Assistenten definiert. Zusätzliche abstrakte Klasse werden in der Hierarchie bereitgestellt, um Anpassungen an die Funktionalität vorzunehmen, die von den konkreten Assistenten zur Verfügung gestellt werden.
Die konkreten Erstellungsassistenten können direkt verwendet werden und sind in der Regel nicht für Subklassen vorgesehen.
Die Schnittstelle IClasspathContainerPage definiert eine Struktur, um eine Assistentenseite hinzuzufügen, die einem Benutzer das Definieren eines neuen Klassenpfadcontainereintrags oder das Bearbeiten eines vorhandenen Klassenpfadcontainereintrags ermöglicht. Wenn für Ihr Plug-in ein eigener definierter Typ von Klassenpfadcontainer mit Hilfe des Erweiterungspunkts für den JDT-Kern org.eclipse.jdt.core.classpathContainerInitializer definiert wurde, müssen Sie möglicherweise eine entsprechende Assistentenseite zum Bearbeiten und Erstellen von Klassenpfadcontainern dieses Typs definieren.
Die Befehlskonfiguration Ihres Plug-ins sollte die Erweiterung org.eclipse.jdt.ui.classpathContainerPage angeben. In der Erweiterungskonfiguration geben Sie den Namen Ihrer Klasse an, die IClasspathContainerPage implementiert. Wenn Sie bei der Auswahl auf Ihrer Assistentenseite weitere Informationen über den Kontext des Klassenpfads benötigen, können Sie IClasspathContainerPageExtension implementieren. Wenn Ihre Konfigurationsseite beim Hinzufügen mehr als einen Eintrag zurückgeben will, implementieren Sie IClasspathContainerPageExtension2.
Neben der Verwendung von vorgefertigten Seiten haben Sie die Möglichkeit, die Assistentenseiten als Unterklassen zu definieren und Ihre eigenen Eingabefelder hinzuzufügen oder die Codegenerierung zu beeinflussen. Sie sollten die abstrakte Klasse in der Hierarchie NewElementWizardPage verwenden, um einen Assistenten anzupassen und keine Unterklassenbildung für konkrete Klassen zulassen.
Nachfolgend ist ein Beispiel für eine Assistentenseite aufgeführt, die für die Erstellung von Anwendungsbeispielklassen für JUnit angepasst wurde.
Die Seite initialisiert das Feld für die Superklasse mit der Angabe "junit.framework.TestCase"
und fügt ein Markierungsfeld hinzu, mit dem gesteuert wird, ob für die Methode setUp()
und tearDown()
Methodenstubs erstellt werden.
public class TestCaseWizardPage extends NewTypeWizardPage { private Button fCreateStubs; public TestCaseWizardPage() { super(true, "TestCaseWizardPage"); } /** * Der Assistent, der diese Assistentenseite verwaltet, muss diese * Methode bei der Initialisierung mit einer entsprechenden Auswahl aufrufen. */ public void init(IStructuredSelection selection) { IJavaElement jelem= getInitialJavaElement(selection); initContainerPage(jelem); initTypePage(jelem); doStatusUpdate(); } private void doStatusUpdate() { // Definieren Sie die Komponenten, für die ein Status erwünscht ist 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); // Erstellen Sie die Standardeingabefelder createContainerControls(composite, nColumns); createPackageControls(composite, nColumns); createSeparator(composite, nColumns); createTypeNameControls(composite, nColumns); createSuperClassControls(composite, nColumns); // Erstellen Sie das Markierungsfeld dafür, ob Stubs erwünscht sind 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); // Das Supertypfeld initialisieren und als schreibgeschützt markieren 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 tearDown() {}"; newType.createMethod(tearDownMathod, null, false, null); } } }