このサンプルは、カスタム・プロジェクト・ネーチャーをサブプロジェクトに追加する方法を示します。プロジェクト・ネーチャーが存在するか存在しないかによって、メニュー項目の可視性を制御できます。
サンプル・プロジェクト・ネーチャーをサブプロジェクトに追加するには、サブプロジェクトを右クリックして、「API サンプル・アクション」->「プロジェクト・ネーチャーの追加」アクションを選択します。
Rational® Developer for System z® のサブプロジェクト・ネーチャーは、ベース Eclipse の IProjectNature に概念が似ています。これらは、サブプロジェクトごとに使用可能な機能に基づいてそれぞれのリモート・サブプロジェクトを区別する手段を提供します。
リモート・サブプロジェクト用のカスタム・プロジェクト・ネーチャーを定義するには、ILogicalSubProjectNature インターフェースを実装するクラスを作成する必要があります。 したがって、SampleNature クラスには、以下のコードが含まれます。
public class SampleNature implements ILogicalSubProjectNature {
......
}
ILogicalSubProjectNature インターフェースは、比較的簡単です。SampleNature では、プロジェクト・プロパティーの専用フィールド project を追加するだけです。
完全なソース・コードは、SampleNature.java で参照できます。
プロジェクト・ネーチャーの定義を完了するには、以下のようにプラグイン・マニフェストで SampleNature クラスを宣言します。
<extension
id=“samplenature”
name=“
point=“com.ibm.ftt.projects.core.natures”>
<nature class=“com.ibm.ftt.api.samples.natures.SampleNature”/>
</extension>
このスニペットは、ID が com.ibm.ftt.api.samples.samplenature であるプロジェクト・ネーチャーを定義します。この ID は、拡張 ID samplenature を定義プラグイン com.ibm.ftt.api.samples の ID に付加することで取得されます。
「プロジェクト・ネーチャーの追加」メニュー項目は、AddSubProjectNatureAction クラスによって実装されます。 その run(IAction) メソッドは、ネーチャーの ID を ILogicalSubProject の addNatureId(String) メソッドに渡すことによって、SampleNature を追加します。
try {
getSubProject().addNatureId("com.ibm.ftt.api.samples.samplenature");
} catch (CoreException e) {
// TODO: in production code exception should be handled for real
e.printStackTrace();
}
完全なソース・コードは、AddSubProjectNatureAction.java で参照できます。
アクションは、標準の Eclipse の機構を使用して提供されます。
<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>
「プロジェクト・ネーチャーの除去」メニュー項目は、RemoveSubProjectNatureAction クラスによって実装されます。 その run(IAction) メソッドは、ネーチャーの ID を ILogicalSubProject の RemoveNatureId(String) メソッドに渡すことによって、SampleNature を削除します。
try {
getSubProject().removeNatureId(“com.ibm.ftt.api.samples.samplenature”);
} catch (CoreException e) {
// TODO: in production code exception should be handled for real
e.printStackTrace();
}
完全なソース・コードは、RemoveSubProjectAction.java で参照できます。
アクションは、標準の Eclipse の機構を使用して提供されます。これは、アクション・フィルターを追加して使用する場合の「プロジェクト・ネーチャーの追加」メニュー項目に似ています。これにより、「プロジェクト・ネーチャーの除去」アクションは、SampleNature が該当プロジェクトに追加された場合にのみ表示されます。
<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>