]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - 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
diff --git a/bundles/org.simantics.db.procore.ui/src/org/simantics/db/procore/ui/internal/Util.java b/bundles/org.simantics.db.procore.ui/src/org/simantics/db/procore/ui/internal/Util.java
new file mode 100644 (file)
index 0000000..43335ef
--- /dev/null
@@ -0,0 +1,111 @@
+package org.simantics.db.procore.ui.internal;\r
+\r
+import org.eclipse.jface.dialogs.MessageDialog;\r
+import org.eclipse.swt.widgets.Display;\r
+import org.eclipse.swt.widgets.Shell;\r
+import org.simantics.db.common.utils.Logger;\r
+\r
+public class Util {\r
+    static void showInfo(Shell shell, String message) {\r
+        MessageDialog.openInformation(shell, "Information", message);\r
+    }\r
+    static void showWarning(Shell shell, String message) {\r
+        MessageDialog.openWarning(shell, "Warning", message);\r
+    }\r
+    public static void showError(Shell shell, String message) {\r
+        Util.showError(shell, message, null);\r
+    }\r
+    static void showError(Shell shell, String message, Throwable t) {\r
+        Logger.defaultLogError(message, t);\r
+        if (null != t)\r
+            message += "\n" + t.getMessage();\r
+        MessageDialog.openError(shell, "Error", message);\r
+    }\r
+    public static void logError(String message) {\r
+        Util.logError(message, null);\r
+    }\r
+    public static void logError(String message, Throwable cause) {\r
+        Logger.defaultLogError(message, cause);\r
+    }\r
+    public static void trace(Class<?> clazz) {\r
+        trace(clazz, null);\r
+    }\r
+    public static void trace(String message) {\r
+        trace(null, message);\r
+    }\r
+    public static void trace(Class<?> clazz, String message) {\r
+        String s = "";\r
+        if (null != clazz)\r
+            s += clazz.getSimpleName() + " called.\n";\r
+        if (null != message)\r
+            s += message;\r
+        Logger.defaultLogTrace(s);\r
+    }\r
+    private static String NL = System.getProperty("line.separator");\r
+    static class Choice {\r
+        public Choice(String button, String text) {\r
+            this.button = button;\r
+            this.text = text;\r
+        }\r
+        public String button;\r
+        public String text;\r
+    }\r
+    public static int select(final Shell shell, final String title, String message, Choice[] choices, int def) {\r
+        assert(choices.length > 0);\r
+        if (def < 0 || def >= choices.length)\r
+            def = 0;\r
+        final String[] labels = new String[choices.length];\r
+        final StringBuilder sb = new StringBuilder(message.length() + 256);\r
+        sb.append(message);\r
+        for (int i=0; i<labels.length; ++ i) {\r
+            labels[i] = choices[i].button;\r
+            sb.append(NL + NL + choices[i].text);\r
+        }\r
+        if (Display.getDefault().getThread() == Thread.currentThread())\r
+            return select(shell, title, sb.toString(), labels, def);\r
+        class SelectRunnable implements Runnable {\r
+            int ret;\r
+            int def;\r
+            SelectRunnable(int def) {\r
+                this.def = def;\r
+            }\r
+            public void run() {\r
+                ret = select(shell, title, sb.toString(), labels, def);\r
+            }\r
+        };\r
+        SelectRunnable sr = new SelectRunnable(def);\r
+        Display.getDefault().syncExec(sr);\r
+        return sr.ret;\r
+    }\r
+    private static int select(Shell shell, String title, String message, String[] labels, int def) {\r
+        MessageDialog dialog = new MessageDialog(shell, title, null, message, MessageDialog.QUESTION, labels, def);\r
+        int answer = dialog.open();\r
+        if (answer < 0 || answer >= labels.length)\r
+            answer = 0;\r
+        return answer;\r
+    }\r
+    public static boolean confirm(Shell shell, String title, String message) {\r
+        String[] labels = new String[2];\r
+        labels[0] =  "Yes";\r
+        labels[1] = "No";\r
+        MessageDialog dialog = new MessageDialog(shell, title, null, message, MessageDialog.QUESTION, labels, 1);\r
+        int answer = dialog.open();\r
+        return answer == 0;\r
+    }\r
+    public static boolean openDefaultNo(Shell shell, String title, String message, int style) {\r
+        String[] labels = new String[2];\r
+        labels[0] =  "Yes";\r
+        labels[1] = "No";\r
+        MessageDialog dialog = new MessageDialog(shell, title, null, message, style, labels, 1);\r
+        int answer = dialog.open();\r
+        return answer == 0;\r
+    }\r
+    public static String getMessage(Throwable t) {\r
+        StringBuilder s = new StringBuilder(t.getMessage());\r
+        final int LIMIT = 10;\r
+        int i = 0;\r
+        for (Throwable c = t.getCause(); null != c && i < LIMIT; ++i, c = c.getCause())\r
+            s.append(NL + "cause: " + c.getMessage());\r
+        return s.toString();\r
+    }\r
+}\r