O editor de exemplo Java herda vários comportamentos padrão úteis de AbstractTextEditor. A estrutura de edição de texto trata várias outras responsabilidades que podem ser personalizadas fazendo a substituição de métodos em AbstractTextEditor. Procure na implementação dessa classe e de suas subclasses para consultar como o comportamento é personalizado na estrutura.
A seguir são apresentados alguns dos recursos úteis da estrutura que podem ser configurados.
Os editores de texto normalmente fornecem preferências do usuário que controlam a apresentação e o comportamento do editor. Na estrutura do texto, cada instância do editor de texto possui um armazenamento de preferências associado que é utilizado para acessar as preferências do usuário. Esse armazenamento de preferências pode ser configurado pelo seu editor ou você pode herdar de armazenamentos de preferências já utilizados na estrutura.
No caso do editor de exemplo Java, ele herda o armazenamento de preferências inicializado por TextEditor. Esse é o armazenamento de preferências definido pelo plug-in do editor do workbench.
protected void initializeEditor() { ... setPreferenceStore(EditorsPlugin.getDefault().getPreferenceStore()); }As preferências do plug-in de editores podem ser manipuladas nas páginas de preferências Geral > Editores e Geral > Editores > Editors de Texto.
Se não desejar utilizar as preferências de texto padrão do workbench para seu editor, é possível definir um armazenamento de preferências diferente. Isso é normalmente feito pela substituição de initializeEditor e pela definição de seu próprio armazenamento de preferências. Se você utilizar seu próprio armazenamento de preferências, também será necessário substituir o método handlePreferenceStoreChanged() que é acionado sempre que uma preferência for atualizada.
Os Contextos de ligação de teclas são úteis para estabelecer uma ordem de procura para as ligações de teclas. Ter ligações de teclas contextuais reduz as chances que plug-ins diferentes contribuam para seqüências de teclas conflitantes. Por padrão, o workbench opera em um contexto genérico para trabalhar com janelas ou diálogos. Quando um editor de texto fica ativo, ele é responsável por reconfigurar o contexto para o contexto de edição de texto, para que as ligações de teclas específicas do editor fiquem ativas.
Na estrutura de texto da plataforma, cada instância do editor de texto tem uma matriz associada dos escopos de ligação da tecla. Ela é responsável por configurar os escopos corretos quando se torna ativa. O AbstractDecoratedTextEditor define este escopo e se ocupa de sua ativação. O escopo é designado em um método que é chamado a partir 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 você deseja que o seu editor defina seu próprio contexto de ligação de teclas, você pode substituir este método na sua classe do editor ou definir o escopo dinamicamente, utilizando setKeybindingScopes.
O contexto em si deve ser definido com o id correspondente no ponto de extensão de org.eclipse.ui.contexts. A seguir é apresentada a definição para o 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: Utilizamos os termos escopo e contexto de modo passível de mudança nesta discussão. Os nomes dos métodos nas classes de texto ainda se referem aos contextos de ligação de teclas como escopos. Esses nomes de métodos refletem a implementação original de contextos como escopos e utilizam terminologia antiga.)