Rational Developer for System z

アクションの提供

アクションを「CARMA リポジトリー」ビューのコンテキスト・メニューに追加して、CARMA リソース上でそのアクションを実行できるようにすることができます。

始める前に

CARMA アクションを提供するには、Rational Developer for System z CARMA プラグインを拡張するための適切な基盤が必要です。プラグイン拡張の作成を開始する方法については、Eclipse Platform Plug-in Developer Guide を参照してください。

このタスクについて

Rational Developer for System z CARMA プラグインへ CARMA アクションを提供するには、次の手順を実行します。

手順

  1. plugin.xml ファイルを更新して、IResource インターフェースまたは CARMAContent インターフェースを実装するリソースのオブジェクト代行クラスを定義する org.eclipse.ui.popupMenus 拡張ポイントを利用するようにします。 指定可能な 2 つの一般的なリソース・インターフェースは、IFile (IResource インターフェースを拡張する)、および CARMAContent です。IFile をリソース・オブジェクト・クラスとして指定すると、ローカル・プロジェクト・コンテンツ上の「ナビゲーター」ビューのコンテキスト・メニューにメニュー項目が表示されます。一方、CARMAContent をリソース・オブジェクト・クラスとして指定すると、「CARMA リポジトリー」ビューのコンテキスト・メニューにメニュー項目が表示されます。

    「ナビゲーター」ビューにメニュー項目を追加するマークアップの例

    「ナビゲーター」ビューで、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 属性でオブジェクト代行クラスを指定します。
  2. IObjectActionDelegate インターフェースを実装するか、CarmaObjectActionDelegate (IObjectActionDelegate インターフェースを実装する便利なクラス) を拡張して、オブジェクト代行クラスを定義します。 オブジェクト代行クラスには便利なヘルパー関数が多数含まれているため、このクラスで CarmaObjectActionDelegate を拡張することが推奨されます。

    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 メソッドをオーバーライドすることが推奨されます。

    この例で定義されているように、selectionChangedCarmaObjectActionDelegateisUnsupported ヘルパー関数を使用して、アクション ID が 101 であるアクションがオブジェクトの新規選択によりサポートされている場合に、このアクションを使用可能にします。 101 という値は、サンプル・コードにハードコーディングされていますが、アクションの名前が既知の場合は、アクション ID を動的に解決できます。 単純に適切な RepositoryManager オブジェクトの getActions メソッドを使用して、その RAM で使用可能なアクションのリストを取得し、リスト内を検索してアクションの名前に基づいて適切なアクションを検索してから、getActionId メソッドを使用して対応する Action オブジェクトからアクション ID を取得します。使用するアクションのアクション ID が不明な場合は、このより動的なメソッドを使用して ID を解決できます。

ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)