A API da UI do JDT fornece várias classes para apresentar o gabarito Java ou partes dele em um visualizador JFace padrão. Esta funcionalidade é fornecida principalmente por:
...Além do gabarito Java, a classe
IJavaProject jProject= ...;
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á mas sinalizadores definidos na classe JavaElementLabelProvider
ILabelProvider labelProvider= new JavaElementLabelProvider(
JavaElementLabelProvider.SHOW_DEFAULT |
JavaElementLabelProvider.SHOW_QUALIFIED |
JavaElementLabelProvider.SHOW_ROOT);
viewer.setLabelProvider(labelProvider);
// Utilizando o gabarito Java conforme a entrada dos visualizadores apresentam projetos Java no primeiro nível.
viewer.setInput(JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()));
...
StandardJavaElementContentProvider
suporta os seguintes tipos de elementos de entrada: IJavaProject
,
IPackageFragmentRoot
, IPackageFragment
e IFolder
....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.
DecoratingLabelProvider decorator= new DecoratingLabelProvider(labelProvider, new ProblemsLabelDecorator());
viewer.setLabelProvider(decorator);
...
OverrideIndicatorLabelDecorator
nem o
ProblemsLabelDecorator
atende alterações de gabaritos. 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.OverrideIndicatorLabelDecorator
: o cliente deve atender
alterações de gabarito Java (consulte JavaCore.addElementChangedListener
)
e decidir se a(s) alteração(ões) descrita(s) por delta invalida(m) o indicador de
substituição de elementos apresentados no visualizador. Se invalidar(em), a classe que inspeciona
o delta deverá disparar um redesenho dos elementos Java correspondentes utilizando
a API do visualizador JFace padrão (consulte os métodos de atualização em StructuredViewer).ProblemsLabelDecorator
: o cliente deve atender alterações
notificadas pelo decorador através de um
ProblemsLabelChangedEvent
(consulte também
ProblemsLabelDecorator.addListener
). Como o gabarito de marcador baseia-se no recurso, o ouvinte tem
que mapear as notificações de recursos para seu gabarito de dados de base. Para
obter um exemplo que mostre como fazer isso para os visualizadores que apresentam elementos Java,
consulte as classes internas ProblemTreeViewer.handleLabelProviderChanged.