2011-03-08 112 views
2

我已經添加了一個自定義LabelDecorator到Eclipse 3.6,它取代了由SVN團隊文本裝飾添加的神祕用戶名。 SVN Team Decorator允許您添加一個作者標籤。我所做的是添加另一個裝飾器,用這些用戶的實際名稱替換這些作者字符串(這是公司特定的短名稱和數字)。如何手動更新包資源管理器(首選項)

雖然SVN團隊文本修飾與擴展包資源管理器:

... com.company.package · XY9723 · [30.02.11 19:11] 

我更換由

... com.company.package · Neil Diamond · [30.02.11 19:11] 

現在,爲了完成任務,我添加了一個首選項頁面,在這裏用戶可以指定應作爲替代品使用的屬性(名稱,姓名,出生日期,公司名稱,電話等)。我想在每次按下「應用」或「確定」時使用新選定的屬性來更新包資源管理器(或svn團隊裝飾資源)。 目前只有在您按下「應用」或「確定」後纔會更新資源手動摺疊/展開資源管理器中的某個資源。

有沒有我可以開火的事件?

回答

3

使用IDecorationManager接口:

IWorkbench workbench = ...; 
IDecoratorManager manager = workbench.getDecoratorManager(); 

的prefernce頁LabelProvider內:

ILabelDecorator decorator = manager.getLabelDecorator("com.plugin.mydecorator"); 
if(decorator != null){ // decorator is enabled 
    LabelProviderChangedEvent event = new LabelProviderChangedEvent(demoDecorator); 
    // update specific resources 
    fireLabelEvent(event, arrayOfResourceToUpdate); 

    // or update all resources 
    fireLabelEvent(event); 
} 

- >見Understanding Decorators

沒有LabelProvider

manager.update("com.plugin.mydecorator"); 

- >見DecoratorManager.java

+0

難道我理解正確的話:你建議我應該在Package Explorer或者使用文本修飾從SVN插件其他任何打開的視圖中的所有受影響的ressources觸發選擇事件? – pimpf0r 2011-03-14 09:59:59

+0

抱歉..我有點錯過了你之前的問題,因此更新了我的答案。 – eldn 2011-03-14 16:45:03

+0

非常感謝**。我對「理解裝飾者」這篇文章的看法並沒有很清楚,文章清楚地說明了如何去做。或者 - 至少 - 作者是如何解決這個問題的。他實際上存儲了所有成功裝飾的資源,並使用這些集合('arrayOfResourceToUpdate')來初始化LabelChanged-Event,然後在檢查其是否啓用後,將從裝飾器本身中觸發該事件。太棒了。再次感謝。 – pimpf0r 2011-03-15 11:44:41