2012-01-09 67 views
2

我有CompareEditor中顯示的CompareEditorInput,它比較文本數據。在CompareEditor之外更改時,我需要重新加載CompareEditorInput。重載比較編輯器輸入

  1. 打開比較編輯器(CompareUI.openCompareEditor(輸入))
  2. 比較輸入被改變(ISteramContentAccessor.getContents()返回更改的內容)
  3. 泰爾打開比較編輯器來加載CompareEditorInput < - 需要實現。
+0

如果您在編輯器部分調用'setInput(sameInput)',會發生什麼? – 2012-01-09 09:50:17

+0

@MarttiKäärik,我怎麼找到這個比較編輯器?我用'CompareUI.openCompareEditor(input);'打開它,並且我沒有它的實例。 – 2012-01-09 09:52:47

+0

使用['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

回答

3

你可以稱之爲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); 
+0

你是這個人..已經失敗了3個星期,試圖自己做這件事。我正要修改EditorPart實現,使setInput公開並重新調用它。 – 2017-12-13 14:13:55

-1

新的java io軟件包java.nio.file包提供了文件更改通知API,稱爲Watch Service API。使用此功能,您可以監視磁盤上的文件並跟蹤任何更改。請進一步查看reference

創建一個單獨的線程,該線程使用WatchService API並在後臺監視文件,並且如果在磁盤上發現任何更改,則通知用戶。

+0

不幸的是,這是不對的。其實文件沒有改變。從文件內容加載更改,文件不是。 – 2012-01-09 09:31:56

+0

你的意思是說你的比較編輯器之外的文件內容已經改變了嗎? – 2012-01-09 09:36:30

+0

如果我使用比較編輯器和文本板打開相同的文件,並且如果我使用textpad進行了任何更改並保存了更改,那麼比較編輯器應該能夠跟蹤該文件內容已被更改?我是否正確? – 2012-01-09 09:38:15