]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.procore.ui/src/org/simantics/db/procore/ui/internal/Util.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.db.procore.ui / src / org / simantics / db / procore / ui / internal / Util.java
1 package org.simantics.db.procore.ui.internal;\r
2 \r
3 import org.eclipse.jface.dialogs.MessageDialog;\r
4 import org.eclipse.swt.widgets.Display;\r
5 import org.eclipse.swt.widgets.Shell;\r
6 import org.simantics.db.common.utils.Logger;\r
7 \r
8 public class Util {\r
9     static void showInfo(Shell shell, String message) {\r
10         MessageDialog.openInformation(shell, "Information", message);\r
11     }\r
12     static void showWarning(Shell shell, String message) {\r
13         MessageDialog.openWarning(shell, "Warning", message);\r
14     }\r
15     public static void showError(Shell shell, String message) {\r
16         Util.showError(shell, message, null);\r
17     }\r
18     static void showError(Shell shell, String message, Throwable t) {\r
19         Logger.defaultLogError(message, t);\r
20         if (null != t)\r
21             message += "\n" + t.getMessage();\r
22         MessageDialog.openError(shell, "Error", message);\r
23     }\r
24     public static void logError(String message) {\r
25         Util.logError(message, null);\r
26     }\r
27     public static void logError(String message, Throwable cause) {\r
28         Logger.defaultLogError(message, cause);\r
29     }\r
30     public static void trace(Class<?> clazz) {\r
31         trace(clazz, null);\r
32     }\r
33     public static void trace(String message) {\r
34         trace(null, message);\r
35     }\r
36     public static void trace(Class<?> clazz, String message) {\r
37         String s = "";\r
38         if (null != clazz)\r
39             s += clazz.getSimpleName() + " called.\n";\r
40         if (null != message)\r
41             s += message;\r
42         Logger.defaultLogTrace(s);\r
43     }\r
44     private static String NL = System.getProperty("line.separator");\r
45     static class Choice {\r
46         public Choice(String button, String text) {\r
47             this.button = button;\r
48             this.text = text;\r
49         }\r
50         public String button;\r
51         public String text;\r
52     }\r
53     public static int select(final Shell shell, final String title, String message, Choice[] choices, int def) {\r
54         assert(choices.length > 0);\r
55         if (def < 0 || def >= choices.length)\r
56             def = 0;\r
57         final String[] labels = new String[choices.length];\r
58         final StringBuilder sb = new StringBuilder(message.length() + 256);\r
59         sb.append(message);\r
60         for (int i=0; i<labels.length; ++ i) {\r
61             labels[i] = choices[i].button;\r
62             sb.append(NL + NL + choices[i].text);\r
63         }\r
64         if (Display.getDefault().getThread() == Thread.currentThread())\r
65             return select(shell, title, sb.toString(), labels, def);\r
66         class SelectRunnable implements Runnable {\r
67             int ret;\r
68             int def;\r
69             SelectRunnable(int def) {\r
70                 this.def = def;\r
71             }\r
72             public void run() {\r
73                 ret = select(shell, title, sb.toString(), labels, def);\r
74             }\r
75         };\r
76         SelectRunnable sr = new SelectRunnable(def);\r
77         Display.getDefault().syncExec(sr);\r
78         return sr.ret;\r
79     }\r
80     private static int select(Shell shell, String title, String message, String[] labels, int def) {\r
81         MessageDialog dialog = new MessageDialog(shell, title, null, message, MessageDialog.QUESTION, labels, def);\r
82         int answer = dialog.open();\r
83         if (answer < 0 || answer >= labels.length)\r
84             answer = 0;\r
85         return answer;\r
86     }\r
87     public static boolean confirm(Shell shell, String title, String message) {\r
88         String[] labels = new String[2];\r
89         labels[0] =  "Yes";\r
90         labels[1] = "No";\r
91         MessageDialog dialog = new MessageDialog(shell, title, null, message, MessageDialog.QUESTION, labels, 1);\r
92         int answer = dialog.open();\r
93         return answer == 0;\r
94     }\r
95     public static boolean openDefaultNo(Shell shell, String title, String message, int style) {\r
96         String[] labels = new String[2];\r
97         labels[0] =  "Yes";\r
98         labels[1] = "No";\r
99         MessageDialog dialog = new MessageDialog(shell, title, null, message, style, labels, 1);\r
100         int answer = dialog.open();\r
101         return answer == 0;\r
102     }\r
103     public static String getMessage(Throwable t) {\r
104         StringBuilder s = new StringBuilder(t.getMessage());\r
105         final int LIMIT = 10;\r
106         int i = 0;\r
107         for (Throwable c = t.getCause(); null != c && i < LIMIT; ++i, c = c.getCause())\r
108             s.append(NL + "cause: " + c.getMessage());\r
109         return s.toString();\r
110     }\r
111 }\r