java - 停止 IWizard 以获得警告消息

标签 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);

因此,这只会引发异常并弹出一个消息对话框,其中包含我传递给它的消息。

我被困在了第二个...

我尝试过以下方法:

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

是否可以在用户单击“完成”后向用户发出警告消息?

最佳答案

所有 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)
.....

关于java - 停止 IWizard 以获得警告消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29634993/

相关文章:

Java ByteArrayOutputStream 内存泄漏

java - jsp 上无法访问 ModelAttributes

java - 如何扩展 HTML 的 StructuredTextEditor(或文本编辑器)内容助手

Java:突出显示所有派生数据成员

java - 我怎样才能告诉我的表单控件的值发生了变化?

java - 无法将简单的 Java Smack 连接到 Google Talk

android - 多次按下后停止播放声音

带有 Eclipse 的 Android - 正在等待 HOME ('android.process.acore' ) 启动?

java - 尝试导出/部署我创建的 Eclipse 插件,Eclipse 提示 ANT 类路径错误

java - "org.eclipse.equinox.ds@3:start"背后的魔力?