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:
...Además del modelo Java, la clase
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()));
...
StandardJavaElementContentProvider
soporta los siguientes tipos de elementos de entrada: IJavaProject
,
IPackageFragmentRoot
, IPackageFragment
y IFolder
....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.
DecoratingLabelProvider decorator= new DecoratingLabelProvider(labelProvider, new ProblemsLabelDecorator());
viewer.setLabelProvider(decorator);
...
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. OverrideIndicatorLabelDecorator
: el cliente debe estar a la escucha de los cambios de modelo Java (consulte
JavaCore.addElementChangedListener
) y decidir si los cambios descritos por la versión delta invalidan el indicador de alteración temporal de los elementos presentados en el visor. Si es así, la clase que inspecciona la versión delta debe desencadenar un repintado (repaint) de los elementos Java correspondientes utilizando la API de visor JFace estándar (consulte los métodos de actualización de StructuredViewer).ProblemsLabelDecorator
: el cliente debe estar a la escucha de los
cambios notificados por la decoración por medio de
ProblemsLabelChangedEvent
(consulte también
ProblemsLabelDecorator.addListener
). Dado que el modelo de marcador se basa en recursos, el escuchador debe correlacionar las notificaciones de recurso con su modelo de datos subyacente. Para obtener un ejemplo que muestra cómo realizar esta operación para visores que presentan elementos Java, consulte las clases internas ProblemTreeViewer.handleLabelProviderChanged.