Contribuindo com Resolução do Marcador

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 popup se houver uma contribuição de resolução para o marcador.

As resoluções de marcadores contribuem utilizando o ponto de extensão org.eclipse.ui.markerResolution.  Este ponto de extensão permite que os plug-ins associem uma classe que implementa IMarkerResolutionGenerator com um determinado tipo 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 marcadores 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 do Leia-me, 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 esteja definido como "1234".  Neste exemplo específico, a ferramenta Leia-me utiliza o mesmo gerador de resolução do marcador para todos os casos.  Isto não é comum, 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.

Copyright IBM Corp. e outros 2000,2002.