diff --git a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/ui/AbstractCodanProblemDetailsProvider.java b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/ui/AbstractCodanProblemDetailsProvider.java
index 508d3101648..d55eb2fd3bb 100644
--- a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/ui/AbstractCodanProblemDetailsProvider.java
+++ b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/ui/AbstractCodanProblemDetailsProvider.java
@@ -111,15 +111,21 @@ public abstract class AbstractCodanProblemDetailsProvider {
public String getStyledProblemMessage() {
String message = escapeForLink(getProblemMessage());
String href = getLocationHRef();
- String link = href.replaceFirst("^file:", ""); //$NON-NLS-1$ //$NON-NLS-2$
- link = link.replaceFirst("#(\\d+)$", ":$1"); //$NON-NLS-1$//$NON-NLS-2$
- return "" + link + " \n" + message; //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
+ String link = getLocation();
+ return "" + link + " \n" + message + "\n"; //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
}
protected String getLocationHRef() {
return CodanEditorUtility.getLocationHRef(marker);
}
+ /**
+ * @since 1.1
+ */
+ protected String getLocation() {
+ return CodanEditorUtility.getLocation(marker);
+ }
+
/**
* Return styled problem description. This text would be used in Link
* widget.
diff --git a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/ui/CodanEditorUtility.java b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/ui/CodanEditorUtility.java
index ace76961c61..a3b5abf3fe1 100644
--- a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/ui/CodanEditorUtility.java
+++ b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/ui/CodanEditorUtility.java
@@ -113,4 +113,19 @@ public class CodanEditorUtility {
String href = loc + "#" + line; //$NON-NLS-1$
return href;
}
+
+ /**
+ * @param marker
+ * @return
+ * @since 1.1
+ */
+ public static String getLocation(IMarker marker) {
+ String loc = marker.getResource().getFullPath().toPortableString();
+ String loc2 = marker.getAttribute(IMarker.LOCATION, ""); //$NON-NLS-1$
+ int line = marker.getAttribute(IMarker.LINE_NUMBER, 0);
+ if (loc2.length() > 0) {
+ loc = loc2.replaceAll("[^:]*: ", ""); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ return loc + ":" + line; //$NON-NLS-1$
+ }
}