A expressão triggerPoints descreve os elementos que fazem com que esta extensão seja invocada quer para descendentes, quer para etiquetas. A expressão possibleChildren descreve os elementos para os quais a extensão pode disponibilizar um ascendente. Os clientes devem descrever todos os elementos que podem ser definidos como a selecção, para garantir que a ligação ao suporte de editor possa ser devidamente expandida para o nó correcto.
<!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 content de um navegador define um fornecedor de conteúdo e fornecedor de etiquetas que pode ser utilizado para disponibilizar descendentes sempre que um elemento corresponda à expressão triggerPoints, bem como para disponibilizar um ascendente sempre que um elemento corresponda à expressão possibleChildren.
Em opção, os cliente podem igualmente facultar um fornecedor de acções que pode disponibilizar contributos de menu e contributos de barra de acções quando um elemento resultante do contributo da extensão estiver seleccionado ou quando corresponda à expressão triggerPoints. Os clientes podem igualmente optar por contribuir com um ordenador para ordenar elementos cujo contribuinte seja a 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 funcionalidade mais avançada, org.eclipse.ui.navigator.ICommonLabelProvider
.
org.eclipse.ui.navigator.IDescriptionProvider
, para poderem adicionar texto à barra de estado na parte inferior da área de trabalho do Eclipse, com base na selecção no visualizador.<!ELEMENT enablement (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
A expressão enablement permite que os clientes especifiquem a mesma expressão para triggerPoints e possibleChildren.
No caso do actionProvider, os clientes têm de definir uma expressão que irá indicar ao contexto quando o respectivo org.eclipse.ui.navigator.CommonActionProvider
deverá ser invocado. Devido às contribuições para as IActionBars, os clientes têm de ser invocados sempre que um objecto no qual estejam interessados seja seleccionado. Assim, os clientes deverão ser prudentes ao decidir quando a respectiva extensão deverá ser activada.
<!ELEMENT triggerPoints (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
A expressão triggerPoints define quais os nós de uma árvore que deverão provocar a invocação desta extensão para descendentes.
<!ELEMENT possibleChildren (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
A expressão possibleChildren define quais os nós de uma árvore que podem receber contribuições desta extensão. Os clientes devem descrever o momento em que esta extensão content pode disponibilizar um ascendente para elementos que correspondam à 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 fornecedor de acções tem uma oportunidade de contribuir para o menu de contexto e para as acções redestináveis definidas nas IActionBars, para a vista que retém o navegador. Os clientes podem igualmente contribuir de forma directa para o menu através do menu IActionBars.
Um actionProvider de nível superior é visible para um visualizador abstracto se houver um viewerActionBinding para esse actionProvider. Para actionProviders que estejam imbricados sob um elemento navigatorContent, a visibilidade é controlada pelo ID do ID da extensão do navigatorContent. Os fornecedores de acções descendentes são seleccionados automaticamente
por correspondência de viewerContentBinding. Consulte org.eclipse.ui.navigator.viewer para mais informações sobre associações de visibilidade.
Os clientes podem disponibilizar actionProvider(s) no elemento extention raiz (par de outro navigatorContent) para um melhor controlo da respectiva activação e associação de visualizador (consulte veiwerActionBinding).
Para actionProviders de raiz sem ID, o ID está predefinido como "org.eclipse.ui.navigator.actionProvider.X". Para que estes actionProviders tenham a oportunidade de contribuir para menus ou barras de acção de um visualizador, tem de ser definido um viewerActionBinding (como parte do org.eclipse.ui.navigator.viewer extension point) que declara uma associação entre o visualizador específico e o ID predefinido ("org.eclipse.ui.navigator.actionProvider.*"). Para mais informações, consulte a documentação relativa ao viewerActionBinding no esquema documentação do org.eclipse.ui.navigator.viewer.
<!ELEMENT commonWizard (enablement)>
<!ATTLIST commonWizard
type (import|export|new)
wizardId CDATA #REQUIRED
menuGroupId CDATA #IMPLIED
associatedExtensionId CDATA #IMPLIED>
O ponto de extensão proporciona a capacidade de contribuir para o menu definido por type.
<!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 associado a um Visualizador Comum específico. Os filtros comuns estão associados a um visualizador como extensões de conteúdo, utilizando o org.eclipse.ui.navigator.viewer/viewerContentBinding.
<!ELEMENT filterExpression (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Uma Expressão Núcleo opcional do Eclipse, que define aquilo que o filtro deve ocultar de uma determinada visualização.
Por exemplo, os clientes podem decidir ocultar todos os recursos que tenham um determinado padrão no respectivo nome (como "*.acme"). Quando o filtro está activo (activado por predefinição ou pelo utilizador), todos os recursos terminado em "acme" estão ocultos da vista do utilizador.
Os clientes podem utilizar quer o atributo filterExpression, quer o atributo "class", mas não ambos.
<!ELEMENT commonSorter (parentExpression)>
<!ATTLIST commonSorter
id CDATA #REQUIRED
class CDATA #REQUIRED>
Um commonSorter declara uma subclasse org.eclipse.jface.viewers.ViewerSorter
que é utilizada para ordenar elementos descendentes na árvore. A parentExpression imbricada descreve o momento de utilização do commonSorter. Se um elemento corresponder à parentExpression, os descendentes são ordenados por este commonSorter.
org.eclipse.jface.viewers.ViewerSorter
.<!ELEMENT parentExpression (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Uma parentExpression é utilizada pelo commonSorter para realizar a identificação, quando tal for aplicável. Se a parentExpression para um commonSorter corresponder a um dado elemento, esse commonSorter é utilizado para ordenar os descendentes desse elemento (como devolvidos pelo fornecedor de conteúdos do serviço de conteúdos).
<!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 ambas enabled para um dado elemento, esta extensão é invocada, mas a extensão suprimida não o é. Os clientes que especifiquem um elemento override têm igualmente de disponibilizar um fornecedor de conteúdos que implemente org.eclipse.ui.navigator.IPipelinedTreeContentProvider
, que proporciona métodos de interceptar pedidos para elementos descendentes, ascendentes e actualizações directas para o visualizador.
<!ELEMENT dropAssistant (possibleDropTargets)>
<!ATTLIST dropAssistant
id CDATA #REQUIRED
class CDATA #REQUIRED>
Disponibiliza uma subclasse org.eclipse.ui.navigator.CommonDropAdapterAssistant
que pode proporcionar validação programática para uma operação de arrastar e largar, solicitar tipos de transferência adicionais e processar a operação de arrastar e largar.
Um dropAssistant é invocado sempre que elementos que são arrastados correspondam à expressão possibleChildren da extensão navigatorContent que os contém e sempre que o destino de largar da operação é descrito pela expressão possibleDropTargets do elemento dropAssistant.
Uma extensão pode ter múltiplos adaptadores de largar com expressões possibleDropTargets mutuamente exclusivas. O primeiro adaptador de largar encontrado que corresponda ao alvo de largar e apresente um estado OK para CommonDropAdapterAssistant.validateDrop(...)
tem uma oportunidade de processar a operação de largar.
org.eclipse.ui.navigator.CommonDropAdapterAssistant
<!ELEMENT possibleDropTargets (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Descreve os possíveis destinos de largar que um dropAssistant específico pode processar.
<!ELEMENT enablement (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Um elemento raiz genérico. O elemento pode ser utilizado dentro de um ponto de extensão para definir a respectiva expressão de activação. Os elementos descendentes de uma expressão de activação são combinados com recurso ao operador and.
<!ELEMENT not (not | and | or | instanceof | test | systemTest | equals | count | with | resolve | adapt | iterate)>
Este elemento representa uma operação NOT no resultado de avaliação da respectiva expressão de subelemento.
<!ELEMENT and (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Este elemento representa uma operação AND no resultado de avaliação de todas as respectivas expressões de subelemento.
<!ELEMENT or (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
Este elemento representa uma operação OR no resultado de avaliação de todas as respectivas expressões de subelemento.
<!ELEMENT instanceof EMPTY>
<!ATTLIST instanceof
value CDATA #REQUIRED>
Este elemento é utilizado para desempenhar uma verificação instanceof do objecto em questão. A expressão devolve EvaluationResult.TRUE se o tipo do objecto for um subtipo do tipo especificado pelo valor do atributo. De outro modo, devolve EvaluationResult.FALSE.
<!ELEMENT test EMPTY>
<!ATTLIST test
property CDATA #REQUIRED
args CDATA #IMPLIED
value CDATA #IMPLIED>
Este elemento é utilizado para avaliar o estado de propriedade do objecto em questão. O conjunto de propriedades verificáveis pode ser alargado utilizando o ponto de extensão do dispositivo de testes de propriedade. A expressão do teste devolve EvaluationResult.NOT_LOADED se o dispositivo de testes de propriedade que está a fazer o teste ainda não estiver carregado.
<!ELEMENT systemTest EMPTY>
<!ATTLIST systemTest
property CDATA #REQUIRED
value CDATA #REQUIRED>
Testa uma propriedade de sistema solicitando o método System.getProperty e compara o resultado com o valor especificado através do atributo value.
<!ELEMENT equals EMPTY>
<!ATTLIST equals
value CDATA #REQUIRED>
Este elemento é utilizado para desempenhar uma verificação equals do objecto em questão. A expressão devolve EvaluationResult.TRUE se o objecto for igual ao valor fornecido pelo atributo value. De outro modo, devolve EvaluationResult.FALSE.
<!ELEMENT count EMPTY>
<!ATTLIST count
value CDATA #REQUIRED>
Este elemento é utilizado para testar o número de elementos numa recolha.
<!ELEMENT with (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
<!ATTLIST with
variable CDATA #REQUIRED>
Este elemento altera o objecto a ser inspeccionado em todos os elementos descendentes, para o objecto referenciado pela dada variável. Se a variável não puder ser processada, a expressão apresenta ExpressionException quando estiver a fazer a avaliação. Os elementos descendentes de uma expressão with são combinados com recurso ao operador and.
<!ELEMENT resolve (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
<!ATTLIST resolve
variable CDATA #REQUIRED
args CDATA #IMPLIED>
Este elemento altera o objecto a ser inspeccionado em todos os elementos descendentes, para o objecto referenciado pela dada variável. Se a variável não puder ser processada, a expressão apresenta ExpressionException quando estiver a fazer a avaliação. Os elementos descendentes de uma expressão with são combinados com recurso ao 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 objecto em questão ao tipo especificado pelo tipo do atributo. A expressão devolve not loaded se o adaptador ou o tipo referenciados ainda não estiverem carregados. Apresenta ExpressionException durante a avaliação se o nome do tipo não existir. Os elementos descendentes de uma expressão adapt são combinados com recurso ao operador and.
<!ELEMENT iterate (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>
<!ATTLIST iterate
operator (or|and) >
Este elemento é utilizado para iterar numa variável que seja de tipo java.util.Collection. Se o objecto em questão não for do tipo java.util.Collection, surge ExpressionException durante a avaliação da expressão.
O exemplo seguinte descreve uma extensão content que disponibiliza conteúdos de recurso. A expressão triggerPoints determina quando esta extensão é invocada inicialmente. Se um viewerContentBinding corresponder a esta extensão com o atributo "isRoot" definido para true, a extensão é utilizada, independentemente de o elemento raiz corresponder à 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 do objecto ou do visualizador (consulte org.eclipse.ui.popupMenus) para disponibilizar
acções para a respectiva vista. Por vezes, os clientes requerem um maior grau de flexibilidade que o permitido
por qualquer uma destas abordagens, pelo que a estrutura do Navegador Comum suporta a adição de
fornecedores de acções. A subclasse "Action providers" em org.eclipse.ui.actions.ActionGroup
tem oportunidades para preencher as barras de acções e os menus baseados em diferentes eventos
(selecção e fazer clique com o botão direito do rato, respectivamente).
Os clientes podem associar um ou mais fornecedores de acções a uma extensão content específica ou declarar os fornecedores de acções como contribuições de nível superior, não associadas a qualquer extensão content específica. Os fornecedores de acções de alto nível têm de estar associados a uma instância de visualizador específica, através do ponto de extensão org.eclipse.ui.navigator.viewer/viewerActionBinding. Os fornecedores de acções imbricados são automaticamente associados a um visualizador baseado no facto de a extensão content que os contém estar igualmente associada ao visualizador (consulte org.eclipse.ui.navigator/viewerContentBinding).
O exemplo seguinte demonstra ambas as abordagens. O "TestNestedActionProvider" tem uma
oportunidade de contribuir para o menu e org.eclipse.ui.IActionBars
apenas quando
a extensão "org.eclipse.ui.tests.navigator.testContent" estiver visible e active.
Se o utilizador desactivar a extensão de teste a partir da caixa de diálogo "Available customizations", o fornecedor
de acções imbricado deixará de ter 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 com recurso a subclasses org.eclipse.jface.viewers.ViewerFilter
ou através de expressões núcleo do Eclipse. O exemplo seguinte demonstra ambas as técnicas. Os clientes só podem
utilizar uma das duas opções. Ambas as extensões especificadas em erro resultam em que apenas
o filtro da expressão núcleo seja respeitado. Os campos do nome e descrição são traduzíveis e devem externalizar
cadeias em ambientes reais.
<extension point=
"org.eclipse.ui.navigator.navigatorContent"
>
<commonFilter class=
"org.eclipse.ui.tests.navigator.extension.TestItemsThatEndIn3"
description=
"Hide TestItem objects that end in the number "3""
id=
"org.eclipse.ui.tests.navigator.filters.TestItemsThatEndWith3"
name=
"TestItems that end with "3""
activeByDefault=
"true"
/>
<commonFilter description=
"Hides all instances of Test Item"
id=
"org.eclipse.ui.tests.navigator.filters.AllTestItems"
name=
"A TestItem Exp Filter (should be sorted alphab..)"
>
<filterExpression>
<instanceof value=
"org.eclipse.ui.tests.navigator.extension.TestExtensionTreeData"
/>
</filterExpression>
</commonFilter>
Um ordenador comum é determinado para um conjunto de elementos descendentes com base no respectivo ascendente. A classe do ordenador
tem de subclassificar o 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 seguinte demonstra como adicionar acções para atalhos de assistente para "New Folder" e "New File", que estão activados nas subclasses específicas do org.eclipse.core.resources.IResource. Os clientes podem utilizar quaisquer partes org.eclipse.core.expressions que sejam necessárias, para descrever quando o menu opções deverá estar disponível. O wizardId especificado abaixo tem de corresponder a um dos pontos de extensão do org.eclipse.ui.xxxWizards.
Os clientes que construam os seus próprios visualizadores ou
componentes de visualização, devem certificar-se que utilizam org.eclipse.ui.navigator.WizardActionGroup
para preencher o menu correctamente. Consulte essa classe para mais documentação sobre
a utilização desta funcionalidade.
<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>
Copyright (c) 2002, 2005 IBM Corporation e outros.
Todos os direitos reservados. Este programa e os materiais que o acompanham estão disponíveis
sob os termos da Eclipse Public License v1.0 que acompanha
esta distribuição e está disponível em http://www.eclipse.org/legal/epl-v10.html