Configuração do Visualizador Comum

org.eclipse.ui.navigator.viewer

3.2

O elemento viewer define a configuração para um visualizador comum. A extensão pode fornecer um id de menu pop-up personalizado, substituir se o visualizador fornece link com suporte de editor, fornece um diálogo de filtro e/ou um diálogo de "Customizações Disponíveis". Além disso, elementos de configuração aninhados recebem controle total sobre a estrutura e o comportamento do menu de contexto pop-up.

viewerContentBinding liga extensões de conteúdo definidas (por meio do ponto de extensão navigatorContent) aos visualizadores (definidos por meio do ponto de extensão org.eclipse.ui.views). Qualquer extensão de conteúdo ligada a um visualizador é descrita como visível. Um serviço de conteúdo (org.eclipse.ui.navigator.INavigatorContentService) não retornará nenhuma extensão que não seja visível para seu id de visualizador.

<!ELEMENT extension (viewer* , viewerContentBinding* , viewerActionBinding* , dragAssistant)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT viewer (popupMenu? , options?)>

<!ATTLIST viewer

viewerId    CDATA #REQUIRED

popupMenuId CDATA #IMPLIED>

Fornece a configuração básica para estabelecer as características de um visualizador. Os clientes também devem definir uma extensão org.eclipse.ui.views para criar a parte da visualização.



<!ELEMENT viewerContentBinding (includes? , excludes?)>

<!ATTLIST viewerContentBinding

viewerId CDATA #REQUIRED>

Os clientes devem definir um ou mais elementos viwerContentBinding para descrever quais extensões de conteúdo e filtros comuns são visíveis ao visualizador. Uma extensão de conteúdo ou um filtro comum será visível se o id da extensão de conteúdo ou do filtro comum corresponder a uma instrução includes em um viewerContentBinding e não for excluída por uma instrução excludes. Se uma extensão de conteúdo ou um filtro comum não estiver visível a um visualizador, nunca será solicitado conteúdo da extensão por um serviço de conteúdo desse visualizador ou será apresentado ao usuário no diálogo de filtros disponíveis.

Os clientes podem definir um elemento includes para selecionar quais extensões são visíveis ao visualizador e de forma semelhante um elemento excludes para extensões que não devem ser tornadas visíveis ao visualizador. Os clientes podem ainda definir as extensões que devem ser consultadas explicitamente para elementos raiz (por meio de ITreeContentProvider.getElements()) pelo atributo "isRoot". Se um ou mais elementos contentExtension tiver "isRoot" definido como true na instrução includes, somente essas extensões serão consultadas para elementos raiz. O atributo "isRoot" não tem efeito para exclusões.

Um visualizador pode ter vários viewerContentBindings definidos, e suas instruções includes/excludes serão agregadas para produzir o comportamento final.



<!ELEMENT viewerActionBinding (includes? , excludes?)>

<!ATTLIST viewerActionBinding

viewerId CDATA #REQUIRED>

Os clientes devem definir quais provedores de ações são visíveis aos seus visualizadores. Os clientes podem definir um elemento includes para selecionar quais extensões são visíveis ao visualizador e de forma semelhante um elemento excludes para extensões que não devem ser tornadas visíveis ao visualizador.

Um visualizador pode ter vários viewerActionBindings definidos, e suas instruções includes/excludes serão agregadas para produzir o comportamento final.

Para definições actionProvider não aninhadas em uma definição navigatorContent, os clientes podem especificar um id personalizado. Se os clientes não especificarem um id, o id padrão será "org.eclipse.ui.navigator.actionProvider.X". Para clientes que desejam selecionar actionProviders sem id específico, os clientes devem definir um viewerActionBinding para o id padrão. Consulte a seção de exemplos de como isso é feito.



<!ELEMENT includes ((contentExtension+) | (actionExtension+))>

