A API da UI do JDT fornece classes que permitem apresentar o modelo Java ou partes dele em um visualizador JFace padrão. Esta funcionalidade é fornecida principalmente por:
Fornecedores de conteúdo e rótulo para visualizadores JFace estão descritos detalhadamente em Visualizadores JFace.
Quando se conhece o mecanismo básico de plataformas, reunir os fornecedores de conteúdo e rótulos Java é muito simples: ...
TreeViewer viewer= new TreeViewer(parent); // Fornecer membros de uma unidade de compilação ou arquivo de classe, mas nenhum elemento de cópia de trabalho
ITreeContentProvider contentProvider= new StandardJavaElementContentProvider(true, false);
viewer.setContentProvider(contentProvider);
// Há mais sinalizadores definidos na classe JavaElementLabelProvider
ILabelProvider labelProvider= new JavaElementLabelProvider(
JavaElementLabelProvider.SHOW_DEFAULT |
JavaElementLabelProvider.SHOW_QUALIFIED |
JavaElementLabelProvider.SHOW_ROOT);
viewer.setLabelProvider(labelProvider);
// Utilizando o modelo Java conforme a entrada do visualizadores apresentam projetos Java no primeiro nível.
viewer.setInput(JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()));
...
O exemplo anterior utiliza o modelo aJava (IJavaModel) como o elemento de entrada para o visualizador. O StandardJavaElementContentProvider também suporta IJavaProject, IPackageFragmentRoot, IPackageFragment e IFolder como elementos de entrada:
JavaElementImageDescriptor pode ser utilizado para criar uma imagem com base em um descritor arbitrário de imagem de base e em um conjunto de sinalizadores que especificam quais adornos específicos de Java (ex. estático, final, sincronizado, ....) devem ser sobrepostos na imagem.
...
DecoratingLabelProvider decorator= new DecoratingLabelProvider(labelProvider, new ProblemsLabelDecorator()); viewer.setLabelProvider(decorator);
...
Da mesma maneira, OverrideIndicatorLabelDecorator pode ser utilizado para decorar um provedor de rótulo normal para mostrar os indicadores de implementação e de substituição dos métodos.
Nem o OverrideIndicatorLabelDecorator nem o ProblemsLabelDecorator atende a alterações do modelo. Assim, o visualizador não atualizará sua apresentação se o gabarito de marcador Java ou de recurso for alterado. O motivo de enviar a atualização para o cliente dessas classes é que ainda não há uma implementação genérica que preencha todos os problemas de desempenho. Tratar a inspeção delta do gabarito Java e a atualização do visualizador em cada decorador ou provedor de rótulo levaria a várias inspeções delta e a atualizações desnecessárias do visualizador.
Portanto, o que o cliente precisa fazer para atualizar seus visualizadores?
ProblemTreeViewer.handleLabelProviderChanged.Pelos mesmos motivos descritos para os decoradores de rótulos, o StandardJavaElementContentProvider não atende alterações de modelos. Se o visualizador precisar atualizar sua apresentação de acordo com alterações de gabaritos Java, o cliente deverá incluir um ouvinte correspondente em JavaCore. Se a alteração descrita por delta invalidar a estrutura dos elementos apresentados no visualizador, o cliente deverá atualizar o visualizador utilizando a API do JFace padrão (consulte Atualizar Métodos no StructuredViewer, e Incluir e Remover Métodos do TableViewer e AbstractTreeViewer).
JavaElementSorter pode ser conectado a um visualizador JFace para ordenar elementos Java de acordo com o estilo de ordenação da UI de Java.