Rational Developer for System z

Contribución a una acción

Puede añadir una acción al menú contextual de la vista Repositorios de CARMA de forma que la acción se pueda ejecutar en los recursos de CARMA.

Antes de empezar

Antes de contribuir a una acción de CARMA, debe disponer de los fundamentos adecuados para ampliar el plug-in de CARMA de Rational Developer for System z. Consulte la publicaciónEclipse Platform Plug-in Developer Guide si desea información sobre cómo comenzar a desarrollar una extensión de plug-in.

Acerca de esta tarea

Para contribuir a una acción de CARMA en el plug-in de CARMA de Rational Developer for System z, siga estos pasos:

Procedimiento

  1. Actualice el archivo plugin.xml para utilizar el punto de extensión org.eclipse.ui.popupMenus con el fin de definir una clase delegada de objeto para los recursos que implementan la interfaz IResource o CARMAContent. Dos de las interfaces de recursos comunes que puede especificar son IFile (que amplía la interfaz IResource) y CARMAContent. Si especifica IFile como clase de objeto de recursos hace que el elemento de menú aparezca en el menú contextual de la vista Navegador, en el contenido del proyecto local, mientras que si especifica CARMAContent como clase de objeto de recursos hace que el elemento de menú aparezca en el menú contextual de la vista Repositorios de CARMA.

    Marcación de ejemplo para añadir un elemento de menú a la vista Navegador:

    Podría incluir la marcación siguientes en su archivo plugin.xml si va a definir un elemento de menú para que aparezca para los archivos gestionados por CARMA en la vista Navegador:

    <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>
    Fíjese que el atributo objectClass del código objectContribution se ha especificado para que seaorg.eclipse.core.resources.IFile, lo cual indica que este elemento de menú debería aparecer en el menú contextual para la vista Navegador. El atributo id del código objectContribution no es más que un identificador exclusivo para su acción. El código filter especificado limita el elemento de menú para que solamente aparezca para aquellos archivos de la vista Navegador gestionados por CARMA. También puede añadir códigos filter adicionales según convenga. Finalmente, el código action especifica la clase delegada de objeto en este atributo class.

    Marcación de ejemplo para añadir un elemento de menú a la vista Repositorios de CARMA:

    Podría incluir la marcación siguiente en su archivo plugin.xml si va a definir un elemento de menú para que aparezca en la vista Repositorios de CARMA:

    <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>
    Aquí, el atributo objectClass del código objectContribution se especifica en lugar de com.ibm.carma.model.CARMAContent, lo cual indica que este elemento de menú debería aparecer en el menú contextual para la vista Repositorios de CARMA. Fíjese que se utiliza un filtro distinto en este ejemplo: este filtro limita el elemento de menú para que solamente aparezca para recursos bajo un RAM denominado "My RAM". El atributo name del código filter se utiliza para especificar el tipo de filtro que se va a aplicar. Consulte CarmaActionFilter si desea otros valores importantes para el atributo name. Finalmente, el código action especifica la clase delegada de objeto en este atributo class.
  2. Defina su clase delegada de objeto implementando la interfaz IObjectActionDelegate o ampliando CarmaObjectActionDelegate (una clase para su comodidad que implementa la interfaz IObjectActionDelegate). Se recomienda ampliar la clase delegada de objeto CarmaObjectActionDelegate, puesto que esta clase contiene muchas funciones del ayudante útiles.

    Código de ejemplo para ABCDelegate:

    Puede utilizar el código siguiente como punto de partida para desarrollar su propio delegado de objeto:
    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"));
            }
    }

    La primera línea del método run anterior contiene una matriz de los recursos de CARMA seleccionados, que seguidamente podrá utilizar para llevar a cabo su acción. Por ejemplo, puede moverse en círculo por todos los recursos seleccionados y establecer determinadas propiedades de metadatos. Aunque solamente tenga que alterar temporalmente el método run, puede que también le resulte útil alterar temporalmente el método selectionChanged para actualizar la disponibilidad de su acción tal como muestra el ejemplo anterior.

    Según se define en el ejemplo, selectionChanged utiliza la función de ayudante isUnsupported de CarmaObjectActionDelegate para permitir la acción con un ID de acción de 101 si la nueva selección de objetos da soporte a la acción. Aunque un valor de 101 esté codificado en el código del ejemplo, es posible resolver el ID de acción dinámicamente si se sabe el nombre de la acción. Basta con utilizar el método getActions del objeto RepositoryManager correspondiente para recuperar una lista de las acciones disponibles para ese RAM, buscara en la lista la correspondiente acción en base al nombre de la acción y, a continuación, utilizar el método getActionId para recuperar el ID de la acción a partir del objeto Action correspondiente. Puede resolver el ID utilizando este método más dinámico si no está seguro de cuál es +el ID de acción.

Términos de uso | Comentarios

Este Information Center está basado en tecnología Eclipse. (http://www.eclipse.org)