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.
org.eclipse.ui.navigator.CommonActionProvider
)org.eclipse.jface.viewers.ITreeContentProvider
o
org.eclipse.ui.navigator.ICommonContentProvider
.
org.eclipse.jface.viewers.ILabelProvider
o para obtener una funcionalidad más avanzada
org.eclipse.ui.navigator.ICommonLabelProvider
.
org.eclipse.ui.navigator.IDescriptionProvider
para añadir texto a
la barra de estado en la parte inferior del entorno de trabajo de Eclipse basándose en la selección del visor.<!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.
org.eclipse.jface.viewers.ViewerSorter
.<!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.
org.eclipse.ui.navigator.CommonDropAdapterAssistant
<!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.
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>
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 "3""
id=
"org.eclipse.ui.tests.navigator.filters.TestItemsThatEndWith3"
name=
"TestItems que acaban en el número "3""
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>
Copyright (c) 2002, 2005 IBM Corporation y otros.
Reservados todos los derechos. Este programa y sus materiales adjuntos están
disponibles bajo los términos de la licencia pública común (Eclipse Public
License) v1.0 que acompaña a esta distribución, y está disponible en http://www.eclipse.org/legal/epl-v10.html