【问题标题】:How to update the package explorer manually (Preferences)如何手动更新包资源管理器(首选项)
【发布时间】:2011-07-10 23:57:48
【问题描述】:

我在 Eclipse 3.6 中添加了一个自定义 LabelDecorator,它替换了 SVN 团队文本装饰添加的神秘用户名。 SVN 团队装饰器允许您添加作者标签。我所做的是添加另一个装饰器,用用户的实际姓名替换这些作者字符串(这是公司特定的短名称,带有数字)。

虽然 SVN 团队文本装饰扩展了包资源管理器:

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

我将其替换为

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

现在,为了完成任务,我添加了一个偏好页面,用户可以在其中指定属性(姓名、名字、出生日期、公司名称、电话等),这些属性应该用作替换。每当按下“应用”或“确定”时,我想用新选择的属性更新包资源管理器(或任何 svn 团队装饰资源)。 目前,只有在您按下“应用”或“确定”手动折叠/展开资源管理器中的一个资源后,资源才会更新。

有什么我可以触发的事件吗?

【问题讨论】:

    标签: eclipse rcp workbench


    【解决方案1】:

    使用 IDecorationManager 接口:

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

    在偏好页面 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

    【讨论】:

    • 我的理解是否正确:您建议我应该在包资源管理器中的所有受影响的资源或任何其他使用来自 svn 插件的文本装饰的打开视图上触发选择事件?
    • 对不起..我之前有点错过了你的问题,因此更新了我的答案。
    • 非常感谢非常。我还没有仔细阅读“了解装饰器”的文章,它清楚地说明了如何做到这一点。或者——至少——作者为解决这个问题做了什么。他实际上存储了所有成功装饰的资源并使用这些集合 (arrayOfResourceToUpdate) 来初始化 LabelChanged-Event,然后在检查其是否启用后,将从装饰器本身内部触发该事件。太好了,前辈。再次感谢。
    • 我个人更喜欢没有资源存储方面的解决方案,但我猜如果 ibm 的文章使用了这种技术,它是最先进的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多