Cómo presentar elementos Java en un visor JFace estándar

La API UI de JDT proporciona varias clases para presentar el modelo Java o partes del mismo en un visor JFace estándar. Esta funcionalidad se suministra principalmente mediante:

Unir los componentes es bastante sencillo:
	...
IJavaProject jProject= ...;

TreeViewer viewer= new TreeViewer(parent);
// Proporcionar miembros de una unidad de compilación o archivo de clase, pero no elementos de copia de trabajo
ITreeContentProvider contentProvider= new StandardJavaElementContentProvider(true, false);
viewer.setContentProvider(contentProvider);
// Existen más identificadores definidos en la clase JavaElementLabelProvider
ILabelProvider labelProvider= new JavaElementLabelProvider(
JavaElementLabelProvider.SHOW_DEFAULT |
JavaElementLabelProvider.SHOW_QUALIFIED |
JavaElementLabelProvider.SHOW_ROOT);
viewer.setLabelProvider(labelProvider);

// Utilizar el modelo Java como los proyectos Java presentes de entrada de visores en el primer nivel.
viewer.setInput(JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()));
...

Además del modelo Java, la clase StandardJavaElementContentProvider soporta los siguientes tipos de elementos de entrada: IJavaProject, IPackageFragmentRoot, IPackageFragment y IFolder.

Añadir decoraciones de problema y alteración temporal

Cuando está previsto que un visor incluya anotaciones de problemas, se utiliza DecoratingLabelProvider junto con ProblemsLabelDecorator. A continuación figura un fragmento de código que indica la utilización de una decoración de de etiqueta de problema:
	...
DecoratingLabelProvider decorator= new DecoratingLabelProvider(labelProvider, new ProblemsLabelDecorator());
viewer.setLabelProvider(decorator);
...


Del mismo modo, puede utilizarse OverrideIndicatorLabelDecorator para decorar un proveedor de etiquetas habitual a fin de mostrar los indicadores de implementación y alteración temporal para los métodos.

Actualizar la presentación en cambios de modelo

Ni OverrideIndicatorLabelDecorator ni ProblemsLabelDecorator están a la escucha de los cambios de modelo. Por tanto, el visor no actualiza su presentación si cambia el modelo de marcador de recursos o Java. La razón de trasladar la actualización al cliente con respecto a estas clases es que aún no existe una implementación genérica que satisfaga todos los requisitos del rendimiento. El manejo de inspección de versión delta de modelo Java y renovación de visores en cada decoración o proveedor de etiquetas conduciría a múltiples inspecciones delta y a actualizaciones de visor innecesarias.

Por tanto, ¿qué debe hacer el cliente para poder actualizar sus visores?
Por las mismas razones mencionadas con respecto a las decoraciones de etiquetas, StandardJavaElementContentProvider no está a la escucha de los cambios de modelo. Si el visor debe actualizar su presentación de acuerdo con los cambios de modelo Java, el cliente debe añadir un escuchador adecuado a JavaCore. Si el cambio descrito por la versión delta invalida la estructura de los elementos presentados en el visor, el cliente debe actualizar el visor utilizando la API JFace estándar (consulte los métodos de renovación de StructuredViewer y los métodos add y remove de TableViewer y AbstractTreeViewer).

Copyright IBM Corporation y otros 2000, 2002. Reservados todos los derechos.