Defina um conjunto de padrões que deverá ser incluído ao procurar extensões de conteúdo para o visualizador que corresponde ao atributo "viewerId". Quando as instruções de inclusão e exclusão se cruzarem, a de inclusão terá precedência.



<!ELEMENT excludes ((contentExtension+) | (actionExtension+))>

Defina um conjunto de padrões que deverá ser excluído ao procurar extensões de conteúdo para o visualizador que corresponde ao atributo "viewerId". Quando as instruções de inclusão e exclusão se cruzarem, a de inclusão terá precedência.



<!ELEMENT contentExtension EMPTY>

<!ATTLIST contentExtension

pattern CDATA #REQUIRED

isRoot  (true | false) >

Indica o id (ou o padrão de correspondência) de uma extensão de conteúdo que deve ser consultado pelo ITreeContentProvider.getElements() ou ITreeContentProvider.getChildren() para a raiz do visualizador ou um filtro comum que deverá estar disponível ao usuário no diálogo "Filtros Disponíveis".

Os clientes podem especificar "isRoot" para selecionar extensões raiz específicas para substituir as extensões que do contrário seriam ativadas para o elemento de entrada do visualizador (com base na expressão triggerPoints de correspondência para o elemento de entrada do visualizador).

Consulte a documentação do viewerContentBinding para obter mais informações.



<!ELEMENT actionExtension EMPTY>

<!ATTLIST actionExtension

pattern CDATA #REQUIRED>

Indica a extensão de ação que deverá ter oportunidade de contribuir com o menu de contexto e as barras de ações.

Consulte a documentação do viewerActionBinding para obter mais informações.



<!ELEMENT popupMenu (insertionPoint*)>

<!ATTLIST popupMenu

id                          CDATA #IMPLIED

allowsPlatformContributions (true | false) >

Um elemento popupMenu só poderá ser definido se o atributo "popupMenuId" do elemento viewer não for especificado.

O elemento popupMenu permite customização adicional do menu de contexto associado ao visualizador. Para que as opções sejam aplicadas corretamente, uma instância do visualizador deverá ser delegada a um org.eclipse.ui.navigator.NavigatorActionService, que se comporta como um org.eclipse.ui.ActionGroup normal. Consulte a documentação dessa classe de API para obter mais informações sobre como explorar essa funcionalidade. Para clientes que utilizam uma instância de org.eclipse.ui.navigator.CommonNavigator, não será necessário trabalho extra.

Um popupMenu declara um ou mais insertionPoints que serão utilizados pelos contribuidores para organizar suas contribuições em uma lista consistente, significativa, mais fácil e simples.
Se os clientes especificarem apenas o atributo "popupMenuId" do elemento viewer, o conjunto de insertionPoints utilizado pelo menu de contexto assumirá como padrão a seguinte lista na ordem determinada:

"group.new"             separator="true"
"group.goto"            
"group.open"            separator="true"
"group.openWith"
"group.show"            separator="true"
"group.edit"            separator="true"
"group.reorganize"
"group.port"
"group.generate"        separator="true"
"group.search"          separator="true"
"group.build"           separator="true"
"additions"             separator="true" 
"group.properties"      separator="true"


Os clientes que desejarem se referir a esses valores de modo programado poderão utilizar as constantes de correspondência em org.eclipse.ui.navigator.ICommonMenuConstants.

Os clientes que desejam customizar seus menus são aconselhados a começar por essa lista e incluir ou remover pontos de inserção conforme necessário. Os clientes também são encorajados a seguir o padrão de começar cada nome de grupo com "group.".

Se o elemento popupMenu for especificado e NÃO contiver elementos filhos insertionPoint, o menu de contexto não terá pontos de inserção publicados. Certamente, clientes programáticos não são restringidos de incluir seus próprios pontos de inserção conforme necessário. Os clientes que definem visualizadores são aconselhados a publicar seus pontos de inserção para fins de documentação e clareza nas extensões de recebimento de dados para seus visualizadores/navegadores, ou para documentar explicitamente quais pontos de inserção são considerados API e quais são considerados internos.



