EclipsePDE:以编程方式检测并关闭打开的对话框

EclipsePDE:以编程方式检测并关闭打开的对话框,eclipse,swt,eclipse-rcp,jface,eclipse-pde,Eclipse,Swt,Eclipse Rcp,Jface,Eclipse Pde,在EclipseLuna上,我选择一个服务器并单击Servers视图上的Start按钮,然后服务器(例如Tomcat8)将启动。如果启动过程中出现问题,将填充一个对话框以显示错误消息(例如超时)。此测试用例中的对话框是非模态的 现在我需要从插件以编程方式启动服务器。如果出现错误,我如何通过编程检测对话框是否已打开以及如何关闭它 您可以使用Display.addFilter方法来侦听所有SWT.Activate事件,这些事件将告诉您所有正在激活的shell(和其他内容)。然后可以检测要关闭的壳 比

在EclipseLuna上,我选择一个服务器并单击Servers视图上的Start按钮,然后服务器(例如Tomcat8)将启动。如果启动过程中出现问题,将填充一个对话框以显示错误消息(例如超时)。此测试用例中的对话框是非模态的


现在我需要从插件以编程方式启动服务器。如果出现错误,我如何通过编程检测对话框是否已打开以及如何关闭它

您可以使用
Display.addFilter
方法来侦听所有
SWT.Activate
事件,这些事件将告诉您所有正在激活的shell(和其他内容)。然后可以检测要关闭的壳

比如:

Display.getDefault().addFilter(SWT.Activate,new Listener())
{
@凌驾
公共无效handleEvent(最终事件)
{
//这是一个正在激活的外壳吗?
if(Shell的event.widget实例)
{
最终Shell=(Shell)event.widget;
//查看shell标题,看看它是否是我们想要的
if(“About”.equals(shell.getText()))
{
//完成初始化后关闭外壳
Display.getDefault().asyncExec(新的Runnable())
{
@凌驾
公开募捐
{
shell.close();
}
});
}
}
}
});

这将关闭一个名为“关于”的对话框。

这太棒了。非常感谢你。