void setBugsDetails()

in src/main/java/org/jetbrains/plugins/spotbugs/gui/toolwindow/view/BugDetailsComponents.java [174:286]


	void setBugsDetails(@NotNull final BugInstance bugInstance) {
		final int[] lines = BugInstanceUtil.getSourceLines(bugInstance);
		final MethodAnnotation methodAnnotation = BugInstanceUtil.getPrimaryMethod(bugInstance);
		final FieldAnnotation fieldAnnotation = BugInstanceUtil.getPrimaryField(bugInstance);

		final StringBuilder html = new StringBuilder();
		html.append("<html><body>");
		html.append("<h2>");
		html.append(bugInstance.getAbridgedMessage());
		html.append("</h2><p/>");

		html.append("<table border=0><tr valign=top><td valign=top>");
		html.append("<h3>Class:</h3>");
		html.append("<ul>");
		html.append("<li>");
		html.append("<a href='#class'><u>");
		html.append(BugInstanceUtil.getSimpleClassName(bugInstance));
		html.append("</u></a>");
		html.append(" <font color='gray'>(");
		final String packageName = BugInstanceUtil.getPackageName(bugInstance);
		html.append(packageName);
		html.append(")</font>");

		if (lines[0] > -1) {
			final boolean singleLine = lines[1] == lines[0];
			if (singleLine) {
				html.append(" line ");
			} else {
				html.append(" lines ");
			}
			html.append(lines[0]);
			if (!singleLine) {
				html.append('-').append(lines[1]);
			}
		}
		html.append("</ul>");

		if (methodAnnotation != null) {
			html.append("<p><h3>Method:</p>");
			html.append("<ul>");
			html.append("<li>");

			if ("<init>".equals(methodAnnotation.getMethodName())) {
				html.append(BugInstanceUtil.getJavaSourceMethodName(bugInstance)).append("&lt;init&gt; <font color='gray'>(").append(BugInstanceUtil.getFullMethod(bugInstance)).append(")</font>");
			} else {
				html.append(BugInstanceUtil.getMethodName(bugInstance)).append(" <font color='gray'>(").append(BugInstanceUtil.getFullMethod(bugInstance)).append(")</font>");
			}
			html.append("</li>");
			html.append("</ul>");
		}

		if (fieldAnnotation != null) {
			html.append("<p><h3>Field:</p>");
			html.append("<ul>");
			html.append("<li>");
			html.append(BugInstanceUtil.getFieldName(bugInstance));
			html.append("</li>");
			html.append("</ul>");
		}

		html.append("<p><h3>Priority:</p>");
		html.append("<ul>");
		html.append("<li>");
		html.append("<span width='15px' height='15px;' id='").append(BugInstanceUtil.getPriorityString(bugInstance)).append("'> &nbsp; &nbsp; </span>&nbsp;");
		html.append(BugInstanceUtil.getPriorityTypeString(bugInstance));
		html.append("</li>");
		html.append("</ul>");
		html.append("</td><td width='20px'>&nbsp;</td><td valign=top>");

		html.append("<h3>Problem classification:</h3>");
		html.append("<ul>");
		html.append("<li>");
		html.append(BugInstanceUtil.getBugCategoryDescription(bugInstance));
		html.append(" <font color='gray'>(");
		html.append(BugInstanceUtil.getBugTypeDescription(bugInstance));
		html.append(")</font>");
		html.append("</li>");
		html.append("<li>");
		html.append(BugInstanceUtil.getBugType(bugInstance));
		html.append(" <font color='gray'>(");
		html.append(BugInstanceUtil.getBugPatternShortDescription(bugInstance));
		html.append(")</font>");
		html.append("</li>");

		final Iterable<BugAnnotation> annotations = bugInstance.getAnnotationsForMessage(false);
		if (annotations.iterator().hasNext()) {
			html.append("<p><h3>Notes:</p>");
			html.append("<ul>");
			for (final BugAnnotation annotation : annotations) {
				html.append("<li>").append(annotation.toString(bugInstance.getPrimaryClass())).append("</li>");
			}
			html.append("</ul>");
		}

		final DetectorFactory detectorFactory = bugInstance.getDetectorFactory();
		if (detectorFactory != null) {
			html.append("<li>");
			html.append(detectorFactory.getShortName());
			html.append(" <font color='gray'>(");
			html.append(createBugsAbbreviation(detectorFactory));
			html.append(")</font>");
			html.append("</li>");
		}
		html.append("</ul>");
		html.append("</tr></table>");
		html.append("</body></html>");

		// FIXME: set Suppress actions hyperlink

		_bugDetailsPane.setText(html.toString());
		scrollRectToVisible(_bugDetailsPane);

	}