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.
org.eclipse.ui.navigator.CommonActionProvider
)org.eclipse.jface.viewers.ITreeContentProvider
ou org.eclipse.ui.navigator.ICommonContentProvider
.
org.eclipse.jface.viewers.ILabelProvider
ou, para obter funcionalidade mais
avançada, org.eclipse.ui.navigator.ICommonLabelProvider
.
org.eclipse.ui.navigator.IDescriptionProvider
para incluir texto na barra de
status na parte inferior do workbench do Eclipse, com base na seleção no visualizador.<!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.
org.eclipse.jface.viewers.ViewerSorter
.<!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.
org.eclipse.ui.navigator.CommonDropAdapterAssistant
<!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.
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>
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 "3""
id=
"org.eclipse.ui.tests.navigator.filters.TestItemsThatEndWith3"
name=
"TestItems que terminam com "3""
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>
Direitos Autorais (c) 2002, 2005 IBM Corporation e outros.
Todos os direitos reservados. Este programa e os materiais fornecidos com ele são
disponibilizados sob os termos da Licença Pública do Eclipse v1.0 que acompanha
esta distribuição e está disponível em
http://www.eclipse.org/legal/epl-v10.html