Rational Developer para System z, Versão 7.6

Contribuindo com uma Ação

Você pode incluir uma ação no menu de contexto da visualização Repositórios do CARMA (CARMA Repositories), para que essa ação possa ser executada nos recursos do CARMA.

Antes de Iniciar

Antes de contribuir com uma ação do CARMA, é necessário ter a base adequada para estender o plug-in CARMA do Rational Developer para System z. Consulte o Eclipse Platform Plug-in Developer Guide para obter informações sobre como começar a desenvolver uma extensão de plug-in.
Por Que e Quando Desempenhar Esta Tarefa
Para contribuir com uma ação do CARMA para o plug-in CARMA do Rational Developer para System z, execute as seguintes etapas:
  1. Atualize seu arquivo plugin.xml para utilizar o ponto de extensão org.eclipse.ui.popupMenus para definir uma classe de objeto delegada para recursos que implementam a interface IResource ou CARMAContent. Duas interfaces de recursos comuns que podem ser especificadas são IFile (que estende a interface IResource) e CARMAContent. Especificar IFile como a classe de objeto de recursos faz com que o item de menu apareça no menu de contexto na visualização do Navegador, no conteúdo do projeto local, enquanto que especificar o CARMAContent como a classe do objeto do recurso faz com que o item de menu apareça no menu de contexto na visualização Repositórios do CARMA.

    Exemplo demarcação para incluir um item de menu na visualização Navegador (Navigator):

    Você pode incluir a seguinte marcação no arquivo plugin.xml, se desejar definir um item de menu para aparecer para arquivos gerenciados por CARMA na visualização Navegador (Navigator):

    <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>
    Observe que o atributo objectClass da tag objectContribution é especificado como sendo org.eclipse.core.resources.IFile, indicando que esse item de menu deve aparecer no menu de contexto para a visualização Navegador (Navigator). O atributo id da tag objectContribution é simplesmente um identificador exclusivo para sua ação. A tag filter especificada limita o item de menu para que apareça apenas para aqueles arquivos na visualização Navegador (Navigator), que são gerenciados pelo CARMA. Você também pode incluir tags filter adicionais, se necessário. Finalmente, a tag action especifica o objeto delegado no atributo class.

    Exemplo de marcação para incluir um item de menu na visualização Repositórios do CARMA (CARMA Repositories):

    Você pode incluir a seguinte marcação no arquivo plugin.xml, se desejar definir um item de menu para que apareça para os recursos na visualização Repositórios do CARMA (CARMA Repositories):

    <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>
    Aqui, o atributo objectClass da tag objectContribution é especificado como sendocom.ibm.carma.model.CARMAContent, indicando que esse item de menu deve aparecer no menu de contexto para a visualização Repositórios do CARMA. Observe que um filtro diferente é utilizado neste exemplo: Esse filtro limita o item de menu para aparecer apenas para recursos sob o RAM denominado "My RAM". O atributo name da tag filter é utilizado para especificar o tipo de filtro que está sendo aplicado. Consulte CarmaActionFilter para obter outros valores relevantes para o atributo name. Finalmente, a tag action especifica o objeto delegado no atributo class.
  2. Defina a classe de objeto delegado implementando a interface IObjectActionDelegate ou estendendo CarmaObjectActionDelegate (uma classe conveniente que implementa a interface IObjectActionDelegate). Recomenda-se que a classe de objeto delegado estenda CarmaObjectActionDelegate, visto que essa classe contém várias funções de auxílio úteis.

    Código de exemplo para ABCDelegate:

    Você pode utilizar o seguinte código como ponto inicial para o desenvolvimento de seu próprio objeto delegado:
    public class ABCDelegate extends CarmaObjectActionDelegate {
    
            	public void run(IAction action) {
                    		CARMAContent[] members = (CARMAContent[]) getSelectedCarmaResources().toArray(new CARMAContent[0]);
    
                    		//desempenhar tarefa, planejar tarefa, etc.
            }
    
            	public void selectionChanged(IAction action, ISelection selection) {
                    		super.selectionChanged(action, selection);
    
                    		//esse é o ID designado pela instalação da ação
                    		action.setEnabled(!isUnsupported("101"));
            }
    }

    A primeira linha no método run acima obtém uma matriz dos recursos do CARMA selecionados, que você pode então utilizar para desempenhar sua ação. Você deve, por exemplo, efetuar loop por todos os recursos selecionados e configurar determinadas propriedades de metadados. Apesar de ser realmente necessário substituir o método run, também pode ser útil substituir o método selectionChanged para atualizar a disponibilidade da ação, como mostrado no exemplo acima.

    Como definido no exemplo, selectionChanged utiliza a função auxiliar isUnsupported de CarmaObjectActionDelegate para ativar a ação com um ID de ação 101, se a nova seleção dos objetos suportar a ação. Apesar de um valor 101 ser codificado permanentemente no código de exemplo, é possível resolver o ID da ação dinamicamente, se o nome da ação for conhecido. Simplesmente use o método getActions do objeto RepositoryManager apropriado para recuperar uma lista de ações disponíveis para o RAM, buscar pela lista para localizar a ação apropriada, com base no nome da ação e, em seguida, utilizar o método getActionId para recuperar o ID da ação do objeto Action correspondente. Você pode resolver o ID utilizando esse método mais dinâmico, se não estiver certo de qual é o ID de sua ação.

Termos de Uso | Feedback

Este centro de informações é desenvolvido pela tecnologia Eclipse. (http://www.eclipse.org)