Los conectores también pueden definir resoluciones de marcador, para que sus marcadores puedan participar en la función Arreglo rápido... del entorno de trabajo. Los usuarios pueden seleccionar un marcador y elegir Arreglo rápido... en el menú emergente si se ha aportado una resolución al marcador.
Las resoluciones de marcador se añaden mediante el punto de extensión org.eclipse.ui.markerResolution. Este punto de extensión permite a los conectores asociar una clase que implemente IMarkerResolutionGenerator a un tipo de marcador determinado. El marcador puede estar calificado solo por su tipo o, además, por el valor de uno o varios de sus atributos. La herramienta readme declara varias resoluciones 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 generador de resoluciones de marcador se define para el tipo de marcador de readme, pero se asocia con una combinación diferente de valores de atributo. El primer generador de resoluciones de marcador se utilizará para los marcadores cuyo atributo id esté establecido en "1234". En este ejemplo, la herramienta readme utiliza el mismo generador de resoluciones de marcador en todos los casos. Esto no es habitual, pero tiene sentido en caso de que sólo exista una resolución disponible para combinaciones específicas de valores de atributo.
El generador de resoluciones de marcador se encarga de devolver una matriz de resoluciones de marcador (IMarkerResolution) que se mostrará en el diálogo Arreglo rápido.... La resolución se ejecutará (método run()) si el usuario la selecciona en el diálogo. La implementación de ReadmeMarkerResolutionGenerator es la siguiente:
public class ReadmeMarkerResolutionGenerator implements IMarkerResolutionGenerator { public IMarkerResolution[] getResolutions(IMarker marker) { return new IMarkerResolution[] {new AddSentenceResolution()}; } }
El objeto AddSentenceResolution define la etiqueta del diálogo de la resolución e implementa la propia resolución.