navigatorContent

org.eclipse.ui.navigator.navigatorContent

3.2

Uma extensão de conteúdo fornece um provedor de etiquetas e conteúdo que pode ser utilizado por um serviço de conteúdo do navegador. A extensão navigatorContent define as classes específicas para os provedores de conteúdo, etiquetas e ações, além dos tipos de elementos que a extensão conhece.

A expressão triggerPoints descreve os elementos que farão com que essa extensão seja chamada, para filhos ou para etiquetas. A expressão possibleChildren descreve os elementos para os quais a extensão pode fornecer um pai. Os clientes devem descrever todos os elementos que possam ser definidos como a seleção para garantir que o link com o suporte do editor possa ser expandido adequadamente para o nó direito.

<!ELEMENT extension ((navigatorContent? | actionProvider? | commonWizard? | commonFilter?))>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT navigatorContent ((enablement | (triggerPoints , possibleChildren)) , actionProvider* , commonSorter* , override? , dropAssistant* , commonWizard*)>

<!ATTLIST navigatorContent

id                CDATA #REQUIRED

name              CDATA #REQUIRED

priority          (lowest|lower|low|normal|high|higher|highest)

contentProvider   CDATA #REQUIRED

icon              CDATA #IMPLIED

activeByDefault   (true | false)

providesSaveables (true | false)

labelProvider     CDATA #REQUIRED>

Uma extensão de conteúdo do navegador define um provedor de conteúdo e de etiquetas que pode ser utilizado para fornecer filhos sempre que um elemento corresponder à expressão triggerPoints e também para fornecer um pai sempre que um elemento corresponder à expressão possibleChildren.

Como opção, os clientes podem também fornecer um provedor de ações que pode fornecer contribuições de menu e de barra de ações quando for selecionado um elemento com o qual a extensão contribuiu, ou que corresponde à expressão triggerPoints. Além disso, os clientes podem optar por contribuir com um classificador para classificar os elementos contribuídos pela extensão.



