【问题标题】:How to programmatically update the selected resource for link-with-editor functionality?如何以编程方式更新所选资源的链接编辑器功能?
【发布时间】:2013-06-20 20:27:35
【问题描述】:

我的 Eclipse 插件提供了一个包含文件列表的编辑器(作为依赖项搜索的结果)。当用户在列表中选择一个文件时,该文件/资源​​应在包/资源浏览器中突出显示。

如果有类似updateSelectedResource(IResource) 的调用,可以使用资源管理器视图的链接编辑器功能轻松完成此操作,我可以从我的编辑器中调用它来明确设置活动文件。实际调用是什么?

【问题讨论】:

    标签: eclipse-plugin eclipse-rcp


    【解决方案1】:

    您的编辑必须成为ISelectionProvider。在Eclipse FAQ 中,您将获得一个完整的示例,其中注册您的选择提供程序的重要行是getSite().setSelectionProvider(viewer);。之后,列表中选定的文件会自动告知所有选择侦听器,包括包资源管理器。

    如果您想全面了解选择服务(负责使这些视图对其他视图中的选择做出反应),可以使用Eclipse article 对其进行详细描述。

    如果发现自己想要与更多现有视图交互,您可能还想看看 IAdaptable,如 here 所述,但这对于包资源管理器链接不是必需的。

    【讨论】:

    • 谢谢,您的回答似乎指向了正确的方向。我的班级现在实现了ISelectionProvider,据我所知,它似乎在原则上有效。但是,当我尝试通过在使用 ISelectionProvider.addSelectionChangedListener 的 impl 之前添加的每个侦听器上向 selectionChanged 提供 SelectionChangedEvent(包含结构化选择)来发布/触发更改时,没有任何反应。不知何故,资源浏览器似乎无法识别我的事件或忽略它...
    • 不应该触发这些事件,我认为。您的列表需要包含真实的 IResource 对象(并使用标签提供程序显示它们),然后您与列表的用户交互应自动触发必要的事件。我的猜测是您的列表只包含纯字符串(例如文件名),可能是这样吗?
    • 差不多。 ;) 我的列表包含我自己/自定义的对象,它们用作包装器,存储 IResource 以及其他数据。这是因为列表/树视图中的资源是依赖跟踪/搜索的结果。我的元数据包含有关搜索者找到资源的上下文的信息。因此,即使是相同的资源也可能在列表中出现多次,但元数据不同。
    • eclipse FAQ页面应该是wiki.eclipse.org/…
    • @im_chc:谢谢,已修复。可惜我在这里错过了它,尽管我自己在解析器中报告了这个错误:meta.stackexchange.com/questions/141841/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    相关资源
    最近更新 更多