Rational Developer for System z

Aktionen und Eigenschaftenseiten nach Projektgattung filtern

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.

Beispielszenario

Erstellen Sie ein neues z/OS-Projekt und ein neues MVS-Unterprojekt nach den Anweisungen in den folgenden Themen:

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.

Erläuterung des Beispielcodes

Definition der Unterprojektgattung

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.

Projektgattung hinzufügen

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>

Projektgattung entfernen und nach Projektgattungen gefilterte Menüpunkte hinzufügen

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>

Nutzungsbedingungen | Feedback

Dieses Information Center basiert auf Eclipse-Technologie (http://www.eclipse.org).