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.