@Override
public void shellDeactivated(ShellEvent e) {
+ if (hasChildShells())
+ return;
if (returnCode == null)// not yet closed
closeShell(CANCEL);
}
@Override
public void focusGained(FocusEvent event) {
+ if (hasChildShells())
+ return;
if (returnCode == null)// not yet closed
closeShell(CANCEL);
}
if (block) {
try {
runEventLoop(foregoundShell);
+ } catch (ThreadDeath t) {
+ returnCode = CANCEL;
+ if (log.isTraceEnabled())
+ log.error("Thread death, canceling dialog", t);
} catch (Throwable t) {
+ returnCode = CANCEL;
log.error("Cannot open blocking lightweight dialog", t);
}
}
return returnCode;
}
+ private boolean hasChildShells() {
+ if (foregoundShell == null)
+ return false;
+ return foregoundShell.getShells().length != 0;
+ }
+
// public synchronized int openAndWait() {
// open();
// while (returnCode == null)
getForegoundShell().setText(title);
}
+ public Integer getReturnCode() {
+ return returnCode;
+ }
+
}
\ No newline at end of file