Los conectores también pueden definir resoluciones de marcador, para que sus marcadores puedan participar en la característica 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 contribuido con una resolución para el marcador.
Para contribuir con una resolución de marcador se utiliza el punto de extensión org.eclipse.ui.markerResolution. Este punto permite que los conectores asocien una clase (atributo class) que implemente la interfaz IMarkerResolutionGenerator a un determinado tipo de marcador. 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 distintas:
<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 está definido para el tipo de marcador del readme, pero se ha asociado a una combinación distinta de valores de atributos. El primer generador de resoluciones de marcador se empleará para los marcadores cuyo atributo id esté establecido en "1234". En este ejemplo concreto, la herramienta readme utiliza el mismo generador de resoluciones de marcador para todos los casos. Esto no es lo habitual, pero tiene sentido cuando solo esté disponible una resolución para combinaciones específicas de valores de atributos.
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.