Пример редактора Java наследует множество полезных функций из класса AbstractTextEditor. Среда редактирования текста поддерживает различные функции, которые можно настроить путем переопределения методов, заданных в классе AbstractTextEditor. Особенности настройки свойств среды можно изучить, просмотрев реализацию этого класса и его производных классов.
Ниже рассмотрены полезные функции среды, доступные для настройки.
Как правило, в текстовых редакторах предусмотрены пользовательские параметры, управляющие оформлением и работой редактора. В текстовой среде каждый экземпляр редактора связан с хранилищем параметров, обеспечивающим работу с пользовательскими параметрами. Это хранилище можно настроить с помощью редактора, либо наследовать из уже существующих в среде хранилищ.
В случае примера редактора Java наследуется хранилище параметров, инициализированное классом TextEditor. Оно представляет собой хранилище, определенное модулем редактора рабочей среды.
protected void initializeEditor() { ... setPreferenceStore(EditorsPlugin.getDefault().getPreferenceStore()); }Параметры модуля редактора можно настроить с помощью страниц Общие > Редакторы и Общие > Редакторы > Текстовый редактор.
Если стандартные параметры текста рабочей среды неприменимы, для редактора можно указать другое хранилище параметров. В этом случае рекомендуется переопределить метод initializeEditor, указав нужное хранилище. Для собственного хранилища также потребуется переопределить метод handlePreferenceStoreChanged(), вызываемый каждый раз при обновлении параметра.
Контексты привязок клавиш позволяют задать порядок поиска привязок клавиш. Применение контекстных привязок клавиш позволяет снизить вероятность конфликтов, связанных с комбинациями клавиш, при работе с несколькими независимыми модулями. По умолчанию рабочая среда использует базовый контекст для работы с окнами диалога и мастерами. При открытии текстовый редактор должен изменить контекст таким образом, чтобы активировать соответствующие привязки клавиш.
В текстовой среде платформы для каждого экземпляра текстового редактора создается массив областей привязок клавиш. При активации он должен выбирать правильные области. Определение области входит в состав класса AbstractDecoratedTextEditor. Кроме того, этот класс управляет ее активацией. Назначение области выполняется с помощью метода, вызываемого из конструктора:
protected void initializeKeyBindingScopes() { setKeyBindingScopes(new String[] { "org.eclipse.ui.textEditorScope" }); }
В качестве аргумента методу передается массив ИД различных контекстов. При необходимости вы можете переопределить этот метод в классе редактора, либо задать область динамически с помощью метода setKeybindingScopes.
В качестве определения контекста в точке расширения org.eclipse.ui.contexts должен быть указан соответствующий ИД. Ниже приведено определение контекста, связанного с редактированием текста.
<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> ...
(Примечание: В данном случае термины область и контекст заменяют друг друга. В именах методов текстовых классов контексты привязок клавиш по прежнему упоминаются в качестве областей. В именах таких методов применяется устаревшая терминология, соответствующая исходной реализации контекстов в качестве областей).