<!ELEMENT insertionPoint EMPTY>

<!ATTLIST insertionPoint

name      CDATA #REQUIRED

separator (true | false) >

Define um ponto de inserção para o menu de contexto. Inclui o nome do ponto para clientes aos quais se referir e se o ponto de inserção deve ser renderizado como um separador ou como um marcador de grupo.



<!ELEMENT options (property+)>

Forneça opções ao visualizador para customizar o modo como ele é apresentado ao usuário. Consulte org.eclipse.ui.navigator.INavigatorViewerDescriptor para obter as propriedades disponíveis.



<!ELEMENT property EMPTY>

<!ATTLIST property

name  CDATA #REQUIRED

value CDATA #REQUIRED>

Forneça um par de nome=valor. O valor será fornecido ao visualizador como está (assim, cadeias vazias serão propagadas como cadeias vazias). Consulte org.eclipse.ui.navigator.INavigatorViewerDescriptor para obter as propriedades disponíveis e suas descrições.



<!ELEMENT dragAssistant EMPTY>

<!ATTLIST dragAssistant

class    CDATA #REQUIRED

viewerId CDATA #REQUIRED>

Um assistente para Arrastar e Soltar fornece gancho reduzido para oferecer tipos de transferência extras e lógica para definir os dados a serem arrastados. Esse elemento não é necessário, pois o org.eclipse.ui.navigator.CommonViewer básico fornece um tipo org.eclipse.jface.util.LocalSelectionTransfer.

Os clientes só deverão definir essa extensão em plugins reduzidos, com árvores de pouca dependência. Os assistentes para arrastar devem ser carregados na frente quando o visualizador é criado, o que forçará o carregamento dos plugins afetados.



O exemplo a seguir configura o id do menu pop-up para um visualizador.


   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewer id=

"org.eclipse.testViewer"

popupMenuId=

"org.eclipse.testViewer#PopupMenu"

/>

</extension>

Visto que o elemento filho popupMenu do visualizador não é utilizado no exemplo anterior, o conjunto padrão de insertionPoints será utilizado. Esse conjunto é definido como se segue. Consulte a documentação do elemento popupMenu para obter mais informações.

"group.new"             separator="true"
"group.goto"
"group.open"            separator="true"
"group.openWith"
"group.show"            separator="true"
"group.edit"            separator="true"
"group.reorganize"
"group.port"
"group.generate"        separator="true"
"group.search"          separator="true"
"group.build"           separator="true"
"additions"             separator="true"
"group.properties"      separator="true"

O exemplo a seguir demonstra uma configuração de visualizador que declara popupMenu/insertionPoints personalizados, mas restringe contribuições de objeto e visualizador com o atributo "allowsPlatformContributions". Os clientes só podem contribuir com o menu definido por meio do org.eclipse.ui.navigator.CommonActionProviders declarado para o visualizador (de nível superior ou associado a extensões de conteúdo).

Observe que o atributo "popupMenuId" não é especificado simultaneamente com o elemento popupMenu. Somente um ou outro, mas não ambos, é uma configuração válida.

   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewer viewerId=

"org.eclipse.ui.navigator.resourceContent"

>

<popupMenu allowsPlatformContributions=

"false"

id=

"org.eclipse.ui.navigator.resourceContent#PopupMenu"

>

<insertionPoint name=

"group.new"

/>

<insertionPoint name=

"group.open"

separator=

"true"

/>

<insertionPoint name=

"group.openWith"

/>

<insertionPoint name=

"group.port"

separator=

"true"

/>

<insertionPoint name=

"additions"

separator=

"true"

/>

<insertionPoint name=

"group.properties"

separator=

"true"

/>

</popupMenu>

</viewer>

<viewerContentBinding viewerId=

"org.eclipse.ui.navigator.resourceContent"

>

<includes>

<contentExtension pattern=

"org.eclipse.ui.navigator.resourceContent"

/>

