les plug-in peuvent également définir des résolutions de marqueurs afin que leurs marqueurs participent à la fonction Quick Fix... du plan de travail. Les utilisateurs peuvent sélectionner un marqueur et choisir Quick Fix... dans le menu en incrustation si une résolution a été ajoutée pour le marqueur.
Les résolutions de marqueurs sont ajoutées à l'aide du point d'extension org.eclipse.ui.markerResolution. Ce dernier permet aux plug-in d'associer une classe implémentant IMarkerResolutionGenerator avec un type particulier de marqueur. Le marqueur peut être qualifié uniquement selon son type ou bien par la valeur d'un ou plusieurs de ses attributs. L'outil readme déclare différentes résolutions de marqueurs :
<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>
Chaque générateur de résolution de marqueur est défini pour le type de marqueur de readme, mais est associé à une combinaison différente de valeurs d'attributs. Le premier générateur sera utilisé pour les marqueurs dont l'attribut id a la valeur "1234". Dans cet exemple précis, l'outil readme utilise dans tous les cas le même générateur de résolution. Cette situation n'est pas standard mais est logique lorsqu'une seule résolution est disponible pour des combinaisons spécifiques de valeurs d'attributs.
Le générateur de résolution de marqueur est responsable du renvoi d'un ensemble de résolutions (IMarkerResolution) qui apparaîtra dans la boîte de dialogue Quick Fix... La résolution sera run() si l'utilisateur la sélectionne dans la boîte. Voici l'implémentation à partir de ReadmeMarkerResolutionGenerator :
public class ReadmeMarkerResolutionGenerator implements IMarkerResolutionGenerator { public IMarkerResolution[] getResolutions(IMarker marker) { return new IMarkerResolution[] {new AddSentenceResolution()}; } }
AddSentenceResolution définit le libellé de la boîte de dialogue de la résolution et implémente cette résolution.