navigatorContent

org.eclipse.ui.navigator.navigatorContent

3.2

Uma extensão content fornece um conteúdo e um fornecedor de etiquetas que podem ser utilizados por um serviço de conteúdo de navegador. A extensão navigatorContent define as classes específicas para o fornecedor de conteúdos, para o fornecedor de etiquetas e para o fornecedor de acções, para além dos tipos de elementos de que a extensão tem conhecimento.

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.



<!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.



<!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.



<!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.




Adicionar conteúdo

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>

Adicionar Acções

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 &quot;3&quot;"

id=

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

name=

"TestItems that end with &quot;3&quot;"

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>