Os plug-ins também podem definir resoluções de marcadores, para que seus marcadores possam participar do recurso Correção Rápida... do workbench. Os usuários podem selecionar um marcador e escolher Correção Rápida... no menu pop-up se houver uma contribuição de resolução para o marcador.
As resoluções do marcador recebem contribuição utilizando o ponto de extensão org.eclipse.ui.markerResolution. Esse ponto de extensão permite aos plug-ins associar uma classe que implementa IMarkerResolutionGenerator a um tipo específico de marcador. O marcador pode ser qualificado apenas pelo tipo de marcador, ou pode ser qualificado também pelo valor de um ou mais de seus atributos. A ferramenta Leia-me declara várias resoluções de marcador diferentes:
<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>
Cada gerador de resolução do marcador é definido para o tipo de marcador readme, mas associado a uma combinação diferente de valores de atributos. O primeiro gerador de resolução do marcador será utilizado para marcadores cujo atributo id estiver definido como "1234". Nesse exemplo específico, a ferramenta Leia-me utiliza o mesmo gerador de resolução do marcador para todos os casos. Isso não é típico, mas faz sentido em um caso onde há apenas uma resolução disponível para combinações específicas de valores de atributos.
O gerador de resolução do marcador é responsável pelo retorno de uma matriz de resoluções de marcadores (IMarkerResolution) que será mostrada no diálogo Correção Rápida.... A resolução será run() se for selecionada pelo usuário no diálogo. A seguir está a implementação de ReadmeMarkerResolutionGenerator:
public class ReadmeMarkerResolutionGenerator implements IMarkerResolutionGenerator { public IMarkerResolution[] getResolutions(IMarker marker) { return new IMarkerResolution[] {new AddSentenceResolution()}; } }
A AddSentenceResolution define o rótulo do diálogo da resolução e implementa a própria resolução.