BUILDERS, NATURES AND MARKERS (PAGE 2)
Markers
As described earlier, Markers are used mark locations in editor. Java
editor uses these markers to mark error locations, warnings, book marks
etc.
There are many types of predefined markers defined as constants in
IMarker interface.
org.eclipse.core.resources.bookmarkIMarker.BOOKMARK
org.eclipse.core.resources.markerIMarker.MARKER
org.eclipse.core.resources.problemmarker IMarker.PROBLEM
org.eclipse.core.resources.taskmarkerIMarker.TASK
org.eclipse.core.resources.textmarkerIMarker.TEXT
Let’s review the plug-in manifest file to see what it takes to create a
new marker. New marker is created by extending
org.eclipse.core.resources.markers extension point. ID and Name are
datavalue and name respectively. Point is nothing but the extension
point we are using to create this marker.

Next, we need to define the super type marker for new marker. Since
we want to show errors in Problems View we are using
org.eclipse.core.resources.problemmarker as supertype.

Next is the persistent element. Since we want this markers to persist
across eclipse sessions we are setting this property to true.

Reviewing the generated code
addMarker method in SampleBuilder class is used to show above defined
marker in the editor whenever problem/error occurs.
private static final String MARKER_TYPE = "com.myplugin.rmp.xmlProblem";
private void addMarker(IFile file, String message, int lineNumber, int severity) {
try {
IMarker marker = file.createMarker(MARKER_TYPE);
marker.setAttribute(IMarker.MESSAGE, message);
marker.setAttribute(IMarker.SEVERITY, severity);
if (lineNumber == -1) {
lineNumber = 1;
}
marker.setAttribute(IMarker.LINE_NUMBER, lineNumber);
} catch (CoreException e) {
}
}
IMarker is the main interface when we are dealing with eclipse
markers. Please refer to
Eclipse API Specification to know more about IMarker Interface.
|