<!ELEMENT enablement (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

A expressão de ativação permite aos clientes especificar a mesma expressão para triggerPoints e possibleChildren.

No caso de actionProvider, os clientes devem definir uma expressão que indicará à estrutura quando seu org.eclipse.ui.navigator.CommonActionProvider deverá ser chamado. Por causa das contribuições ao IActionBars, os clientes deverão ser chamados sempre que for selecionado um objeto no qual eles estão interessados. Portanto, os clientes deverão usar de discrição ao decidirem quando ativar a extensão deles.



<!ELEMENT triggerPoints (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

A expressão triggerPoints define os nós em uma árvore que deverão fazer com que essa extensão seja chamada para obter filhos.



<!ELEMENT possibleChildren (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

A expressão possibleChildren define os nós em uma árvore que poderiam ser contribuídos por essa extensão. Os clientes devem descrever quando essa extensão de conteúdo poderia fornecer um pai para os elementos que correspondem à expressão.



<!ELEMENT actionProvider (enablement?)>

<!ATTLIST actionProvider

class     CDATA #REQUIRED

id        CDATA #IMPLIED

dependsOn CDATA #IMPLIED

overrides CDATA #IMPLIED>

Fornece o nome de uma classe que implementa org.eclipse.ui.navigator.CommonActionProvider. O provedor de ações tem a oportunidade de contribuir com o menu de contexto e com as ações que podem ser executadas novamente, definidas no IActionBars para a visualização que mantém o navegador. Os clientes também podem contribuir diretamente com o menu de visualização, utilizando o menu de visualização IActionBars.

Um actionProvider de nível superior será visível a um visualizador abstrato se houver um viewerActionBinding para esse actionProvider. Para actionProviders aninhados em um elemento navigatorContent, a visibilidade será controlada pelo id do id da extensão navigatorContent. Provedores de ações filhos serão selecionados automaticamente pela correspondência viewerContentBindings. Consulte org.eclipse.ui.navigator.viewer para obter mais informações sobre ligações de visibilidade.

Clientes podem fornecer actionProvider(s) no elemento extention raiz (par de outro navigatorContent) para melhor controlar sua ligação de visualizador e ativação (consulte veiwerActionBinding).

Para actionProviders raiz, sem id, o id padrão é "org.eclipse.ui.navigator.actionProvider.X". Para dar a esses actionProviders a oportunidade de contribuir com menus ou barras de ações de um visualizador, deve ser definido um viewerActionBinding (como parte do ponto de extensão org.eclipse.ui.navigator.viewer) que declare uma ligação entre o visualizador específico e o id padrão ("org.eclipse.ui.navigator.actionProvider.*"). Consulte a documentação de viewerActionBinding na documentação de esquema de org.eclipse.ui.navigator.viewer para obter mais informações.



<!ELEMENT commonWizard (enablement)>

<!ATTLIST commonWizard

type                  (import|export|new)

wizardId              CDATA #REQUIRED

menuGroupId           CDATA #IMPLIED

associatedExtensionId CDATA #IMPLIED>

O ponto de extensão fornece a capacidade de contribuir com o menu definido pelo tipo.



<!ELEMENT commonFilter (filterExpression?)>

<!ATTLIST commonFilter

id              CDATA #REQUIRED

name            CDATA #REQUIRED

description     CDATA #IMPLIED

class           CDATA #IMPLIED

activeByDefault (true | false) >

Define um filtro que pode ser grande associado a um determinado Visualizador Comum. Filtros comuns são ligados a um visualizador como extensões de conteúdo utilizando org.eclipse.ui.navigator.viewer/viewerContentBinding.



<!ELEMENT filterExpression (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

Uma Expressão de Núcleo opcional do Eclipse que define o que o filtro deve ocultar de uma visualização específica.

Por exemplo, os clientes podem decidir ocultar todos os recursos que tenham um determinado padrão em seus nomes (como "*.acme"). Assim, quando o filtro estiver ativo (ativado por padrão ou pelo usuário), todos os recursos que terminarem com "acme" serão ocultados da visualização do usuário.

Os clientes podem utilizar o filterExpression ou o atributo "class", mas não ambos.



<!ELEMENT commonSorter (parentExpression)>

<!ATTLIST commonSorter

id    CDATA #REQUIRED

class CDATA #REQUIRED>

Um commonSorter declara uma subclasse de org.eclipse.jface.viewers.ViewerSorter que é utilizada para classificar filhos na árvore. O parentExpression aninhado descreve quando o commonSorter deve ser utilizado. Se um elemento corresponder ao parentExpression, seus filhos serão classificados por esse commonSorter.



<!ELEMENT parentExpression (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

Um parentExpression é utilizado pelo commonSorter para identificar quando ele é aplicável. Se o parentExpression para um commonSorter corresponder a um determinado elemento, esse commonSorter será utilizado para classificar os filhos desse elemento (conforme retornado pelo provedor de conteúdo do serviço de conteúdo).



<!ELEMENT override EMPTY>

<!ATTLIST override

suppressedExtensionId CDATA #REQUIRED

policy                (InvokeOnlyIfSuppressedExtAlsoVisibleAndActive|InvokeAlwaysRegardlessOfSuppressedExt) "InvokeAlwaysRegardlessOfSuppressedExt">

Quando a expressão triggerPoints da extensão suprimida e a extensão declarada estiverem ativadas em um determinado elemento, essa extensão será chamada, mas sua extensão suprimida não. Os clientes que especificam um elemento override devem fornecer também um provedor de conteúdo que implementa org.eclipse.ui.navigator.IPipelinedTreeContentProvider, que fornece métodos para interceptar pedidos de filhos, pais e atualizações diretas para o visualizador.



<!ELEMENT dropAssistant (possibleDropTargets)>

<!ATTLIST dropAssistant

id    CDATA #REQUIRED

class CDATA #REQUIRED>

Fornece uma subclasse de org.eclipse.ui.navigator.CommonDropAdapterAssistant que pode fornecer validação programática para uma operação de colocação, solicitar tipos adicionais de transferência e manipular a operação de eliminação.

Um dropAssistant será chamado sempre que os elementos que são arrastados corresponderem à expressão possibleChildren da extensão navigatorContent de contenção e o destino de posicionamento da operação for descrito pela expressão possibleDropTargets do elemento dropAssistant.

Uma extensão pode ter vários adaptadores de posicionamento com expressões possibleDropTargets mutuamente exclusivas. O primeiro adaptador de posicionamento encontrado que corresponder ao destino de posicionamento determinado e retornar um status de OK para CommonDropAdapterAssistant.validateDrop(...) terá a oportunidade de manipular o posicionamento.



<!ELEMENT possibleDropTargets (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

Descreva os destinos de posicionamento possíveis que um determinado dropAssistant pode manipular.



<!ELEMENT enablement (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

Um elemento de raiz genérico. O elemento pode ser utilizado dentro de um ponto de extensão para definir sua expressão de ativação. Os filhos de uma expressão de ativação são combinados utilizando o operador and.



<!ELEMENT not (not | and | or | instanceof | test | systemTest | equals | count | with | resolve | adapt | iterate)>

Esse elemento representa uma operação NOT como resultado da avaliação da expressão do subelemento.



<!ELEMENT and (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

Esse elemento representa uma operação AND como resultado da avaliação de todas as expressões dos subelementos.



<!ELEMENT or (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

Esse elemento representa uma operação OR como resultado da avaliação de todas as expressões do subelemento.



<!ELEMENT instanceof EMPTY>

<!ATTLIST instanceof

value CDATA #REQUIRED>

Este elemento é utilizado para executar uma instância de verificação do objeto em foco. A expressão retornará EvaluationResult.TRUE se o tipo do objeto for um subtipo do tipo especificado pelo valor do atributo. Caso contrário, EvaluationResult.FALSE será retornado.



<!ELEMENT test EMPTY>

<!ATTLIST test

property CDATA #REQUIRED

args     CDATA #IMPLIED

value    CDATA #IMPLIED>

Esse elemento é utilizado para avaliar o estado da propriedade do objeto em foco. O conjunto de propriedades testáveis pode ser estendido utilizando o ponto de extensão do testador de propriedade. A expressão de teste retornará EvaluationResult.NOT_LOADED se o testador de propriedade que realiza o teste real ainda não estiver carregado.



<!ELEMENT systemTest EMPTY>

<!ATTLIST systemTest

property CDATA #REQUIRED

value    CDATA #REQUIRED>

Testa uma propriedade do sistema chamando o método System.getProperty e compara o resultado com o valor especificado por meio do atributo de valor.



<!ELEMENT equals EMPTY>

<!ATTLIST equals

value CDATA #REQUIRED>

Esse elemento é utilizado para executar uma verificação equals do objeto em foco. A expressão retorna EvaluationResult.TRUE se o objeto for igual ao valor fornecido pelo valor do atributo. Caso contrário, EvaluationResult.FALSE será retornado.



<!ELEMENT count EMPTY>

<!ATTLIST count

value CDATA #REQUIRED>

Esse elemento é utilizado para testar o número de elementos em uma coleta.



<!ELEMENT with (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST with

variable CDATA #REQUIRED>

O elemento altera o objeto, a ser inspecionado para todos os seus elementos filho, para o objeto referido pela variável fornecida. Se a variável não puder ser resolvida, a expressão lançará um ExpressionException ao avaliá-la. Os filhos de uma expressão são combinados utilizando o operador and.



<!ELEMENT resolve (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST resolve

variable CDATA #REQUIRED

args     CDATA #IMPLIED>

O elemento altera o objeto, a ser inspecionado para todos os seus elementos filho, para o objeto referido pela variável fornecida. Se a variável não puder ser resolvida, a expressão lançará um ExpressionException ao avaliá-la. Os filhos de uma expressão são combinados utilizando o operador and.



<!ELEMENT adapt (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST adapt

type CDATA #REQUIRED>

Este elemento é utilizado para adaptar o objeto em foco ao tipo especificado pelo tipo de atributo. A expressão será retornada sem carregar, se o adaptador ou o tipo referido ainda não estiver carregado. Isso lança um ExpressionException durante a avaliação se o nome do tipo não existir. Os filhos de uma expressão de adaptação são combinados utilizando o operador and.



<!ELEMENT iterate (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST iterate

operator (or|and) >

Esse elemento é utilizado para repetir uma variável do tipo java.util.Collection. Se o objeto em foco não for do tipo java.util.Collection uma ExpressionException será lançada durante a avaliação da expressão.




Incluindo Conteúdo

O exemplo a seguir descreve uma extensão de conteúdo que fornece conteúdo de recurso. A expressão triggerPoints determina quando essa extensão será chamada inicialmente. Se um viewerContentBinding corresponder a essa extensão com o atributo "isRoot" definido como true, a extensão será utilizada, independentemente de o elemento raiz corresponder ao não à expressão triggerPoints.

<extension point=

"org.eclipse.ui.navigator.navigatorContent"

>

<navigatorContent name=

"%resource.extension.name"

priority=

"low"

icon=

"icons/full/eview16/resource_persp.gif"

activeByDefault=

"true"

contentProvider=

"org.eclipse.ui.navigator.resources.internal.workbench.ResourceExtensionContentProvider"

labelProvider=

"org.eclipse.ui.navigator.resources.internal.workbench.ResourceExtensionLabelProvider"

sorter=

"org.eclipse.ui.navigator.resources.internal.workbench.ResourceSorter"

id=

"org.eclipse.ui.navigator.resourceContent"

>

<triggerPoints>

<or>

<instanceof value=

"org.eclipse.core.resources.IWorkspaceRoot"

/>

<instanceof value=

"org.eclipse.core.resources.IProject"

/>

<instanceof value=

"org.eclipse.core.resources.IFolder"

/>

</or>

</triggerPoints>

<possibleChildren>

<or>

<instanceof value=

"org.eclipse.core.resources.IWorkspaceRoot"

/>

<instanceof value=

"org.eclipse.core.resources.IProject"

/>

<instanceof value=

"org.eclipse.core.resources.IResource"

/>

<instanceof value=

"org.eclipse.core.resources.IFolder"

/>

<instanceof value=

"org.eclipse.core.resources.IFile"

/>

</or>

</possibleChildren>

</navigatorContent>

</extension>

Incluindo Ações

Os clientes podem utilizar contribuições de objeto ou de visualizador (consulte org.eclipse.ui.popupMenus) a fim de fornecer ações para suas visualizações. Às vezes, os clientes precisam de um grau maior de flexibilidade do que qualquer dessas abordagens permitem; conseqüentemente, a estrutura de Navegador Comum suporta a inclusão de provedores de ações. "Provedores de ações" subclassificam org.eclipse.ui.actions.ActionGroup e têm oportunidades de preencher as barras de ações e os menus com base em diferentes eventos (seleção e clique com o botão direito do mouse, respectivamente).

Os clientes podem associar um ou mais provedores de ações a uma determinada extensão de conteúdo ou declarar os provedores de ações como contribuições de nível superior, não associados a nenhuma extensão de conteúdo específica. Provedores de ações de nível superior devem ser associados a uma determinada instância de visualizador utilizando o ponto de extensão org.eclipse.ui.navigator.viewer/viewerActionBinding. Provedores de ações aninhados são ligados automaticamente a um visualizador com base em sua extensão de conteúdo de contenção estar ou não ligada também ao visualizador (consulte org.eclipse.ui.navigator/viewerContentBinding).

O exemplo a seguir demonstra as duas abordagens. O "TestNestedActionProvider" terá a oportunidade de contribuir com o menu e o org.eclipse.ui.IActionBars somente quando a extensão "org.eclipse.ui.tests.navigator.testContent" estiver visível e ativa. Se o usuário desativar a extensão de teste no diálogo "Customizações Disponíveis", o provedor de ações aninhado não terá mais a oportunidade de contribuir.

<extension point=

"org.eclipse.ui.navigator.navigatorContent"

>

<navigatorContent id=

"org.eclipse.ui.tests.navigator.testContent"

name=

"%test.navigator.extension"

contentProvider=

"org.eclipse.ui.tests.navigator.extension.TestContentProvider"

labelProvider=

"org.eclipse.ui.tests.navigator.extension.TestLabelProvider"

activeByDefault=

"true"

priority=

"normal"

>

<triggerPoints>

<instanceof value=

"org.eclipse.core.resources.IProject"

/>

</triggerPoints>

<actionProvider class=

"org.eclipse.ui.tests.navigator.extension.TestNestedActionProvider"

id=

"org.eclipse.ui.tests.navigator.extension.TestNestedActionProvider"

>

<enablement>

<instanceof value=

"org.eclipse.core.resources.IResource"

/>

</enablement>

</actionProvider>

</navigatorContent>

<actionProvider class=

"org.eclipse.ui.navigator.resources.internal.actions.NewActionProvider"

id=

"org.eclipse.ui.navigator.resources.NewActions"

>

<enablement>

<or>

<adapt type=

"org.eclipse.core.resources.IFile"

/>

<adapt type=

"org.eclipse.core.resources.IFolder"

/>

<adapt type=

"org.eclipse.core.resources.IProject"

/>

<adapt type=

"org.eclipse.core.resources.IWorkspaceRoot"

/>

</or>

</enablement>

</actionProvider>

</extension>

Os clientes podem definir filtros utilizando subclasses de org.eclipse.jface.viewers.ViewerFilter ou por meio das expressões de núcleo do Eclipse. O exemplo a seguir demonstra ambas as técnicas. Os clientes só podem utilizar as duas opções. As extensões que especificarem ambas com erro farão com que somente o filtro da expressão de núcleo seja respeitado. Os campos de nome e descrição são traduzíveis e deverão ser cadeias externalizadas em ambientes reais.

<extension point=

"org.eclipse.ui.navigator.navigatorContent"

>

<commonFilter class=

"org.eclipse.ui.tests.navigator.extension.TestItemsThatEndIn3"

description=

"Ocultar objetos TestItem que terminam no número &quot;3&quot;"

id=

"org.eclipse.ui.tests.navigator.filters.TestItemsThatEndWith3"

name=

"TestItems que terminam com &quot;3&quot;"

activeByDefault=

"true"

/>

<commonFilter description=

"Oculta todas as instâncias de Item de Teste"

id=

"org.eclipse.ui.tests.navigator.filters.AllTestItems"

name=

"Um Filtro TestItem Exp (deve ser classificado em ordem alfabética..)"

>

<filterExpression>

<instanceof value=

"org.eclipse.ui.tests.navigator.extension.TestExtensionTreeData"

/>

</filterExpression>

</commonFilter>

Um classificador comum é determinado para um conjunto de filhos com base em seus pais. A classe do classificador deve subclassificar org.eclipse.jface.viewers.ViewerSorter.


<extension point=

"org.eclipse.ui.navigator.navigatorContent"

>

<commonSorter class=

"org.eclipse.ui.navigator.resources.internal.workbench.ResourceExtensionSorter"

id=

"org.eclipse.ui.navigator.resources.sorters.defaultSorter"

>

<parentExpression>

<or>

<instanceof value=

"org.eclipse.core.resources.IWorkspaceRoot"

/>

<instanceof value=

"org.eclipse.core.resources.IProject"

/>

<instanceof value=

"org.eclipse.core.resources.IResource"

/>

<instanceof value=

"org.eclipse.core.resources.IFolder"

/>

<instanceof value=

"org.eclipse.core.resources.IFile"

/>

</or>

</parentExpression>

</commonSorter>

</extension>

O exemplo a seguir demonstra como incluir ações de atalho do assistente para "Nova Pasta" e "Novo Arquivo", que são ativadas nas subclasses específicas de org.eclipse.core.resources.IResource. Os clientes podem utilizar qualquer parte do org.eclipse.core.expressions que for necessária para descrever quando as opções de menu devem estar disponíveis. O wizardId especificado a seguir deve corresponder a um dos pontos de extensão org.eclipse.ui.xxxWizards.

Para clientes que criam seus próprios visualizadores ou partes de visualização, certifique-se de utilizar org.eclipse.ui.navigator.WizardActionGroup para preencher corretamente o menu. Consulte essa classe para obter documentação adicional sobre como utilizar esse recurso.


<extension point=

"org.eclipse.ui.navigator.navigatorContent"

>

<commonWizard type=

"new"

wizardId=

"org.eclipse.ui.wizards.new.folder"

>

<enablement>

<or>

<adapt type=

"org.eclipse.core.resources.IFile"

/>

<adapt type=

"org.eclipse.core.resources.IFolder"

/>

<adapt type=

"org.eclipse.core.resources.IProject"

/>

<adapt type=

"org.eclipse.core.resources.IWorkspaceRoot"

/>

</or>

</enablement>

</commonWizard>

<commonWizard type=

"new"

wizardId=

"org.eclipse.ui.wizards.new.file"

>

<enablement>

<or>

<adapt type=

"org.eclipse.core.resources.IFile"

/>

<adapt type=

"org.eclipse.core.resources.IFolder"

/>

<adapt type=

"org.eclipse.core.resources.IProject"

/>

<adapt type=

"org.eclipse.core.resources.IWorkspaceRoot"

/>

</or>

</enablement>

</commonWizard>

</extension>