停止 IWizard 以获得警告消息
Stop IWizard for Warning Message
我正在进行 Eclipse 插件开发...当用户单击完成时,我正在进行一个服务调用,它将 return 三个选项。
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
是否可以在用户点击完成后给用户一个警告信息?
所有 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)
.....
我正在进行 Eclipse 插件开发...当用户单击完成时,我正在进行一个服务调用,它将 return 三个选项。
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
是否可以在用户点击完成后给用户一个警告信息?
所有 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)
.....