我的插件需要收听由其他第三方插件提供的基于xtext的编辑器的更改(选择和内容)。
EDIT1
问题不在于如何倾听一般的具体事件。 相反,问题是如何触发监听器注册,因为我的插件没有执行代码(延迟加载),除非用户通过命令使用它。
EDIT2
使用org.eclipse.ui.IStartup扩展点的问题在于IStartup.earlyStartup()PlatformUI.getWorkbench()。getActiveWorkbenchWindow();返回null。看起来这在启动阶段太早,无法注册听众。
答案 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);