import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.argeo.cms.CmsMsg;
import org.argeo.eclipse.ui.Selected;
-import org.argeo.eclipse.ui.dialogs.LightweightDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
+/** A dialog feedback based on a {@link LightweightDialog}. */
public class CmsFeedback extends LightweightDialog {
private final static Log log = LogFactory.getLog(CmsFeedback.class);
log.error(message, e);
}
- public static void show(String message, Throwable e) {
+ public static CmsFeedback show(String message, Throwable e) {
// rethrow ThreaDeath in order to make sure that RAP will properly clean
// up the UI thread
if (e instanceof ThreadDeath)
throw (ThreadDeath) e;
- new CmsFeedback(getDisplay().getActiveShell(), message, e).open();
+ try {
+ CmsFeedback cmsFeedback = new CmsFeedback(null, message, e);
+ cmsFeedback.setBlockOnOpen(false);
+ cmsFeedback.open();
+ return cmsFeedback;
+ } catch (Throwable e1) {
+ log.error("Cannot open error feedback (" + e.getMessage() + "), original error below", e);
+ return null;
+ }
}
- public static void show(String message) {
- new CmsFeedback(getDisplay().getActiveShell(), message, null).open();
+ public static CmsFeedback show(String message) {
+ CmsFeedback cmsFeedback = new CmsFeedback(null, message, null);
+ cmsFeedback.open();
+ return cmsFeedback;
}
/** Tries to find a display */
- private static Display getDisplay() {
- try {
- Display display = Display.getCurrent();
- if (display != null)
- return display;
- else
- return Display.getDefault();
- } catch (Exception e) {
- return Display.getCurrent();
- }
- }
+ // private static Display getDisplay() {
+ // try {
+ // Display display = Display.getCurrent();
+ // if (display != null)
+ // return display;
+ // else
+ // return Display.getDefault();
+ // } catch (Exception e) {
+ // return Display.getCurrent();
+ // }
+ // }
protected Control createDialogArea(Composite parent) {
parent.setLayout(new GridLayout(2, false));
messageLbl.setText(exception.getLocalizedMessage());
Button close = new Button(parent, SWT.FLAT);
- close.setText("Close");
+ close.setText(CmsMsg.close.lead());
close.setLayoutData(new GridData(SWT.END, SWT.TOP, false, false));
close.addSelectionListener((Selected) (e) -> closeShell(OK));