1

問題マーカーとリソースの関連付けに問題があるようです。私の場合、エディターの問題マーカーを作成しようとしています。

これを達成するために、私は次のことを試みました:

public class MyEditor extends TextEditor{

private ColorManager colorManager;

public MyEditor() {
         super();
         ...

         IResource resource = (IResource) getEditorInput().getAdapter(IResource.class);

         try 
         {
             marker = resource.createMarker(IMarker.PROBLEM);            
         }
         catch (CoreException e) 
         {
             e.printStackTrace();
         }
    }

ただし、問題はgetEditorInput()がnullを返し続けることです。私はそれを正しい場所で呼んでいないと思います。エディターを設定したらマーカーを作成するのが理想的だと思いましたが、そうでないことも証明されています。

問題マーカーを作成するために、必要な適切なリソースを取得するためのアドバイスはありますか?エディター内にエラーなどを表示したいのですが。

マーカーを作成するためのサンプルをオンラインで確認しましたが、ほとんどの場合、メソッド呼び出しがどこにあるかを表示せずに、ITextEditorオブジェクトを渡すメソッドを表示するだけです。(例:コンパイラのエラーマーカーの作成-reportErrorメソッドを参照

ありがとうございました。ポール

編集:問題マーカーに関する次のリンクも表示しましたが、ここでも、リソース(この場合はres)からcreateMarkerを呼び出しますが、そのセットアップは表示されません。Eclipseエディタプラグインでの構文エラーの表示を参照してください。

4

2 に答える 2

1

EditorInput は init メソッドで初期化されます init または init をオーバーライドできます

public class MyEditor extends TextEditor{

private ColorManager colorManager;

public MyEditor() {
         super();
         ...
    }

public void init(IEditorSite site, IEditorInput input)
            throws PartInitException {
         super.init(site, input);
         IResource resource = (IResource) getEditorInput().getAdapter(IResource.class);

         try 
         {
             marker = resource.createMarker(IMarker.PROBLEM);            
         }
         catch (CoreException e) 
         {
             e.printStackTrace();
         }
}
于 2010-06-21T08:36:17.227 に答える
0

オブジェクトのメソッド getEditorInput()からマーカー ( への呼び出しを含む) を作成します。run()Action

public class MyAction extends Action {
   ...
   public void run() {
     ...

     int line = ...;
     IEditorInput ei = editor.getEditorInput()
     if (ei != null)
        createMarkerAt(line, ei);
   }    
}

追加(ポールのコメントに従って) 編集者を取得するには?

さて、私のアプリでは、メソッドAbstractRulerActionDelegateをオーバーライドすることでサブクラス化していますcreateAction(ITextEditor e, IVerticalRulerInfo ri)(ところで、これは必須です-このメソッドは抽象的です)、私のアプリは関連するITextEditorオブジェクトを取得できます。

于 2010-06-20T09:45:32.937 に答える