【问题标题】:How to allow a view to listen to selection of other views?如何让一个视图监听其他视图的选择?
【发布时间】:2011-08-20 00:20:09
【问题描述】:

我正在开发一个带有 EMF 和 GMF 的插件。 它有两个视图,我希望在第一个中选择一个元素时刷新第二个。

其实我用的是这个命令:

getViewSite().getPage().addSelectionListener(this);

但它允许我只听编辑器中的选择。

我该如何解决? 以及如何确保在加载插件时刷新视图? 目前当我启动插件时它是空的,只要我点击编辑器就会刷新。

谢谢, 卢卡

【问题讨论】:

    标签: java eclipse eclipse-plugin eclipse-gmf


    【解决方案1】:

    你可以use Selection Service:

    getViewSite().getWorkbenchWindow().getSelectionService().addSelectionListener(this)
    

    getViewSite().getWorkbenchWindow().getSelectionService().addSelectionListener(partId, this)
    

    监听特定视图/编辑器中的选择更改。

    【讨论】:

    • 我想在第二种方法中partId是我要观察的视图,对吧?
    • 嗨,我终于有时间测试你的提示了。它不起作用。我是否必须添加作为选择提供者正在收听的视图?目前我是这样做的:getSite().setSelectionProvider(viewer); where viewer` 是tableViewer
    • @lucaghera:“作为选择提供者,我是否必须添加我正在收听的视图?”是的,而且以你给予的方式。
    • 嗯...为什么它不起作用?我用了你建议的方法:getViewSite().getWorkbenchWindow().getSelectionService().addSelectionListener(InstanceView.ID, this);
    • 其实可以的。这是我没有删除的旧控件。好的是它可以在不使用您建议的方法的情况下工作。确实,我在问题中提出的方法就足够了:D 感谢您给我的时间!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多