我有CompareEditor中显示的CompareEditorInput,它比较文本数据。在CompareEditor之外更改时,我需要重新加载CompareEditorInput。重载比较编辑器输入
- 打开比较编辑器(CompareUI.openCompareEditor(输入))
- 比较输入被改变(ISteramContentAccessor.getContents()返回更改的内容)
- 泰尔打开比较编辑器来加载CompareEditorInput < - 需要实现。
我有CompareEditor中显示的CompareEditorInput,它比较文本数据。在CompareEditor之外更改时,我需要重新加载CompareEditorInput。重载比较编辑器输入
你可以称之为setInput(sameInput)
上CompareEditor
,但由于CompareEditor
是内部和EditorPart
然后一个解决方法是调用IEditorPart
.init(IEditorSite site, IEditorInput input)
setInput()
是不公开的。
IWorkbenchWindow wnd = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
IEditorPart editor = wnd.getActivePage().findEditor(input);
editor.init((IEditorSite) editor.getSite(), input);
你是这个人..已经失败了3个星期,试图自己做这件事。我正要修改EditorPart实现,使setInput公开并重新调用它。 – 2017-12-13 14:13:55
新的java io软件包java.nio.file包提供了文件更改通知API,称为Watch Service API。使用此功能,您可以监视磁盘上的文件并跟踪任何更改。请进一步查看reference
创建一个单独的线程,该线程使用WatchService API并在后台监视文件,并且如果在磁盘上发现任何更改,则通知用户。
不幸的是,这是不对的。其实文件没有改变。从文件内容加载更改,文件不是。 – 2012-01-09 09:31:56
你的意思是说你的比较编辑器之外的文件内容已经改变了吗? – 2012-01-09 09:36:30
如果我使用比较编辑器和文本板打开相同的文件,并且如果我使用textpad进行了任何更改并保存了更改,那么比较编辑器应该能够跟踪该文件内容已被更改?我是否正确? – 2012-01-09 09:38:15
如果您在编辑器部分调用'setInput(sameInput)',会发生什么? – 2012-01-09 09:50:17
@MarttiKäärik,我怎么找到这个比较编辑器?我用'CompareUI.openCompareEditor(input);'打开它,并且我没有它的实例。 – 2012-01-09 09:52:47
使用['IWorkbenchPage'](http://help.eclipse.org/indigo/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/IWorkbenchPage.html)'.findEditor( IEditorInput输入)'。 – 2012-01-09 10:01:02