0

我有一个视图部分,在我的 createPartControl 函数中我有这个:

viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);

getSite().setSelectionProvider(viewer);
getSite().getWorkbenchWindow().getSelectionService()
            .addSelectionListener(this);

我正在将视图部分注册为选择侦听器,但我真的只想在此视图部分中收听 treeviewer 提供的选择。这是因为我正在尝试制作一个上下文相关的弹出菜单,所以我想知道在菜单弹出发生时选择了哪个节点(我希望在 menulistener 内容之前执行选择侦听器代码)和文档这个框架充其量是没有帮助的。

我知道 addSelectionListener(String ID, ISelectionListener listener) 方法,但我无法弄清楚我到底应该如何知道我想听的观众的 ID,谁能帮我解决这个问题?

4

2 回答 2

3

SelectionService允许您对其他组件中的选择做出反应。不是您编写的或在您发布插件多年后编写的组件。

如果您的意图不是对 Eclipse 中的任何地方的选择做出反应(例如,对 Java 方法的选择做出反应,而不管在哪个视图或编辑器中),那么直接在您身上注册监听TreeViewer器并没有错。

这样你就不必过滤掉错误的选择事件,但可以确保只得到你的观众的那些。

于 2012-03-21T11:09:54.827 回答
1

我真的只想听这个视图部分中的treeviewer提供的选择

为什么不直接将选择侦听器添加到查看器?

我到底应该怎么知道观众的ID

这是您的视图(部分)而不是(树)查看器的 ID。

您也可以viewer.getSelection()直接调用而无需任何侦听器。

于 2012-03-21T11:09:24.690 回答