From fd2c2596c082002166a66646c9540e9ea662347f Mon Sep 17 00:00:00 2001 From: Eugene Kudelevsky Date: Tue, 30 Oct 2012 17:26:44 +0400 Subject: [PATCH] show 'details' button if there is only one broken class --- .../android/uipreview/RenderUtil.java | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/plugins/android/src/org/jetbrains/android/uipreview/RenderUtil.java b/plugins/android/src/org/jetbrains/android/uipreview/RenderUtil.java index 68118496f5fc..72f297deaf50 100644 --- a/plugins/android/src/org/jetbrains/android/uipreview/RenderUtil.java +++ b/plugins/android/src/org/jetbrains/android/uipreview/RenderUtil.java @@ -179,7 +179,7 @@ public class RenderUtil { reportMissingClassesWarning(warnMessages, callback.getMissingClasses()); - reportBrokenClassesWarning(warnMessages, callback.getBrokenClasses()); + reportBrokenClassesWarning(project, warnMessages, callback.getBrokenClasses()); final Result result = session.getResult(); if (!result.isSuccess()) { @@ -232,21 +232,33 @@ public class RenderUtil { return projectResources; } - private static void reportBrokenClassesWarning(@NotNull List warnMessages, + private static void reportBrokenClassesWarning(@NotNull final Project project, + @NotNull List warnMessages, @NotNull Map brokenClasses) { if (brokenClasses.size() > 0) { - final StringBuilder builder = new StringBuilder(); + if (brokenClasses.size() > 1) { + final StringBuilder builder = new StringBuilder(); builder.append("Unable to initialize:\n"); - for (String brokenClass : brokenClasses.keySet()) { - builder.append("       ").append(brokenClass).append('\n'); + + for (Map.Entry entry : brokenClasses.entrySet()) { + builder.append("       ").append(entry.getKey()).append('\n'); } + removeLastNewLineChar(builder); + // todo: show stack traces + warnMessages.add(new FixableIssueMessage(builder.toString())); } else { - builder.append("Unable to initialize ").append(brokenClasses.keySet().iterator().next()); + final Map.Entry entry = brokenClasses.entrySet().iterator().next(); + @SuppressWarnings("ThrowableResultOfMethodCallIgnored") + final Throwable t = entry.getValue(); + warnMessages.add(new FixableIssueMessage("Unable to initialize " + entry.getKey() + ' ', "Details", "", new Runnable() { + @Override + public void run() { + AndroidUtils.showStackStace(project, new Throwable[] {t}); + } + })); } - removeLastNewLineChar(builder); - warnMessages.add(new FixableIssueMessage(builder.toString())); } }