同步SWT表和TextEditor之间的修改

时间:2015-05-16 20:02:10

标签: eclipse-plugin swt text-editor jface

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

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

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

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

或者,有更有效的方法吗?任何人都可以提供任何提示吗?

1 个答案:

答案 0 :(得分:1)

IDocument使用的TextEditor可让您访问文档内容。通过以下方式获取此信息:

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);