Eclipse rcp 如何在BundleActivator';什么是启动方法?
在BundleActivator的start方法中,我需要访问活动的IWorkbenchWindow以向其添加IPartListener。但是,当调用start()方法时Eclipse rcp 如何在BundleActivator';什么是启动方法?,eclipse-rcp,Eclipse Rcp,在BundleActivator的start方法中,我需要访问活动的IWorkbenchWindow以向其添加IPartListener。但是,当调用start()方法时 Workbench.getInstance().getActiveWorkbenchWindow() 返回null。 我尝试向Workbench.getInstance()添加一个IwinDownListener,但从未触发窗口打开事件。当我切换到另一个程序并返回eclipse时,只会触发一个窗口激活的事件 如何正确添加IP
Workbench.getInstance().getActiveWorkbenchWindow()
返回null。
我尝试向Workbench.getInstance()添加一个IwinDownListener,但从未触发窗口打开事件。当我切换到另一个程序并返回eclipse时,只会触发一个窗口激活的事件
如何正确添加IPartListener?
Workbench
是一个内部类,您不应该使用它()。内部类可能会在没有通知的情况下更改(事实上,Workbench是在Eclipse3或Eclipse4之间完全重写的)
获取IWorkbench
界面的官方方式是:
IWorkbench workbench = PlatformUI.getWorkbench();
但是,如果在Eclipse启动时调用得太早,它也可能返回null
在激活器中添加部件侦听器是不常见的,通常是在视图或编辑器部件初始化或命令处理程序或操作中完成的。我找到了一种方法:
final IWorkbench workbench = PlatformUI.getWorkbench();
workbench.getDisplay().asyncExec(new Runnable() {
public void run() {
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
if (window != null) {
// do something
}
}
});
(来自)