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.