2011-02-28 22 views
2

我正在開發一個監視工作區中的事件的Eclipse插件。我的一個類實現了IPropertyListener,這意味着它繼承了propertyChanged方法。當插件工作區中的文件變髒時,此方法被觸發。我需要知道什麼IResource與propertyChanged事件相關聯,但我目前的實現不起作用。如何在Eclipse中獲取與propertyChanged事件關聯的IResource?

public void propertyChanged(Object source, int propId) 
{ 
    if(propId == IEditorPart.PROP_DIRTY) 
    { 
     IResource resource = (IResource)source; 
    } 
} 

,我認爲這是行不通的,因爲源類型的IResource的不是,但我不知道是怎麼回事,在與此屬性的變化相關聯的資源來獲得。

任何有關我如何獲得IResource的想法?

+0

什麼類型是源?您可能需要使用該類的API來檢索關聯的IResource。 – 2011-02-28 19:17:59

+0

在WorkbenchPart中有firePropertyChanged方法,它調用propertyChanged。它使用WorkbenchPart.this作爲源參數。這擴展了EventManager。我不認爲這條路線會讓我獲得資源,我想知道是否有其他方法? – jbranchaud 2011-02-28 19:38:37

回答

4

嘗試將源代碼投射到IEditorPart。然後調用getEditorInput()。並非所有的編輯器輸入都是工作區資源,因此請檢查其中一個子類型(可能是FileEditorInput)並從那裏開始。

或者,只需通過IWorkspace.addResourceChangeListener()自己監聽資源更改,而不是依賴第三方。

+0

完美的作品,謝謝! – jbranchaud 2011-02-28 20:24:11

相關問題