Durch Projektgattungen kann ein Plug-in ein Projekt mit einer bestimmten Projektgattung kennzeichnen. JDT (Java Development Tools - Java-Entwicklungstools) verwendet beispielsweise eine Gattung "Java", um Projekten ein Java-spezifisches Verhalten hinzuzufügen.
Gattungen werden für jedes Projekt separat installiert und werden beim Hinzufügen zu einem Projekt automatisch konfiguriert. Wenn sie entfernt werden, werden sie dekonfiguriert. Einem Projekt können mehrere Gattungen zugeordnet sein.
Wenn Sie eine eigene Gattung implementieren wollen, müssen Sie eine Erweiterung definieren und eine Klasse zur Verfügung stellen, die die Schnittstelle IProjectNature implementiert.
Am Erweiterungspunkt org.eclipse.core.resources.natures können Sie eine Definition für eine Projektgattung hinzufügen. Die folgende Formatierung fügt dem fiktiven Plug-in com.example.natures eine Gattung hinzu:
<extension
point="org.eclipse.core.resources.natures"
id="mynature"
name="My Nature">
<runtime>
<run class="com.example.natures.MyNature">
</run>
</runtime>
</extension>
Die in der Erweiterung angegebene Klasse muss die Plattformschnittstelle IProjectNature implementieren. Diese Klasse implementiert ein Plug-in-spezifisches Verhalten für die Zuordnung von gattungsspezifischen Informationen zu einem Projekt, wenn die Gattung konfiguriert ist.
public class MyNature implements IProjectNature {
private IProject project;
public void configure() throws CoreException {
// Gattungsspezifische Informationen für das Projekt
// hinzufügen, z. B. Erstellungsprogramm zur
// Erstellungsspezifikation eines Projekts
}
public void deconfigure() throws CoreException {
// Gattungsspezifische Informationen hier entfernen.
}
public IProject getProject() {
return project;
}
public void setProject(IProject value) {
project = value;
}
}
Die Methoden configure() und deconfigure() werden durch die Plattform gesendet, wenn Gattungen zu einem Projekt hinzugefügt oder aus diesem entfernt werden. Sie können die Methode configure() implementieren, um ein Erstellungsprogramm zu einem Projekt hinzuzufügen. Dies wird unter Erstellungsprogramme erläutert.
Sobald Sie die Gattung definiert und ihre Klasse implementiert haben, müssen Sie die Gattung zu einem Projekt zuordnen. Der folgende Ausschnitt ordnet die neue Gattung zu einem vorhandenen Projekt zu.
try {
IProjectDescription description = project.getDescription();
String[] natures = description.getNatureIds();
String[] newNatures = new String[natures.length + 1];
System.arraycopy(natures, 0, newNatures, 0, natures.length);
newNatures[natures.length] = "com.example.natures.mynature";
description.setNatureIds(newNatures);
project.setDescription(description, null);
} catch (CoreException e) {
// Ein Fehler ist aufgetreten
}
Die für die Gattung verwendete Kennung ist der vollständig qualifizierte Name (Plug-in-ID + Erweiterungs-ID) der Gattungserweiterung.
Gattungen werden normalerweise zu einem Projekt hinzugefügt, während es erstellt wird. In der Regel stellen Sie einen angepassten Assistenten für neue Projekte zur Verfügung, der die speziellen Informationen über ein Projekt erfasst und dann die Gattung entsprechend zuordnet.