Das Paket org.eclipse.jdt.ui.wizards stellt Assistentenseiten für die Erstellung und Konfiguration von Java-Elementen bereit. Hierbei werden Ihnen vorgefertigte Seiten zur Verfügung gestellt.
JavaCapabilityConfigurationPage unterstützt die Bearbeitung der Einstellungen für die Java-Erstellung (Quellenordnerkonfiguration, exportierte Bibliotheken sowie Projekte und Bibliotheken, auf die verwiesen wird).
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).
Eine Hierarchie von Assistentenseiten unterstützt die Erstellung neuer Java-Elemente.
Die abstrakte Klasse NewElementWizardPage definiert die Basisoperation des Assistenten. Zusätzliche abstrakte Klassen werden in der Hierarchie zur Verfügung gestellt, damit eine Anpassung an die Funktionen erfolgen kann, die von den konkreten Assistenten bereitgestellt werden.
Die konkreten Erstellungsassistenten können direkt verwendet werden und sollten generell nicht als Unterklasse definiert werden.
Die SchnittstelleIClasspathContainerPage definiert eine Struktur, mit deren Hilfe eine Assistentenseite ergänzt werden kann, auf der ein Benutzer einen neuen Eintrag für einen Klassenpfadcontainer definieren oder einen vorhandenen Eintrag bearbeiten kann. Falls in Ihrem Plug-in ein eigener Klassenpfadcontainertyp unter Verwendung des JDT-Kernerweiterungspunktesorg.eclipse.jdt.core.classpathContainerInitializer definiert ist, ist es wahrscheinlich sinnvoll, eine entsprechende Assistentenseite für die Bearbeitung und Erstellung von Klassenpfadcontainern dieses Typs zu definieren.
Die Befehlskonfiguration Ihres Plug-ins sollte eine Erweiterung org.eclipse.jdt.ui.classpathContainerPage angeben. In der Erweiterungskonfiguration geben Sie den Namen der Klasse an, dieIClasspathContainerPage implementiert. Falls Sie zusätzliche Informationen über den Kontext eines Klassenpfades bei dessen Auswahl in der Assistentenseite angeben wollen, können Sie IClasspathContainerPageExtension implementieren. Hierdurch wird jeder Status initialisiert, der von den Einträgen abhängig ist, die im aktuellen Klassenpfad ausgewählt sind.
Neben der Verwendung der vorgefertigten Seiten können Sie die Assistentenseiten als Unterklassen definieren, um eigene Eingabefelder hinzuzufügen oder die Codegenerierung zu beeinflussen. Zur Anpassung eines Assistenten sollten Sie die abstrakten Klassen in der Hierarchie von NewElementWizardPage verwenden, statt die konkreten Klassen als Unterklassen zu definieren.
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"); } /** * 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); } } }