</includes>

</viewerContentBinding>

</extension>

O exemplo a seguir declara que uma extensão de conteúdo (id: "org.eclipse.ui.navigator.resourceContent") está ligada a um visualizador que corresponde ao id "org.eclipse.ui.navigator.resourceContent". (Nesse exemplo, os ids de extensão de conteúdo e do visualizador correspondem, mas isso não é exigido.) Além disso, toda extensão de conteúdo com um id que começa com "org.eclipse.ui.navigator.tests." será ignorada.

   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewerContentBinding viewerId=

"org.eclipse.ui.navigator.resourceContent"

>

<includes>

<contentExtension pattern=

"org.eclipse.ui.navigator.resourceContent"

/>

</includes>

<excludes>

<contentExtension pattern=

"org.eclipse.ui.navigator.tests.*"

/>

</excludes>

</viewerContentBinding>

</extension>

O exemplo a seguir declara um viewerActionBinding para todos actionProviders (não aninhados em uma extensão navigatorContent) que correspondem à expressão comum "org.acme.actions.*", mas não à "org.acme.actions.tests.*". Essa expressão tornará qualquer actionProvider cujo id começa com "org.acme.actions." , mas não "org.acme.actions.tests.", visível ao visualizador com o id "org.acme.viewer". Certamente, o viewerActionBindings só se aplica aos elementos actionProvider que não estão aninhados em um elemento navigatorContent. A visibilidade de elementos actionProvider aninhados é controlada pelo viewerContentBindings para o elemento navigatorContent de fechamento.

   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewerActionBinding viewerId=

"org.acme.viewer"

>

<includes>

<actionExtension pattern=

"org.acme.actions.*"

/>

</includes>

<excludes>

<actionExtension pattern=

"org.acme.actions.tests.*"

/>

</excludes>

</viewerActionBinding>

</extension>

O exemplo a seguir torna visível ao visualizador "org.acme.viewer" todo actionProvider sem o atributo "id". Os actionProviders sem o atributo "id" têm um id padrão de "org.eclipse.ui.navigator.actionProvider.X". Certamente, o viewerActionBindings só se aplica aos elementos actionProvider que não estão aninhados em um elemento navigatorContent. A visibilidade de elementos actionProvider aninhados é controlada pelo viewerContentBindings para o elemento navigatorContent de fechamento.

   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewerActionBinding viewerId=

"org.acme.viewer"

>

<includes>

<actionExtension pattern=

"org.eclipse.ui.navigator.actionProvider.*"

/>

</includes>

</viewerActionBinding>

</extension>

O exemplo a seguir demonstra as propriedades padrão disponíveis ao visualizador.

   

<extension point=

"org.eclipse.ui.navigator.viewer"

>

<viewer popupMenuId=

"org.eclipse.ui.tests.navigator.TestView#PopupMenu"

viewerId=

"org.eclipse.ui.tests.navigator.TestView"

>

<options>

<!-- Ocultar a guia

"Extensões Disponíveis"

no diálogo

"Customizações Disponíveis"

(disponível na ação

"Filtros"

-->

<property name=

"org.eclipse.ui.navigator.hideAvailableExtensionsTab"

value=

"true"

/>

<!-- Ocultar o diálogo

"Customizações Disponíveis"

completamente. Isso inclui ocultar os filtros e as extensões de conteúdo disponíveis. -->

<property name=

"org.eclipse.ui.navigator.hideAvailableCustomizationsDialog"

value=

"true"

/>

<!-- Ocultar a ação

"Vincular ao Editor"

da barra de ferramentas do visualizador -->

<property name=

"org.eclipse.ui.navigator.hideLinkWithEditorAction"

value=

"true"

/>

<!-- Ocultar a ação

"Reduzir Tudo"

da barra de ferramentas do visualizador -->

<property name=

"org.eclipse.ui.navigator.hideCollapseAllAction"

value=

"true"

/>

</options>

</viewer>

</extension>