在 SWT table 和 TextEditor 之间同步修改

Synchronize modification between SWT table and TextEditor

我遇到了问题,想寻求解决方案。

我正在开发一个 eclipse 插件项目,其中需要一种资源文件的编辑器。资源文件具有类似于 CSV 文件的结构。我的想法是为用户提供以纯文本格式和 SWT table 编辑此类文件的选项。检查数据需要纯文本,table 为编辑提供了更大的灵活性,例如按列排序。

我已经能够创建一个 MultiPageEditorPart,其中一页为 org.eclipse.ui.editors.text.TextEditor,另一页为 org.eclipse.swt.widgets.Table 以及搜索栏等其他几个小部件。资源文件的内容可以在TextEditor中显示,也可以编辑保存。另一方面,内容也可以加载到 table 中,排序和搜索都很好。

问题是:当我在 table 中编辑单元格时,我希望更改也反映在 TextEditor 中,反之亦然。由于资源文件可以很大,我希望保存动作只发生在TextEditor,即我不希望在table中的任何修改直接存储到资源文件中,而是标记文件脏,但我无法弄清楚如何。例如,如何获取 EditorInput 的内容,逐行检查,并在 TextEditor 之外修改?

或者,是否有更有效的方法来做到这一点?谁能给点提示?

TextEditor 使用的 IDocument 使您可以访问文档内容。用类似的东西得到这个:

IDocumentProvider provider = editor.getDocumentProvider();

IEditorInput input = editor.getEditorInput();

IDocument document = provider.getDocument(input);

IDocument 有很多访问行的方法,例如:

int getLineOffset(int line);

int getLineLength(int line);

及修改文字的方法:

void replace(int offset, int length, String text);