Configurar um visualizador de origem

Até aqui abordámos o SourceViewer no contexto da gestão de anotações de código fonte.

O SourceViewer também é o eixo central para configurar o editor com comportamento de plug-in como, por exemplo, ajuda à passagem do rato para texto e destaque de sintaxe.   No caso destas funções, o editor faculta uma SourceViewerConfiguration que se utiliza para configurar o SourceViewer quando este for criado.  O editor exemplo Java só tem de facultar uma SourceViewerConfiguration apropriada para as suas necessidades.  A porção de código seguinte mostra como o JavaTextEditor cria a sua configuração:

protected void initializeEditor() {
	super.initializeEditor();
	setSourceViewerConfiguration(new JavaSourceViewerConfiguration());
	...

Posto isto, que faz a JavaSourceViewerConfiguration?  Grande parte do seu comportamento é herdado da SourceViewerConfiguration, a qual define estratégias predefinidas para comportamentos de editores com plug-in como, por exemplo, indentação automática, comportamento de anulação, comportamento de duplo clique, ajuda à passagem do rato para texto, destaque de sintaxe e formatação.  Os métodos públicos na SourceViewerConfiguration facultam os objectos ajudantes que implementam estes comportamentos.

Se o comportamento predefinido estabelecido na SourceViewerConfiguration não for o indicado para o editor em questão, deverá sobrepor initializeEditor() como se mostra supra e definir uma configuração de visualizador de fonte própria no editor.   A sua configuração pode sobrepor métodos na SourceViewerConfiguration para fornecer objectos ajudantes personalizados que implementem comportamento para o editor.  A porção de código seguinte mostra duas das formas em que a JavaSourceViewerConfiguration fornece objectos ajudantes personalizados para o editor exemplo Java:

public IAnnotationHover getAnnotationHover(ISourceViewer sourceViewer) {
	return new JavaAnnotationHover();
}
	
public IAutoIndentStrategy getAutoIndentStrategy(ISourceViewer sourceViewer, String contentType) {
	return (IDocument.DEFAULT_CONTENT_TYPE.equals(contentType) ? new JavaAutoIndentStrategy() : new DefaultAutoIndentStrategy());
}

No primeiro método, é facultada uma classe ajudante personalizada para implementar ajuda à passagem do rato para anotações.  No segundo método, o tipo de conteúdo predefinido do documento é consultado para determinar se deve ser utilizada uma estratégia de auto-indentação personalizada ou a estratégia predefinida.

Consulte a referência de API sobre SourceViewerConfiguration para ver todas as formas de configuração de um visualizador de fonte mediante sobreposição de métodos.