Plug-ins können auch zum Definieren von Markierungsauflösungen verwendet werden. Auf diese Weise können die Markierungen die Workbench-Funktion Quick Fix... nutzen. Die Benutzer können eine Markierung und anschließend im Kontextmenü Quick Fix... auswählen, wenn für die gewünschte Markierung eine Auflösung angegeben wurde.
Markierungsauflösungen werden mit Hilfe des Erweiterungspunktes org.eclipse.ui.markerResolution ergänzt. Dieser Erweiterungspunkt ermöglicht Plug-ins die Zuordnung einer Klasse (class), die IMarkerResolutionGenerator implementiert, zu einem bestimmten Markierungstyp. Die Markierung kann nur über den Markierungstyp oder über den Wert eines oder mehrerer der zugehörigen Attribute qualifiziert werden. Das Tool für die Readme-Dateien deklariert mehrere verschiedene Markierungsauflösungen:
<extension point="org.eclipse.ui.markerResolution"> <markerResolutionGenerator class="org.eclipse.ui.examples.readmetool.ReadmeMarkerResolutionGenerator" markerType="org.eclipse.ui.examples.readmetool.readmemarker"> <attribute name="org.eclipse.ui.examples.readmetool.id" value= "1234"/> </markerResolutionGenerator> <markerResolutionGenerator class="org.eclipse.ui.examples.readmetool.ReadmeMarkerResolutionGenerator" markerType="org.eclipse.ui.examples.readmetool.readmemarker"> <attribute name="org.eclipse.ui.examples.readmetool.level" value= "7"/> </markerResolutionGenerator> <markerResolutionGenerator class="org.eclipse.ui.examples.readmetool.ReadmeMarkerResolutionGenerator" markerType="org.eclipse.ui.examples.readmetool.readmemarker"> <attribute name="org.eclipse.ui.examples.readmetool.code" value= "red"/> <attribute name="org.eclipse.ui.examples.readmetool.language" value= "english"/> </markerResolutionGenerator> </extension>
Alle Markierungsauflösungsgeneratoren werden für den Readme-Markierungstyp definiert, jedoch einer jeweils unterschiedlichen Kombination von Attributwerten zugeordnet. Der erste Markierungsauflösungsgenerator wird hierbei für Markierungen verwendet, für deren Attribut id der Wert "1234" festgelegt ist. In diesem konkreten Beispiel verwendet das Tool für die Readme-Dateien den gleichen Markierungsauflösungsgenerator für alle möglichen Einzelfälle. Diese Vorgehensweise ist nicht unbedingt typisch, sie ist jedoch sinnvoll, wenn nur eine Auflösung für bestimmte Kombinationen von Attributwerten zur Verfügung steht.
Der Markierungsauflösungsgenerator dient zum Zurückgeben einer Gruppe von Markierungsauflösungen (IMarkerResolution), die im Dialog Quick Fix... angezeigt werden. Die Auflösung wird ausgeführt (run()), wenn der Benutzer diese Option im Dialog auswählt. Im Folgenden wird die Implementierung von ReadmeMarkerResolutionGenerator dargestellt:
public class ReadmeMarkerResolutionGenerator implements IMarkerResolutionGenerator { public IMarkerResolution[] getResolutions(IMarker marker) { return new IMarkerResolution[] {new AddSentenceResolution()}; } }
Mit AddSentenceResolution wird die Bezeichnung des Auflösungsdialogs definiert und die Auflösung selbst implementiert.