Rational Developer for System z

提出動作

可以將動作新增至「CARMA 儲存庫」視圖快速功能表,以讓該動作可在 CARMA 資源上執行。

開始之前

在可以提出 CARMA 動作之前,必須具有適當的基礎以延伸 Rational Developer for System z CARMA 外掛程式。如需如何開始開發外掛程式延伸的相關資訊,請參閱 Eclipse Platform Plug-in Developer Guide

關於這項作業

若要將 CARMA 動作提出至 Rational Developer for System z CARMA 外掛程式,請遵循下列步驟:

程序

  1. 更新 plugin.xml 檔,以利用 org.eclipse.ui.popupMenus 延伸點,為實作 IResourceCARMAContent 介面的資源定義物件委派類別。 可指定的兩種共用資源介面是 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,因為此類別包含許多有用的 helper 函數。

    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 方法的第一行取得一組選定 CARMA 資源,隨後可使用該組資源來執行動作。例如,可迴路通過所有選定資源並設定某些 meta 資料內容。雖然實際上您只需要置換 run 方法,但是您可能會發現,如上方範例所示置換 selectionChanged 方法來更新動作的可用性也很有用。

    如範例中的定義所示,selectionChanged 使用 CarmaObjectActionDelegateisUnsupported helper 函數,來啟用動作識別碼為 101 的動作(如果物件的新選項支援該動作的話)。雖然值 101 寫在程式碼範例中,但是如果動作的名稱已知,則可以動態解析動作識別碼。只需使用適當的 RepositoryManager 物件的 getActions 方法,來擷取可用於該 RAM 的動作清單,根據動作的名稱搜尋整個清單以找出適當的動作,然後使用 getActionId 方法從對應的 Action 物件擷取動作識別碼。如果您不確定動作的動作識別碼,則可以使用此更動態的方法來解析 ID。

使用條款 | 意見

本資訊中心採用 Eclipse 技術。(http://www.eclipse.org)