Outras responsabilidades do editor de texto

O editor exemplo Java herda muito do seu comportamento predefinido útil do AbstractTextEditor. O quadro de edição de texto trata várias outras responsabilidades que se podem personalizar mediante sobreposição de métodos no AbstractTextEditor.  Procure a implementação desta classe e respectivas subclasses para ver como o comportamento é personalizado no quadro.

Seguem-se algumas das funções úteis do quadro que se podem configurar.

Tratamento de preferências

Os editores de texto normalmente contribuem com preferências de utilizador que controlam a apresentação e o comportamento do editor. No quadro do texto, cada instância do editor de texto tem um arquivo de preferências associado que se utiliza para aceder a preferências de utilizador.  Este arquivo de preferências pode ser configurado pelo editor ou poderá herdar configurações dos arquivos de preferências já utilizados no quadro.

No caso do editor exemplo Java, este herda o arquivo de preferências iniciado pelo TextEditor. Trata-se do arquivo de preferências definido pelo plug-in dos editores da área de trabalho.   

protected void initializeEditor() {
	...
	setPreferenceStore(EditorsPlugin.getDefault().getPreferenceStore());
}
As preferências de plug-in dos editores podem ser manipuladas nas páginas de preferências Geral > Editores e Geral > Editores > Editores de Texto.

Se não quiser utilizar as preferências de texto da área de trabalho padrão para o editor, poderá definir um arquivo de preferências diferente.  Tal realiza-se normalmente mediante sobreposição do initializeEditor e configuração de um arquivo de preferências próprio.  Se utilizar um arquivo de preferências próprio, também irá precisar de sobrepor o método handlePreferenceStoreChanged(), o qual é desencadeado sempre que se actualiza uma preferência.

Associações de teclas

Os contextos de associação de teclas são úteis para estabelecer uma ordem de busca de associações de teclas. Ter associações de teclas contextuais reduz as hipóteses de os diferentes plug-ins contribuírem com sequências de teclas contrárias. Por predefinição, a área de trabalho funciona num contexto genérico para trabalhar com janelas ou caixas de diálogo. Quando um editor de texto fica activo, é responsável por repor o contexto de edição de texto original, de modo a que estejam activas associações de teclas específicas.

No quadro do texto da plataforma, cada instância do editor de texto tem uma matriz de âmbitos de associações de teclas. É responsável por definir os âmbitos correctos quando fica activo. OAbstractDecoratedTextEditor define este âmbito e encarrega-se de o tornar activo. O âmbito é atribuído num método que é chamado do construtor:

protected void initializeKeyBindingScopes() {
	setKeyBindingScopes(new String[] { "org.eclipse.ui.textEditorScope" });  
}

O argumento para o método é uma matriz de IDs que foram definidos para contextos. Se quiser que o editor defina o seu próprio contexto de associações de teclas, poderá sobrepor este método na classe do editor ou definir o âmbito dinamicamente com setKeybindingScopes.

O próprio contexto tem de ser definido com o ID correspondente no ponto de extensão org.eclipse.ui.contexts. De seguida é apresentada a definição do contexto de edição de texto.

   <extension
	point="org.eclipse.ui.contexts">
	<context
		name="%context.editingText.name"
		description="%context.editingText.description"
		id="org.eclipse.ui.textEditorScope"
		parentId="org.eclipse.ui.contexts.window">
	</context>
	...

(Nota:  Empregamos os termos âmbito e contexto no mesmo sentido nesta abordagem. Os nomes de métodos nas classes de texto ainda se referem aos contextos de associações de teclas como âmbitos. Estes nomes de métodos reflectem a implementação original de contextos como âmbitos e utilizam terminologia antiquada.)