Dieses Beispiel veranschaulicht, wie eine benutzerdefinierte Projektgattung zu einem Unterprojekt hinzugefügt wird. Das Vorhandensein oder Nichtvorhandensein der Projektgattung kann anschließend zur Steuerung der Sichtbarkeit von Menüpunkten verwendet werden.
Um dem Unterprojekt die Beispielprojektgattung hinzuzufügen, klicken Sie mit der rechten Maustaste auf das Unterprojekt und wählen Sie die Aktion API-Beispielaktionen > Projektgattung hinzufügen aus.
Unterprojektgattungen in Rational Developer for System z ähneln dem Konzept nach IProjectNature in der Eclipse-Basisversion. Sie bieten die Möglichkeit, ferne Unterprojekte auf der Basis der Funktionalität zu unterscheiden, die für jedes Unterprojekt aktiviert werden kann.
Wenn Sie eine benutzerdefinierte Projektgattung für ein fernes Unterprojekt definieren möchten, müssen Sie eine Klasse erstellen, die die Schnittstelle ILogicalSubProjectNature implementiert. Daher enthält die Klasse SampleNature den folgenden Code:
public class SampleNature implements ILogicalSubProjectNature {
......
}
Die Schnittstelle ILogicalSubProjectNature ist relativ einfach gehalten. Fügen Sie in SampleNature einfach ein privates Feld project für die Projekteigenschaft hinzu.
Sie finden den vollständigen Quellcode in SampleNature.java.
Deklarieren Sie die Klasse SampleNature auf folgende Weise im Plug-in-Manifest, um die Definition der Projektgattung abzuschließen:
<extension
id=“samplenature”
name=“
point=“com.ibm.ftt.projects.core.natures”>
<nature class=“com.ibm.ftt.api.samples.natures.SampleNature”/>
</extension>
In diesem Fragment wird eine Projektgattung mit der ID com.ibm.ftt.api.samples.samplenature definiert, die gebildet wird, indem die Erweiterungs-ID samplenature an die ID des für die Definition verwendeten Plug-ins com.ibm.ftt.api.samples angehängt wird.
Der Menüpunkt Projektgattung hinzufügen wird von der Klasse AddSubProjectNatureAction implementiert. Ihre Methode run(IAction) fügt SampleNature hinzu, indem sie die ID der Gattung an die Methode addNatureId(String) von ILogicalSubProject übergibt.
try {
getSubProject().addNatureId("com.ibm.ftt.api.samples.samplenature");
} catch (CoreException e) {
// TODO: in production code exception should be handled for real
e.printStackTrace();
}
Sie finden den vollständigen Quellcode in AddSubProjectNatureAction.java.
Die Aktion wird mithilfe der Standardergänzungsmechanismen von Eclipse hinzugefügt.
<objectContribution
adaptable=“false”
objectClass=“com.ibm.ftt.projects.core.logical.ILogicalSubProject”
id=“com.ibm.ftt.api.samples.addnature”>
<action
label=“
class=“com.ibm.ftt.api.samples.natures.AddSubProjectNatureAction”
id=“com.ibm.ftt.api.samples.addnatureaction”/>
</objectContribution>
Der Menüpunkt Projektgattung entfernen wird von der Klasse RemoveSubProjectNatureAction implementiert. Ihre Methode run(IAction) entfernt SampleNature, indem sie die ID der Gattung an die Methode removeNatureId(String) von ILogicalSubProject übergibt.
try {
getSubProject().removeNatureId(“com.ibm.ftt.api.samples.samplenature”);
} catch (CoreException e) {
// TODO: in production code exception should be handled for real
e.printStackTrace();
}
Sie finden den vollständigen Quellcode in RemoveSubProjectAction.java.
Die Aktion wird ähnlich wie der Menüpunkt Projektgattung hinzufügen mithilfe der Standardergänzungsmechanismen von Eclipse hinzugefügt. Es werden jedoch zusätzlich Aktionsfilter verwendet. Daher wird die Aktion Projektgattung entfernen nur angezeigt, wenn SampleNature dem betreffenden Projekt hinzugefügt wurde.
<objectContribution
adaptable=“false”
objectClass=“com.ibm.ftt.projects.core.logical.ILogicalSubProject”
id=“com.ibm.ftt.api.samples.removenature”>
<filter
value=“com.ibm.ftt.api.samples.samplenature”
name=“projectNature”/>
<action
label=“
class=“com.ibm.ftt.api.samples.natures.RemoveSubProjectNatureAction”
id=“com.ibm.ftt.api.samples.removenatureaction”/>
</objectContribution>