如何在特定编辑器打开时激活我的eclipse插件

时间:2016-11-07 09:40:21

标签: eclipse eclipse-plugin

我的插件需要收听由其他第三方插件提供的基于xtext的编辑器的更改(选择和内容)。

EDIT1

问题不在于如何倾听一般的具体事件。 相反,问题是如何触发监听器注册,因为我的插件没有执行代码(延迟加载),除非用户通过命令使用它。

EDIT2

使用org.eclipse.ui.IStartup扩展点的问题在于IStartup.earlyStartup()PlatformUI.getWorkbench()。getActiveWorkbenchWindow();返回null。看起来这在启动阶段太早,无法注册听众。

1 个答案:

答案 0 :(得分:1)

您可以使用org.eclipse.ui.IPartListener2听众讲述所有打开,关闭,激活的部分.......

IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();

IPartService partService = window.getPartService();

partService.addPartListener(your listener);

public void partOpened(IWorkbenchPartReference partRef)
当打开部件(编辑器或视图)时,将调用

侦听器的方法。 partRef.getId()方法会为您提供该部分的ID。

使用org.eclipse.ui.startup扩展点声明您的插件需要尽早启动。这允许您声明一个实现在Eclipse启动期间调用的org.eclipse.ui.IStartup的类。

请注意,启动运行的时间很早,因此并非一切都已设置完毕。使用Display.asyncExec安排代码以便稍后运行:

Display.getDefault().asyncExec(runnable);