在 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);
我遇到了问题,想寻求解决方案。
我正在开发一个 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);