1 package org.simantics.db.procore.ui.internal;
3 import org.eclipse.jface.dialogs.MessageDialog;
4 import org.eclipse.swt.widgets.Display;
5 import org.eclipse.swt.widgets.Shell;
6 import org.simantics.db.common.utils.Logger;
9 static void showInfo(Shell shell, String message) {
10 MessageDialog.openInformation(shell, "Information", message);
12 static void showWarning(Shell shell, String message) {
13 MessageDialog.openWarning(shell, "Warning", message);
15 public static void showError(Shell shell, String message) {
16 Util.showError(shell, message, null);
18 static void showError(Shell shell, String message, Throwable t) {
19 Logger.defaultLogError(message, t);
21 message += "\n" + t.getMessage();
22 MessageDialog.openError(shell, "Error", message);
24 public static void logError(String message) {
25 Util.logError(message, null);
27 public static void logError(String message, Throwable cause) {
28 Logger.defaultLogError(message, cause);
30 public static void trace(Class<?> clazz) {
33 public static void trace(String message) {
36 public static void trace(Class<?> clazz, String message) {
39 s += clazz.getSimpleName() + " called.\n";
42 Logger.defaultLogInfo(s);
44 private static String NL = System.getProperty("line.separator");
46 public Choice(String button, String text) {
53 public static int select(final Shell shell, final String title, String message, Choice[] choices, int def) {
54 assert(choices.length > 0);
55 if (def < 0 || def >= choices.length)
57 final String[] labels = new String[choices.length];
58 final StringBuilder sb = new StringBuilder(message.length() + 256);
60 for (int i=0; i<labels.length; ++ i) {
61 labels[i] = choices[i].button;
62 sb.append(NL + NL + choices[i].text);
64 if (Display.getDefault().getThread() == Thread.currentThread())
65 return select(shell, title, sb.toString(), labels, def);
66 class SelectRunnable implements Runnable {
69 SelectRunnable(int def) {
73 ret = select(shell, title, sb.toString(), labels, def);
76 SelectRunnable sr = new SelectRunnable(def);
77 Display.getDefault().syncExec(sr);
80 private static int select(Shell shell, String title, String message, String[] labels, int def) {
81 MessageDialog dialog = new MessageDialog(shell, title, null, message, MessageDialog.QUESTION, labels, def);
82 int answer = dialog.open();
83 if (answer < 0 || answer >= labels.length)
87 public static boolean confirm(Shell shell, String title, String message) {
88 String[] labels = new String[2];
91 MessageDialog dialog = new MessageDialog(shell, title, null, message, MessageDialog.QUESTION, labels, 1);
92 int answer = dialog.open();
95 public static boolean openDefaultNo(Shell shell, String title, String message, int style) {
96 String[] labels = new String[2];
99 MessageDialog dialog = new MessageDialog(shell, title, null, message, style, labels, 1);
100 int answer = dialog.open();
103 public static String getMessage(Throwable t) {
104 StringBuilder s = new StringBuilder(t.getMessage());
105 final int LIMIT = 10;
107 for (Throwable c = t.getCause(); null != c && i < LIMIT; ++i, c = c.getCause())
108 s.append(NL + "cause: " + c.getMessage());