2011-03-08 116 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