This is an automated email from the ASF dual-hosted git repository. lkishalmi pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push: new 99e1b1c [NETBEANS-5668] Fix slipping <br/>-s in the Project Problem Dialog 99e1b1c is described below commit 99e1b1ca22b744e88c85bd0989cce112d61ae0e5 Author: Laszlo Kishalmi <laszlo.kisha...@gmail.com> AuthorDate: Mon May 10 09:21:59 2021 -0700 [NETBEANS-5668] Fix slipping <br/>-s in the Project Problem Dialog --- .../gradle/tooling/NetBeansToolingPlugin.java | 14 ++++++-- .../gradle/GradleProjectErrorNotifications.java | 37 +++++++++++++++------ .../gradle/loaders/LegacyProjectLoader.java | 38 ++++++++++++---------- 3 files changed, 60 insertions(+), 29 deletions(-) diff --git a/extide/gradle/netbeans-gradle-tooling/src/main/groovy/org/netbeans/modules/gradle/tooling/NetBeansToolingPlugin.java b/extide/gradle/netbeans-gradle-tooling/src/main/groovy/org/netbeans/modules/gradle/tooling/NetBeansToolingPlugin.java index 15e8459..9b1da37 100644 --- a/extide/gradle/netbeans-gradle-tooling/src/main/groovy/org/netbeans/modules/gradle/tooling/NetBeansToolingPlugin.java +++ b/extide/gradle/netbeans-gradle-tooling/src/main/groovy/org/netbeans/modules/gradle/tooling/NetBeansToolingPlugin.java @@ -30,6 +30,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import javax.inject.Inject; +import org.gradle.api.GradleException; import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.tooling.provider.model.ToolingModelBuilder; @@ -97,12 +98,21 @@ public class NetBeansToolingPlugin implements Plugin<Project> { pw.println(ex.toString()); ex.printStackTrace(pw); - BaseModel ret = new NbProjectInfoModel(); + NbProjectInfoModel ret = new NbProjectInfoModel(); ret.setGradleException(sw.toString()); + + Throwable cause = ex; + while ((cause != null) || (cause.getCause() != cause)) { + if (cause instanceof GradleException) { + ret.noteProblem((GradleException) cause); + break; + } + cause = cause.getCause(); + } return ret; } } - + } } diff --git a/extide/gradle/src/org/netbeans/modules/gradle/GradleProjectErrorNotifications.java b/extide/gradle/src/org/netbeans/modules/gradle/GradleProjectErrorNotifications.java index 7ec2df5..d284d43 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/GradleProjectErrorNotifications.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/GradleProjectErrorNotifications.java @@ -36,10 +36,10 @@ public class GradleProjectErrorNotifications { public synchronized void openNotification(String title, String problem, String details) { StringBuilder sb = new StringBuilder(details.length()); - sb.append("<html>"); - String[] lines = details.split("\n"); + sb.append("<html>"); //NOI18N + String[] lines = details.split("\n"); //NOI18N for (String line : lines) { - sb.append(line).append("<br/>"); + sb.append(line).append("<br/>"); //NOI18N } Notification ntn = NotificationDisplayer.getDefault().notify(title, NbGradleProject.getWarningIcon(), @@ -59,22 +59,39 @@ public class GradleProjectErrorNotifications { public static String bulletedList(Collection<? extends Object> elements) { StringBuilder sb = new StringBuilder(); - sb.append("<ul>"); + sb.append("<ul>"); //NOI18N for (Object element : elements) { - sb.append("<li>"); - String[] lines = element.toString().split("\n"); + sb.append("<li>"); //NOI18N + String[] lines = element.toString().split("\n"); //NOI18N for (int i = 0; i < lines.length; i++) { String line = lines[i]; - sb.append(line); + sb.append(lineWrap(line, 78)); if (i < lines.length - 1) { - sb.append("<br/>"); + sb.append("<br/>"); //NOI18N } } - sb.append("</li>"); + sb.append("</li>"); //NOI18N } - sb.append("</ul>"); + sb.append("</ul>"); //NOI18N return sb.toString(); } + private static String lineWrap(String line, int maxCol) { + StringBuilder sb = new StringBuilder(line.length()); + String[] parts = line.split(" "); //NOI18N + int col = 0; + String delim = ""; //NOI18N + for (String part : parts) { + if ((sb.length() > 0) && (col + part.length() > maxCol)) { + sb.append("<br/>").append(part); //NOI18N + col = part.length(); + } else { + sb.append(delim).append(part); + col += delim.length() + part.length(); + delim = " "; //NOI18N + } + } + return sb.toString(); + } } diff --git a/extide/gradle/src/org/netbeans/modules/gradle/loaders/LegacyProjectLoader.java b/extide/gradle/src/org/netbeans/modules/gradle/loaders/LegacyProjectLoader.java index 96e422a..6845c50 100644 --- a/extide/gradle/src/org/netbeans/modules/gradle/loaders/LegacyProjectLoader.java +++ b/extide/gradle/src/org/netbeans/modules/gradle/loaders/LegacyProjectLoader.java @@ -19,6 +19,8 @@ package org.netbeans.modules.gradle.loaders; import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.atomic.AtomicInteger; @@ -142,38 +144,40 @@ public class LegacyProjectLoader extends AbstractProjectLoader { errors.clear(); info = retrieveProjectInfo(goOnline, pconn, cmd, token, pl); + if (!info.getProblems().isEmpty()) { + errors.openNotification( + TIT_LOAD_ISSUES(base.getProjectDir().getName()), + TIT_LOAD_ISSUES(base.getProjectDir().getName()), + GradleProjectErrorNotifications.bulletedList(info.getProblems())); + } if (!info.hasException()) { if (!info.getProblems().isEmpty()) { // If we do not have exception, but seen some problems the we mark the quality as SIMPLE quality = SIMPLE; - errors.openNotification( - TIT_LOAD_ISSUES(base.getProjectDir().getName()), - TIT_LOAD_ISSUES(base.getProjectDir().getName()), - GradleProjectErrorNotifications.bulletedList(info.getProblems())); - } else { quality = ctx.aim; } } else { - String problem = info.getGradleException(); - String[] lines = problem.split("\n"); - LOG.log(INFO, "Failed to retrieve project information for: {0}\nReason: {1}", new Object[] {base.getProjectDir(), problem}); //NOI18N - errors.openNotification(TIT_LOAD_FAILED(base.getProjectDir().getName()), lines[0], problem); - return ctx.previous.invalidate(problem); + if (info.getProblems().isEmpty()) { + String problem = info.getGradleException(); + String[] lines = problem.split("\n"); + LOG.log(INFO, "Failed to retrieve project information for: {0}\nReason: {1}", new Object[] {base.getProjectDir(), problem}); //NOI18N + errors.openNotification(TIT_LOAD_FAILED(base.getProjectDir().getName()), lines[0], problem); + return ctx.previous.invalidate(problem); + } else { + return ctx.previous.invalidate(info.getProblems().toArray(new String[0])); + } } } catch (GradleConnectionException | IllegalStateException ex) { LOG.log(FINE, "Failed to retrieve project information for: " + base.getProjectDir(), ex); - StringBuilder sb = new StringBuilder(); + List<String> problems = new ArrayList<>(); Throwable th = ex; - String separator = ""; while (th != null) { - sb.insert(0, separator); - sb.insert(0, th.getMessage()); + problems.add(th.getMessage()); th = th.getCause(); - separator = "<br/>"; } - errors.openNotification(TIT_LOAD_FAILED(base.getProjectDir()), ex.getMessage(), sb.toString()); - return ctx.previous.invalidate(sb.toString()); + errors.openNotification(TIT_LOAD_FAILED(base.getProjectDir()), ex.getMessage(), GradleProjectErrorNotifications.bulletedList(problems)); + return ctx.previous.invalidate(problems.toArray(new String[0])); } finally { loadedProjects.incrementAndGet(); } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists