这是一个简单得多的问题。
private static AplotBaseDialog dlg;
public Object execute(final ExecutionEvent event) throws ExecutionException {
if (dlg == null){
try {
Shell shell = HandlerUtil.getActiveWorkbenchWindowChecked(event).getShell();
dlg = new AplotBaseDialog(shell, session);
}
catch {
}
dlg.open();
return null;
}
好的,上面的代码检查并查看 dlg 是否为空。如果为空,则创建一个新对话框。然后它打开对话框。
这在 dlg 为空时有效。但是如果 dlg 不为空,我会在 dlg.open() 行得到一个错误。错误指向对话框类中的此代码
@Override
protected Control createContents(Composite parent) {
Control contents = super.createContents(parent); <==== Right Here
setTitle("Title");
setMessage("Message");
if (image != null) {
setTitleImage(image);
}
return contents;
}
所以我的问题是当 dlg != null 时如何打开对话框?
编辑 添加一些错误信息
AplotBaseDialog 中的第 110 行
Control contents = super.createContents(parent);
AplotDialogHandler 中的第 48 行
dlg.open();