我有一个自己的语言的服装编辑器,我想从它们之间的属性菜单进行更改,并相应地重新为语法着色。我不知道我是否需要使用调解器或其他东西。语法重新着色的唯一方法是关闭并打开当前文件。
在您的编辑器中,您需要侦听来自首选项存储的属性更改事件。
在你的initializeEditor
方法中调用setPreferenceStore(preferenceStore)
覆盖handlePreferenceStoreChanged
方法:
@Override
protected void handlePreferenceStoreChanged(PropertyChangeEvent event)
{
// TODO update settings affected by the event
// TODO If required invalidate the current presentation to update the colors
getSourceViewer().invalidateTextPresentation();
super.handlePreferenceStoreChanged(event);
}
您需要添加代码来查看属性更改事件,以查看它是否是需要处理的事件。如果事件改变了一些东西(比如改变颜色),需要重新绘制文本,调用getSourceViewer().invalidateTextPresentation()
。
要支持所有正常的文本编辑器首选项,您需要在setPreferenceStore
调用中使用链式首选项存储:
IPreferenceStore generalTextStore = EditorsUI.getPreferenceStore();
IPreferenceStore yourPreferenceStore = get your preference store
IPreferenceStore combinedPreferenceStore = new ChainedPreferenceStore(new IPreferenceStore[] {yourPreferenceStore, generalTextStore});
setPreferenceStore(combinedPreferenceStore);