2012-03-21 57 views
0

我有一个观点的一部分,在我的createPartControl功能我有这样的:将选择侦听器添加到Eclipse RCP Workbench时,您应该如何知道要使用的ID?

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

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

我注册ViewPart时作为一个选择监听器,但我真的只是想要听由TreeViewer中在此ViewPart时提供选择。这是因为我试图创建一个上下文相关的弹出菜单,所以我想知道当菜单弹出发生时我选择哪个节点准备好(我希望选择监听器代码在menulistener之前执行)以及文档这个框架充其量是无益的。我知道addSelectionListener(String ID,ISelectionListener监听器)方法,但我不知道如何在地球上我应该知道我想听的查看器的ID,任何人都可以请帮我工作这个出来吗?

回答

1

我才真正想要听由TreeViewer中在此ViewPart时

为什么不直接添加选择侦听器,以观看者提供的选择?

如何在地球上我应该知道观众

这是你的观点(部分)不(树)浏览器的ID的ID。

您也可以直接拨打电话viewer.getSelection(),而无需任何听众。

+0

我试图使用视图ID,它不起作用,没有对监听器进行调用。这是肯定的正确的ID,因为我通过它从类的静态ID字符串。 – Link19 2012-03-21 11:25:08

+1

@GlenLamb它应该工作,只是试了一下。 View ID最初是在plugin.xml中定义的。 – 2012-03-21 12:16:33

3

SelectionService允许您对其他组件中的选择做出反应。那些未由您撰写的或者在您发布插件后数年写入的组件。

如果你的目的是不是在Eclipse上任何地方的选择做出反应(例如在Java梅索德的选择反应regardlessly在视图或编辑器),有什么错注册听众对你TreeViewer直接

这样你就不必过滤出错误的选择事件,但是可以肯定只能让你的浏览器看到这些。

相关问题