2012-03-05 6 views
0

こんにちは、私はIDEを作成するためのEclipseプラグインプロジェクトを行っています。私のIDEでは、 現在開いているエディタで特定の文字列がチェックされており、 ビューにあるテキストボックスに入力された文字列で置き換える必要があります。 私はエディタにアクセスできますが、特定の 文字列を検索し、その文字列をユーザが入力した文字列に置き換えた場合、 は機能しません。現在開いているエディタ内の特定のStringを別のStringに置き換えるにはどうすればいいですか?

IDocumentProvider provider=((AbstractTextEditor) ieditorpart).getDocumentProvid(); 
IDocument doc = provider.getDocument(ieditorpart.getEditorInput()); 
String content = doc.get(); 
pos=content.compareTo("\\/\\*ProbeEnd\\*\\/"); 
doc.replace(pos,5, "hello"); 

しかし、これは動作していない...ここ..私はちょうどこんにちはとして交換 文字列を与えているが、その値はテキストボックスから取るべき

は、エディタにアクセスする際に間違いがあります?これを行うにはこの アプローチを使用する必要がありますか、これを実装する方法はありますか?できますか? 誰もがこれをやってくれますか?

答えて

0

エディタからfirePropertyChange(IEditorPart.PROP_INPUT)を呼び出します。

+0

は、編集者は、文書にリスナーを登録して直接置き換えるについて通知されます。入力を変更する必要はありません。 – Adreamus

1

なぜ変数 'pos'がcompareTo-Value(-1,0,1)ですか? compareToは、2つの文字列の辞書順を返します。

IDocumentの交換方法は、3つのパラメーターを有する:INTは

  • オフセット - れ、「オフセット」から始まる長さ - 「テキスト」は
  • INT長を挿入すべき文書、オフセット上書きする必要があります。長さ0は挿入を意味します。
  • 文字列のテキスト - 置換テキスト

例:デフォルトのtexteditorsで

String oldContent = doc.get(); 
assert oldContent.equals("TestingText"); 

String replaceText = "REPLACE"; 

doc.replace(5,3,replaceText); 

String newContent = doc.get(); 
assert newContent.equals("TestiREPLACEext"); 
//offset 5 is the position after 'Testi' 
//length 3 means 'ngT' (starting from the offset) should be replaced 
//REPLACE is the newText 
関連する問題