插件可以定义标记解析,以便它们的标记可以参予工作台快速修正... 功能部件。 如果为标记添加了分辨率,则用户可以选择该标记并从弹出菜单选择快速修正...。
使用 org.eclipse.ui.markerResolution 扩展点添加标记解析。此扩展点允许插件将实现 IMarkerResolutionGenerator 的类与特定类型的标记相关联。可以只使用标记类型限定标记, 或可以用标记的一个或多个属性值进一步限定它。 自述文件工具声明几个不同的标记解析:
<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>
每个标记解析生成器都是为自述文件标记类型定义的, 但它将与另一属性值组合相关联。第一个标记解析生成器将用于 id 属性设置为 "1234" 的标记。在此特定示例中, 自述文件工具对所有情况使用同一标记解析生成器。 这并不是典型情况,但在对特定属性值组合只有一个分辨率可用的情况下,它也是有意义的。
标记解析生成器负责返回将显示在快速修正... 对话框中的一组标记解析(IMarkerResolution)。 该分辨率将是 run()(如果用户在对话框中选择它的话)。以下是来自于 ReadmeMarkerResolutionGenerator 的实现:
public class ReadmeMarkerResolutionGenerator implements IMarkerResolutionGenerator { public IMarkerResolution[] getResolutions(IMarker marker) { return new IMarkerResolution[] {new AddSentenceResolution()}; } }
AddSentenceResolution 定义分辨率的对话框标号并实现分辨率自身。