我们有一个包含四个页面的 FormEditor:三个 FormPages,第四个页面是 XTextEditor 作为源页面。
每当用户在 FormPages 上进行任何更改(例如更改文本框中的值)时,我们都会更改 XTextDocument.modify() 方法中的 EMF 模型内容,如下所示:
xtextEditor.getDocument().modify(new IUnitOfWork.Void<XtextResource>() {
@Override
public void process(XtextResource state) throws Exception {
IParseResult parseResult = state.getParseResult();
Assert.isNotNull(parseResult);
EObject rootASTElement = parseResult.getRootASTElement();
if (rootASTElement instanceof MyModel) {
XyzType t = ((MyModel) rootASTElement).getXyzType();
t.setName(name); <- ‘name’ is the new value entered on FormPage text box
}
}
});
现在,我们希望在 FormPages 中获得通知,只要 EMF 模型在用户对源页面(即 XTextEditor)进行一些更改时发生更改。
我们尝试将 IXtextModelListener 和 IXtextDocumentContentObserver 添加到 IXtextDocument;但是这些会为在 XTextEditor 中输入的每个字符调用。
我们的要求是仅在 EMF 模型中的值发生更改时获取通知(而不是文本格式,例如插入/删除空格时)。
有人可以提供一些指示吗?
问候, 阿基尔