マーカー・レゾリューションの組み込み

プラグインは、マーカーがワークベンチの「即時修正...」フィーチャーに加われるように、マーカー・レゾリューションを定義することもできます。  マーカーのためにレゾリューション組み込みがある場合、マーカーを選択して、ポップアップ・メニューから「即時修正...」を選択できます。

マーカー・レゾリューションは、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 は、レゾリューションのダイアログ・ラベルを定義し、レゾリューション自体をインプリメントします。

Copyright IBM Corporation and others 2000, 2003.