navigatorContent

org.eclipse.ui.navigator.navigatorContent

3.2

Una extensión de contenido proporciona un proveedor de contenido y un proveedor de etiquetas que un servicio de contenido de navegador puede utilizar. La extensión navigatorContent define las clases específicas para el proveedor de contenido, el proveedor de etiquetas y el proveedor de acciones además de los tipos de elementos conocidos por la extensión.

La expresión triggerPoints describe los elementos que originarán la invocación de hijos o etiquetas de esta extensión. La expresión possibleChildren describe los elementos para los que la extensión será capaz de proporcionar un padre. Los clientes deben describir todos los elementos que pueden establecerse como la selección para asegurarse de que el enlace con el soporte del editor puede expandirse adecuadamente al nodo derecho.

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

Una extensión de contenido de navegador define un proveedor de contenido y un proveedor de etiquetas que pueden utilizarse para proporcionar hijos siempre que un elemento coincida con la expresión triggerPoints y también para proporcionar un padre siempre que un elemento coincida con la expresión possibleChildren.

Opcionalmente, los clientes pueden proporcionar un proveedor de acciones que pueden proporcionar contribuciones de menú y contribuciones de barra de acciones cuando se selecciona un elemento con el que ha contribuido la extensión o que coincide con la expresión triggerPoints. Los clientes también pueden optar por contribuir con un clasificador para ordenar los elementos con los que ha contribuido la extensión.



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

La expresión de habilitación permite que los clientes especifiquen la misma expresión para triggerPoints y possibleChildren.

En el caso de actionProvider, los clientes deben definir una expresión que indicará a la infraestructura cuándo debe invocarse org.eclipse.ui.navigator.CommonActionProvider. Debido a las colaboraciones a IActionBars, los clientes deben invocarse siempre que se seleccione un objeto en el que estén interesados. Por lo tanto, los clientes deben utilizar la discreción al decidir si debe habilitarse su extensión.



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

La expresión triggerPoints define los nodos en un árbol que debe originar que se invoque esta extensión para los hijos.



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

La expresión possibleChildren define los nodos de un árbol a los que puede contribuir esta extensión. Los clientes deben describir cuándo esta extensión de contenido puede proporcionar un padre para los elementos que coinciden con la expresión.



<!ELEMENT actionProvider (enablement?)>

<!ATTLIST actionProvider

class     CDATA #REQUIRED

id        CDATA #IMPLIED

dependsOn CDATA #IMPLIED

overrides CDATA #IMPLIED>

Proporciona el nombre de una clase que implementa org.eclipse.ui.navigator.CommonActionProvider. El proveedor de acciones tiene una oportunidad de contribuir al menú de contexto y a las acciones redirigibles definidas en IActionBars para la vista que alberga el navegador. Los clientes también pueden contribuir directamente al menú de vista a través del menú de la vista IActionBars.

Un nivel superior actionProvider es visible para un visor abstracto si hay un viewerActionBinding para ese actionProvider. Para los actionProviders anidados bajo un elemento navigatorContent, la visibilidad la controlará el ID de la extensión navigatorContent. Los viewerContentBinding los recogerán automáticamente los proveedores de acciones hijo. Consulte org.eclipse.ui.navigator.viewer para obtener más información acerca de los enlaces de visibilidad.

Los clientes pueden proporcionar los actionProvider bajo el elemento extention raíz (similar a otro navigatorContent) para poder controlar mejor su habilitación y el enlace de visor (consulte veiwerActionBinding).

Para los actionProviders raíz sin id, el id predeterminado es "org.eclipse.ui.navigator.actionProvider.X". Para que estos actionProvider tengan la oportunidad de contribuir a los menús o a las barras de acciones de un visor, es necesario definir un viewerActionBinding (como parte de org.eclipse.ui.navigator.viewer extension point) lo que declara un enlace entre el visor específico y el id predeterminado ("org.eclipse.ui.navigator.actionProvider.*"). Consulte la documentación para viewerActionBinding bajo la documentación del esquema de org.eclipse.ui.navigator.viewer para obtener más información.



<!ELEMENT commonWizard (enablement)>

<!ATTLIST commonWizard

type                  (import|export|new)

wizardId              CDATA #REQUIRED

menuGroupId           CDATA #IMPLIED

associatedExtensionId CDATA #IMPLIED>

El punto de extensión proporciona la capacidad de contribuir al menú definido por tipo.



<!ELEMENT commonFilter (filterExpression?)>

<!ATTLIST commonFilter

id              CDATA #REQUIRED

name            CDATA #REQUIRED

description     CDATA #IMPLIED

class           CDATA #IMPLIED

activeByDefault (true | false) >

Define un filtro que puede asociarse a un Visor común determinado. Los filtros comunes se enlazan a un visor como las extensiones de contenido utilizando org.eclipse.ui.navigator.viewer/viewerContentBinding.



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

Una expresión de núcleo de Eclipse que define lo que el filtro debe ocultar de una vista determinada.

