プラグインは、マーカーがワークベンチの「即時修正...」フィーチャーに加われるように、マーカー・レゾリューションを定義することもできます。 マーカーのためにレゾリューション組み込みがある場合、マーカーを選択して、ポップアップ・メニューから「即時修正...」を選択できます。
マーカー・レゾリューションは、org.eclipse.ui.markerResolution 拡張ポイントを使用して組み込まれます。 この拡張ポイントを使用すると、プラグインは class を関連付けることができます。 このクラスは、IMarkerResolutionGenerator を 特定のマーカーのタイプと共にインプリメントします。 マーカーは、マーカー・タイプによってのみ修飾でき、1 つまたは複数の属性の値によってさらに修飾できます。 README ツールは、いくつかの異なるマーカー・レゾリューションを宣言します。
<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>
各マーカー・レゾリューション生成プログラムは、README マーカー型用に定義されますが、別々の属性値の組み合わせと関連付けられます。 最初のマーカー・レゾリューション生成プログラムは、id 属性が "1234" に設定されているマーカーのために使用されます。 この特定のサンプルでは、README ツールは、すべての場合に同じマーカー・レゾリューション生成プログラムを使用します。 これは一般的ではありませんが、特定の属性値の組み合わせのために、1 つのレゾリューションのみを使用できる場合に有効です。
マーカー・レゾリューション生成プログラムは、マーカー・レゾリューション (IMarkerResolution) の配列を戻す役割があります。 これは、「即時修正...」ダイアログに表示されます。 レゾリューションは、ユーザーがダイアログで選択した場合に run() になります。 ReadmeMarkerResolutionGenerator からのインプリメンテーションを以下に示します。
public class ReadmeMarkerResolutionGenerator implements IMarkerResolutionGenerator { public IMarkerResolution[] getResolutions(IMarker marker) { return new IMarkerResolution[] {new AddSentenceResolution()}; } }
AddSentenceResolution は、レゾリューションのダイアログ・ラベルを定義し、レゾリューション自体をインプリメントします。