X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Fdialogs%2FCmsFeedback.java;h=30e2ad34ff4e3d90edf653ffd4d7ec779e21de11;hb=6d26d082b795598db6a1de488bd27beb4f870e57;hp=61cce4ed3349f693fefd7715c7346d53ec49ba88;hpb=7fa402d36e0e194424589f4d7efeae5610d2c6eb;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui/src/org/argeo/cms/ui/dialogs/CmsFeedback.java b/org.argeo.cms.ui/src/org/argeo/cms/ui/dialogs/CmsFeedback.java index 61cce4ed3..30e2ad34f 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/ui/dialogs/CmsFeedback.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/ui/dialogs/CmsFeedback.java @@ -5,19 +5,19 @@ import java.io.StringWriter; 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); @@ -31,31 +31,41 @@ public class CmsFeedback extends LightweightDialog { 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)); @@ -67,7 +77,7 @@ public class CmsFeedback extends LightweightDialog { 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));