Por ejemplo, los clientes pueden decidir ocultar todos los recursos que tengan un patrón determinado en su nombre (como por ejemplo "*.acme"). Cuando el filtro esté activo (activado de forma predeterminada o activado por el usuario), todos los recursos que acaben en "acme" se ocultarán de la vista del usuario.

Los clientes pueden utilizar filterExpression o el atributo "class", pero no ambos.



<!ELEMENT commonSorter (parentExpression)>

<!ATTLIST commonSorter

id    CDATA #REQUIRED

class CDATA #REQUIRED>

Un commonSorter declara una subclase de org.eclipse.jface.viewers.ViewerSorter que se utiliza para ordenar hijos en el árbol. El parentExpression anidado describe cuándo debe utilizarse el commonSorter. Si un elemento coincide con parentExpression, commonSorter ordenará sus hijos.



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

commonSorter utiliza un parentExpression para identificar cuándo es aplicable. Si parentExpression para un commonSorter coincide con un elemento dado, ese commonSorter se utilizará para ordenar los hijos de ese elemento (según devuelva el proveedor de contenido del servicio de contenido.)



<!ELEMENT override EMPTY>

<!ATTLIST override

suppressedExtensionId CDATA #REQUIRED

policy                (InvokeOnlyIfSuppressedExtAlsoVisibleAndActive|InvokeAlwaysRegardlessOfSuppressedExt) "InvokeAlwaysRegardlessOfSuppressedExt">

Cuando la expresión triggerPoints de la extensión suprimida y de la extensión declarada están ambas habilitadas en un elemento dado, se invocará esta extensión, pero no la extensión suprimida. Los clientes que especifiquen un elemento override también deben proporcionar un proveedor de contenido que implementa org.eclipse.ui.navigator.IPipelinedTreeContentProvider, que proporciona métodos para interceptar peticiones para hijos, padres y actualizaciones directas al visor.



<!ELEMENT dropAssistant (possibleDropTargets)>

<!ATTLIST dropAssistant

id    CDATA #REQUIRED

class CDATA #REQUIRED>

Proporciona una subclase de org.eclipse.ui.navigator.CommonDropAdapterAssistant que puede proporcionar una validación programática para una operación de soltar, solicitar tipos de transferencia adicionales y manejar la operación de soltar.

Se invocará dropAssistant siempre que los elementos que se arrastren coincidan con la expresión possibleChildren de la extensión navigatorContent y el destino para soltar de la operación lo describa la expresión possibleDropTargets del elemento dropAssistant.

Una extensión puede tener muchos adaptadores de soltar con expresiones possibleDropTargets mutuamente excluyentes. El primer adaptador de soltar que coincida con el destino de soltar dado y devuelva un estado VÁLIDO para CommonDropAdapterAssistant.validateDrop(...) tendrá la oportunidad de manejar la operación de soltar.



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

Describir los destinos de soltar posibles que puede manejar un dropAssistant determinado.



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

Elemento raíz genérico. El elemento puede utilizarse en un punto de extensión para definir su expresión enablement. Los hijos de una expresión de habilitación se combinan mediante el operador and.



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

Este elemento representa una operación NOT en el resultado de evaluar la correspondiente expresión de subelemento.



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

Este elemento representa una operación AND en el resultado de evaluar todas las expresiones de los correspondientes subelementos.



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

Este elemento representa una operación OR en el resultado de evaluar todas las expresiones de subelementos.



<!ELEMENT instanceof EMPTY>

<!ATTLIST instanceof

value CDATA #REQUIRED>

Este elemento se utiliza para realizar una comprobación instanceof del objeto que tiene el foco. La expresión devuelve EvaluationResult.TRUE si el tipo del objeto es un subtipo del tipo especificado por el atributo value. De lo contrario, se devuelve EvaluationResult.FALSE.



<!ELEMENT test EMPTY>

<!ATTLIST test

property CDATA #REQUIRED

args     CDATA #IMPLIED

value    CDATA #IMPLIED>

Este elemento se utiliza para evaluar el estado de propiedad del objeto que tiene el foco. El conjunto de propiedades que pueden probarse puede ampliarse mediante el punto de extensión de probador de propiedades. La expresión de prueba devuelve EvaluationResult.NOT_LOADED si el probador de propiedades que realiza la prueba no se ha cargado todavía.



<!ELEMENT systemTest EMPTY>

<!ATTLIST systemTest

property CDATA #REQUIRED

value    CDATA #REQUIRED>

Prueba una propiedad del sistema llamando al método System.getProperty y compara el resultado con el valor especificado con el atributo value.



<!ELEMENT equals EMPTY>

<!ATTLIST equals

value CDATA #REQUIRED>

Este elemento se utiliza para realizar una comprobación equals del objeto que tiene el foco. La expresión devuelve EvaluationResult.TRUE si el objeto es igual al valor proporcionado por el atributo value. De lo contrario, se devuelve EvaluationResult.FALSE.



<!ELEMENT count EMPTY>

<!ATTLIST count

value CDATA #REQUIRED>

Este elemento se utiliza para probar el número de elementos de una colección.



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

<!ATTLIST with

variable CDATA #REQUIRED>

