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 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.

Copyright IBM Corporation e outros 2000, 2003.