2010-09-30 111 views
2

我是新來的Eclipse RCP和具有以下情形的變化後一種觀點:Eclipse RCP的更新在編輯器中

  • 一個插件,它是應用程序
  • 另一個女巫是一個視圖,並顯示 一些數據
  • 而第三個是 編輯器。

在視圖中,我可以右鍵單擊記錄並選擇編輯打開編輯器並讓我更改數據。

不,我想在保存編輯器時刷新視圖。我認爲這是實施白板模式的經典方案。不幸的是,我不太瞭解它,可能有人會展示一個簡單的例子來說明如何在Eclipse RCP中實現它。

由於提前 約翰內斯

回答

2

視圖有聽編輯器或者 - 甚至更好 - 在編輯模式。如果它偵聽編輯器,請查找一些「保存」事件。就我個人而言,我會讓模型本身可觀察,並通知聽衆(如您的觀點)實際的變化。

該視圖然後需要一些邏輯從模型中提取其信息。所以,而不是一個whitboard - 觀察者模式應該是您的設計的正確選擇。


這是值得一試:添加IPropertyListener給編輯的IEditorPart實例,並等待屬性更改。保存後,IEditorPart.PROP_DIRTY屬性應該從「髒」變爲「不髒」。 eclipse rcp的片段/代碼示例很難發展和溝通。使用我的答案中的流行語在eclipse幫助,API和谷歌上進行一些搜索。和:祝你好運;) - 順便說一句,考慮購買一些關於eclipse插件/ rcp開發的好書,它們值得花費每€/美元。

+0

感謝你的迴應,但你有一個簡單的源代碼示例我如何告訴視圖,聽編輯器? – john84 2010-09-30 12:59:52

3

您的視圖需要實現IPartListener2(http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/ IPartListener2.html)

可以覆蓋的方法partInputChanged(IWorkbenchPartReference partRef)刷新THW觀點有兩種方式: 1)如果與視圖的插件有依賴與編輯

If (partRef instanceOf YourEditorClass){ 
YourData yourData = editor.getInput().getxxx(); 
} 

2插件)如果帶有視圖的插件不依賴於編輯器 的插件,則需要使用適配器。你重寫getAdapter方法在編輯器中返回,你需要和視圖從適配器

If (partRef instanceOf EditorPart){ 
YourData yourData = Platform.getAdapterManager().getAdapter(this, YourData.class); 
} 

兩個代碼只是爲了顯示這個想法的範例中得到數據的數據!

我希望我幫你

相關問題