停止IWizard警告消息

时间:2015-04-14 18:38:46

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

我正在进行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

点击完成后是否可以向用户发出警告消息?

1 个答案:

答案 0 :(得分:2)

必须在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)
.....
相关问题