「ナビゲーター」ビューにメニュー項目を追加するマークアップの例
「ナビゲーター」ビューで、CARMA によって管理されるファイルに対して、メニュー項目が表示されるように定義する場合、次のマークアップを plugin.xml ファイルに含めることができます。
<extension point="org.eclipse.ui.popupMenus">
<objectContribution
id="com.ibm.carma.action.disconnected.iFile"
objectClass="org.eclipse.core.resources.IFile"
adaptable="true">
<filter
name="projectPersistentProperty"
value="org.eclipse.team.core.repository=com.ibm.carma">
</filter>
<action
label="ABC Action"
class="com.xyz.ABCDelegate"
id="com.xyz.abc">
</action>
</objectContribution>
</extension>
objectContribution タグの objectClass 属性は、
org.eclipse.core.resources.IFile と指定されており、これは、このメニュー項目が「ナビゲーター」ビューのコンテキスト・メニューに表示されることを示していることに注目してください。
objectContribution タグの id 属性は、単にアクションの固有 ID です。
指定された filter タグは、「ナビゲーター」ビューで、CARMA によって管理されるファイルにのみメニュー項目を表示するよう制限します。
必要に応じてさらに filter タグを追加することもできます。
最後に、action タグは class 属性でオブジェクト代行クラスを指定します。 「CARMA リポジトリー」ビューにメニュー項目を追加するマークアップの例
「CARMA リポジトリー」ビューで、リソースにメニュー項目が表示されるように定義する場合、次のマークアップを plugin.xml ファイルに含めることができます。
<extension point="org.eclipse.ui.popupMenus">
<objectContribution
id="com.ibm.carma.action.disconnected.carmaContent"
objectClass="com.ibm.carma.model.CARMAContent
adaptable="true">
<filter
name="repositoryManager"
value="My RAM">
</filter>
<action
label="ABC Action"
class="com.xyz.ABCDelegate"
id="com.xyz.abc">
</action>
</objectContribution>
</extension>
ここでは、objectContribution タグの objectClass 属性が代わりに com.ibm.carma.model.CARMAContent と指定されており、これは、このメニュー項目が「CARMA リポジトリー」ビューのコンテキスト・メニューに表示されることを示します。
この例では、別のフィルターが使用されていることに注目してください。このフィルターは、「My RAM」という名前の RAM の下にあるリソースにのみ、メニュー項目が表示されるよう制限します。
filter タグの name 属性は、適用されるフィルターのタイプを指定するために使用されます。
name 属性の関連するその他の値については、CarmaActionFilter を参照してください。
最後に、action タグは class 属性でオブジェクト代行クラスを指定します。ABCDelegate のコードの例
次のコードを、独自のオブジェクト代行を作成するための開始点として使用できます。public class ABCDelegate extends CarmaObjectActionDelegate {
public void run(IAction action) {
CARMAContent[] members = (CARMAContent[]) getSelectedCarmaResources().toArray(new CARMAContent[0]);
//perform task, schedule job, etc.
}
public void selectionChanged(IAction action, ISelection selection) {
super.selectionChanged(action, selection);
//this is the ID assigned by the installation of the action
action.setEnabled(!isUnsupported("101"));
}
}
上記の run メソッドの 1 行目は、アクションを実行するために使用できる、選択された CARMA リソースの配列を取得します。 例えば、選択されたリソースすべてをループして、特定のメタデータ・プロパティーを設定できます。 オーバーライドする必要があるのは run メソッドのみであったとしても、上の例で示されているように、アクションの可用性を更新するために selectionChanged メソッドをオーバーライドすることが推奨されます。
この例で定義されているように、selectionChanged は CarmaObjectActionDelegate の isUnsupported ヘルパー関数を使用して、アクション ID が 101 であるアクションがオブジェクトの新規選択によりサポートされている場合に、このアクションを使用可能にします。 101 という値は、サンプル・コードにハードコーディングされていますが、アクションの名前が既知の場合は、アクション ID を動的に解決できます。 単純に適切な RepositoryManager オブジェクトの getActions メソッドを使用して、その RAM で使用可能なアクションのリストを取得し、リスト内を検索してアクションの名前に基づいて適切なアクションを検索してから、getActionId メソッドを使用して対応する Action オブジェクトからアクション ID を取得します。使用するアクションのアクション ID が不明な場合は、このより動的なメソッドを使用して ID を解決できます。