Rational Developer for System z V7.6.1

添加操作

可将操作添加至“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 属性仅为操作的唯一标识。指定的 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 属性用来指定要应用的过滤器的类型。请参阅 CarmaActionFilter 以获取有关 name 属性的其他相关值。最后,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 方法中的第一行获取所选 CARMA 资源的数组,随后可以使用该数组来执行操作。例如,您可对全部的所选资源进行循环并设置某些元数据属性。虽然,您实际上仅需要覆盖 run 方法,但是还可发现当覆盖 selectionChanged 方法以更新操作的可用性(如以上示例中显示)时它很有用。

    如示例中所定义,selectionChanged 使用 CarmaObjectActionDelegateisUnsupported 辅助函数来启用操作标识为 101 的操作(如果对象的新选择支持该操作)。虽然,值 101 硬编码为示例代码,但是当操作的名称已知时,可动态地对操作标识进行解析。仅使用相应 RepositoryManager 对象的 getActions 方法来检索对于该 RAM 可用的操作的列表,搜索该列表以根据操作的名称找到相应操作,然后使用 getActionId 方法来从对应 Action 对象检索操作标识。如果不确定该操作的操作标识是什么,那么可使用此较动态的方法来解析该标识。

使用条款 | 反馈

本信息中心基于 Eclipse 技术。(http://www.eclipse.org)