2016-04-14 12 views
1

JAVAエディターと同じように、XMLで変数/値/タグの「出現」を「色付け」できるEclipseプラグインを開発する必要があります。
私は日食のデフォルトのXMLエディタを使用して、現在は次のコードで選択した単語の上に灰色の背景を置くことができていますよ:Eclipse構文着色プラグイン

for (Point p : offsets){ 
     TextPresentation t = new TextPresentation(); 

     t.replaceStyleRange(new StyleRange((int)p.getX(), 
       (int)(p.getY() - p.getX()), 
       null, 
       Color.win32_new(null, 0xDDDDDD))); 

     fText.changeTextPresentation(t, true); 
    } 

私の問題は、私はデフォルトのスタイルを回復することができないということですユーザーが別の変数/タグ/値を選択しようとした場合。フォーカスを失った後、テキストは自然な色付けを設定しません。現時点では、ハードコードされたRGB値を使用してデフォルトの色を設定していますが、ユーザーがEclipseのデフォルトテーマ(白いテーマ)を保持していた場合にのみ「動作」しています。

完全な構文の色再確認をドキュメントに求める方法はありますか?

読んでいただきありがとうございます。

答えて

0

私は自分で答えを見つけました。 ここでは:

選択のスタイルを変更する前に、まず現在のスタイルを保存する必要があります。類似した構造を使用します。

private ArrayList<Point> offsets = new ArrayList<Point>(); 
private ArrayList<Color> foregroundgColor = new ArrayList<Color>(); 

次に、ループ文で、この構造体の出現箇所のすべてのスタイル/オフセットを置く:

offsets.add(new Point(i,j));  
fgColor.add(fText.getTextWidget().getStyleRangeAtOffset(i).foreground); 

をあなたは今、「ハイライト」(グレーの背景を適用することができます)発生箇所に:

:選択した発生箇所がフォーカスを失ったときに最後に

for (Point p : offsets){ 
     TextPresentation t = new TextPresentation(); 

     t.replaceStyleRange(new StyleRange((int)p.getX(), 
       (int)(p.getY() - p.getX()), 
       null, 
       Color.win32_new(null, 0xDDDDDD))); 

     fText.changeTextPresentation(t, true); 
    } 

、デフォルトのスタイルを復元します

for (int i = 0; i < offsets.size(); i++){ 

      Point p = offsets.get(i); 

      TextPresentation t = new TextPresentation(); 
      t.replaceStyleRange(new StyleRange((int)p.getX(), 
               (int)(p.getY() - p.getX()), 
               fgColor.get(i), 
               null)); 
      fText.changeTextPresentation(t, true); 
     } 

    offsets.clear(); 
    fgColor.clear();