我在启用了取消按钮的插件中安装了ProgressMonitorDialog。
当操作正在运行时,如果用户单击取消按钮,我想询问他们是否确定要取消。我通过检查ProgressMonitorDialog.isCanceled()方法来完成此操作。
为此,我使用MessageDialog openQuestion方法。如果他们单击是,则抛出异常并取消操作。
如果他们单击否,那么我调用ProgressMonitorDialog.setCanceled(false)方法并继续操作。
我遇到的问题是,一旦他们点击取消,该按钮就会被禁用并且不会重新启用。
有没有办法强制取消按钮重新启用,以便用户有机会再次取消请求?
这大致是我的确认取消'方法现在看起来像:
private void confirmCancel(IProgressMonitor monitor) {
Display d = Display.getDefault();
final MutableBoolean cancel = new MutableBoolean(false);
d.syncExec(new Runnable() {
@Override
public void run() {
cancel.setValue(MessageDialog.openQuestion(null,
"Confirm Cancel",
"Are you sure you want to cancel the download?"));
}
});
if (cancel.booleanValue()) {
logDebug("Download canceled in DownloadOperation");
throw new OperationCanceledException("Copy canceled");
} else {
monitor.setCanceled(false);
// this is where I would like to re-enable the cancel button
}
}
答案 0 :(得分:1)
像往常一样,在我发布问题的那一刻,我想出了一个答案:)
我覆盖ProgressMonitorDialog
的{{3}}方法向用户显示问题,如果他们回答是,我会运行super.cancelPrssed()
方法。