Este elemento cambia el objeto en el que hay que inspeccionar todos los elementos hijo para que pase a ser el objeto al que hace referencia la variable dada. Si la variable no se puede resolver, la expresión lanzará una ExpressionException al evaluarla. Los hijos de una expresión with se combinan mediante el 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 cambia el objeto en el que hay que inspeccionar todos los elementos hijo para que pase a ser el objeto al que hace referencia la variable dada. Si la variable no se puede resolver, la expresión lanzará una ExpressionException al evaluarla. Los hijos de una expresión with se combinan mediante el operador and.



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

<!ATTLIST adapt

type CDATA #REQUIRED>

Este elemento se utiliza para adaptar el objeto en foco al tipo especificado por el atributo type. La expresión retorna sin cargar si el adaptador o el tipo al que se hace referencia todavía no está cargado. Se lanza una ExpressionException durante la evaluación si el nombre del tipo no existe en absoluto. Los hijos de una expresión adapt se combinan mediante el operador and.



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

<!ATTLIST iterate

operator (or|and) >

Este elemento se usa para reiterar una variable del tipo java.util.Collection. Si el objeto que tiene el foco no es del tipo java.util.Collection, se enviará una ExpressionException al evaluar la expresión.




Añadir contenido

El ejemplo siguiente describe una extensión de contenido que proporciona contenido de recursos. La expresión triggerPoints determina cuando se invoca inicialmente esta extensión. Si un viewerContentBinding coincide con esta extensión y tiene el atributo "isRoot" establecido en true, la extensión se utilizará independientemente de si el elemento raíz coincide con la expresión 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>

Añadir acciones

Los clientes puede utilizar contribuciones de objeto o visor (vea org.eclipse.ui.popupMenus) para proporcionar acciones para su vista. A veces, los clientes requieren un mayor grado de flexibilidad del que permiten cualquiera de estos procedimientos y por eso, la infraestructura del Navegador común soporta la adición de proveedores de acciones. Los "proveedores de acciones" crean una subclase de org.eclipse.ui.actions.ActionGroup y tiene la oportunidad de rellenar las barras de acciones y los menús basados en distintos eventos (selección y pulsación con el botón derecho respectivamente.)

Los clientes pueden asociar uno o varios proveedores de acciones a una extensión de contenido determinada o declarar los proveedores de acciones como contribuciones de nivel superior, no asociados a ninguna extensión de contenido determinada. Los proveedores de acciones de nivel superior deben estar asociados a una instancia determinada del visor utilizando el punto de extensión org.eclipse.ui.navigator.viewer/viewerActionBinding. Los proveedores de acciones anidada se enlazan automáticamente a un visor basándose en si la extensión de contenido que contiene también está enlazada al visor (consulte org.eclipse.ui.navigator/viewerContentBinding).

El ejemplo siguiente muestra ambos procedimientos. "TestNestedActionProvider" tendrá la oportunidad de contribuir al menú y org.eclipse.ui.IActionBars solo cuando la extensión "org.eclipse.ui.tests.navigator.testContent" sea visible y esté activa. Si el usuario desactiva la extensión de prueba del diálogo "Personalizaciones disponibles", el proveedor de acciones anidado ya no tendrá la oportunidad 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>

Los clientes pueden definir filtros utilizando subclases de org.eclipse.jface.viewers.ViewerFilter o a través de expresiones de núcleo de Eclipse. El ejemplo siguiente muestra ambas técnicas. Los clientes solo pueden utilizar una de las dos opciones. En las extensiones en las que se especifiquen ambas opciones en error solo respetará el filtro de expresiones. Los campos de nombre y de descripción son traducibles y deberían externalizar las series en entornos reales.

<extension point=

"org.eclipse.ui.navigator.navigatorContent"

>

<commonFilter class=

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

description=

"Ocultar objetos TestItem que acaban en el número &quot;3&quot;"

id=

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

name=

"TestItems que acaban en el número &quot;3&quot;"

activeByDefault=

"true"

/>

<commonFilter description=

"Oculta todas las instancias de Test Item"

id=

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

name=

"Un filtro de expresión TestItem (debe ordenarse alfabéticamente)"

>

<filterExpression>

<instanceof value=

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

/>

</filterExpression>

</commonFilter>

Un ordenador común está determinado para un conjunto de hijos basados en su padre. La clase del ordenador debe ser una subclase de 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>

El ejemplo siguiente muestra cómo añadir las acciones de acceso directo de asistente para "Carpeta nueva" y "Archivo nuevo", que están habilitadas en las subclases específicas de org.eclipse.core.resources.IResource. Los clientes pueden utilizar cualesquiera partes de org.eclipse.core.expressions que sean necesarias para describir cuándo deben estar disponibles las opciones de menú. El wizardId especificado a continuación debe corresponder a uno de los puntos de extensión org.eclipse.ui.xxxWizards.

Para los clientes que construyen sus propios visores o componentes de vista, asegúrese de utilizar org.eclipse.ui.navigator.WizardActionGroup para poblar correctamente el menú. Consulte esa clase para obtener más documentación acerca de cómo utilizar esta característica.


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