2016-06-01 7 views
0

私は、texthoverを使用してEclipseプラグインを作成しています。Eclipseプラグインの開発:DefaultInformationControl期待どおりに動作しません

public IInformationControlCreator getHoverControlCreator() 

これは私のコードです:

@Override 
    public IInformationControlCreator getHoverControlCreator() { 

    return new IInformationControlCreator() { 
     public IInformationControl createInformationControl(Shell parent) { 
      Shell s=new Shell(parent,SWT.V_SCROLL | SWT.H_SCROLL); 
      ToolBarManager tbm = new ToolBarManager(SWT.FLAT); 
      NoFocusDic dic = new NoFocusDic(parent, tbm); 
      dic.setBackgroundColor(new Color(null,123,234,12)); 
      ButtonAction ba=new ButtonAction(); 
      tbm.add(ba); 
      tbm.update(true); 
      dic.setSize(300,100); 
      dic.setLocation(new Point(500,500)); 
     // dic.setInformation("abc"); 
      dic.setVisible(true); 
      return dic; 

     } 
    }; 
} 

私はsetInformationラインでこのコードを実行すると、私が手に私は、私は次の関数を使用ホバーウィンドウにアクションを追加する必要があります このウィンドウ:

the window I get with the setInformation line

そして、私はSETINせずにそれを実行します

the window I get without the setInformation line

だから私は常に取得したいウィンドウが二つ目ですが、テキスト内側:形成ラインは、私はこのウィンドウを取得します。 私はフォーカスをキャッチしようとするとsetVisibleが機能しないことをEclipseのサイトで読みましたが、setInformationがフォーカスを捕まえているとは思いません。

すべてのアイデア何をすべきか?

package TextHoverPackage; 

import org.eclipse.jface.action.ToolBarManager; 
import org.eclipse.jface.text.DefaultInformationControl; 
import org.eclipse.jface.text.IInformationControl; 
import org.eclipse.jface.text.IInformationControlCreator; 
import org.eclipse.jface.text.IInformationControlExtension2; 
import org.eclipse.swt.SWT; 
import org.eclipse.swt.graphics.Color; 
import org.eclipse.swt.widgets.Shell; 

public class NoFocusDic extends DefaultInformationControl implements IInformationControlExtension2 { 

    public NoFocusDic(Shell parent, ToolBarManager toolBarManager) { 
     super(parent, toolBarManager); 
    } 

    public NoFocusDic(Shell parent, ToolBarManager toolBarManager, IInformationPresenter a){ 
     super(parent, toolBarManager,a); 
    } 

    @Override 
    public void setInput(Object arg0) { 
     super.setInformation(arg0.toString()); 
    } 
} 
+0

'NoFocusDic'は何ですか? –

+0

@ greg-449 DefaultInformationControlから継承し、IInformationControlExtension2を実装してウィンドウをpictue number 2にするクラスです。PSはこのクラスコードをクエストに追加します –

答えて

0

DefaultInformationControl.setInformationあなたがそれを与えるテキストを修正するために、ウィンドウのサイズを調整します。ただし、IInformationPresenterが定義されている場合にのみこれが実行されます。

だから、一つの選択肢は、あなたのコンストラクタでIInformationPresenterためnullを指定することです:

public NoFocusDic(Shell parent, ToolBarManager toolBarManager) { 
    super(parent, toolBarManager, null); 
} 
+0

私はすでに試してみました。最初の写真は結果ですこの –

+0

あなたの言ったことではありません。私はsetInformationを呼んでいますが、空の情報プレゼンターと呼んでいます。使用したコンストラクターはHTMLInformationPresenterを使用します。 –

+0

私のコンストラクタを編集し、私の行をあなたの行に置き換えても、変更はありません。私の本当の問題は、最初の画像がマウスを動かして見ている通常のホバーに戻ることです(黄色で、私の行動はありません)。 P.S.あなたはDefaultInformationControlのソースコードをどのように見つけることができますか? –

関連する問題