【问题标题】:Stop IWizard for Warning Message停止 IWizard 以获取警告消息
【发布时间】:2015-04-14 18:38:46
【问题描述】:

我正在做 Eclipse 插件开发...当用户单击完成时,我正在进行一个服务调用,它将返回三个选项。

1. Everything is okay to proceed
2. Give user warning
3. Stop Finish completely

所以 1 和 3 很简单。

这是我为 3 做的事情:

IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.OK, message, e);
throw new CoreException(status);

所以这只会抛出一个异常并弹出一个消息对话框,其中包含我传递给它的消息。

我被困在 2 号...

我尝试了以下方法:

MessageDialog dialog = new MessageDialog(null, theTitle, Dialog.getImage(Dialog.DLG_IMG_WARNING), dialogMessage, MessageDialog.WARNING, new String[]{"Yes", "No"}, 0);

int returnCode = dialog.open();
if(returnCode == 0){
    //proceed with finish
}
else if(returnCode == 1){
    //stop the finsih
    return;
}

这是我在执行此操作时收到的消息:

null argument:The dialog should be created in UI thread

是否可以在用户点击完成后给用户一个警告信息?

【问题讨论】:

    标签: java eclipse eclipse-plugin eclipse-rcp messagedialog


    【解决方案1】:

    所有 UI 代码都必须在 UI 线程中创建和运行。因此,如果您想显示来自其他线程的对话框并等待结果,请使用Display.syncExec:

    final int [] returnCode = new int[1];
    
    Display.getDefault().syncExec(new Runnable()
         {
            @Override
            public void run()
            { 
               MessageDialog dialog = ....
    
               returnCode[0] = dialog.open();
            }
         });
    
    if (returnCode[0] == 0)
    .....
    

    【讨论】:

      猜你喜欢
      • 2022-01-11
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 2012-07-30
      • 1970-01-01
      相关资源
      最近更新 更多