Eclipse/プラグイン開発のTIPS集/コード解析/org.eclipse.text.edits.MultiTextEdit
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
**概要[#d7802a0a]
org.eclipse.text.edits.MultiTextEditクラスはエディタで開...
''2009/07/01追記:Javaのソースコードに関していえば、JDTの...
**やってみる [#h08660ef]
実際にやってみます。スケルトンとなるコードはだいたい以下...
private void execute(ICompilationUnit unit, IProgressMon...
IJavaElement[] elements = null;
try {
if (!unit.isStructureKnown()) {
elements = unit.getChildren();
}
} catch (JavaModelException e) {
e.printStackTrace();
}
try {
monitor.beginTask("タスク実行。", 5);
// ITextFileBufferManagerの取得。
ITextFileBufferManager manager = FileBuffers.getText...
IPath path = unit.getPath();
// ファイルにconnect
SubProgressMonitor subMonitor = new SubProgressMonit...
subMonitor.beginTask("", elements.length);
manager.connect(path, LocationKind.IFILE, subMonitor);
try {
// document取得。
IDocument document = manager.getTextFileBuffer(path,
LocationKind.IFILE).getDocument();
IJavaProject project = unit.getJavaProject();
// エディット用クラスを生成。
MultiTextEdit edit = new MultiTextEdit();
// 子要素は、パッケージ宣言だったり、クラスだった...
// 一つのソースに複数クラスが書いてある場合もある...
for (final IJavaElement javaElement : elements) {
// ↓型(クラス)だったらば、ITypeにキャストしてい...
if (javaElement.getElementType() == IJavaElement...
IType type = (IType) javaElement;
// メソッド一覧を取得。
IMethod[] methods = type.getMethods();
for (IMethod method : methods) { (↓色々やっ...
String code = createIndentedCode("hoge",meth...
// オフセット位置を計算する。(↓色々やってま...
int memberStartOffset = getMemberStartOffset...
// オフセット位置に、挿入する。
edit.addChild(new InsertEdit(memberStartOffs...
}
}
subMonitor.worked(1);
}
edit.apply(document); // apply all edits
} catch (BadLocationException e) {
e.printStackTrace();
} finally {
manager.disconnect(path, LocationKind.IFILE, subMo...
subMonitor.done();
}
} finally {
monitor.worked(1);
monitor.done();
}
}
挿入する位置を求めたり、改行コードを取得したり、挿入する...
// ITextFileBufferManagerの取得。
ITextFileBufferManager manager = FileBuffers.getTextFile...
IPath path = unit.getPath();
manager.connect(path, LocationKind.IFILE, subMonitor);
try {
// document取得。
IDocument document = manager.getTextFileBuffer(path,Lo...
IJavaProject project = unit.getJavaProject();
// エディット用クラスを生成。
MultiTextEdit edit = new MultiTextEdit();
edit.addChild(new InsertEdit(offset,code)); //offsetの...
edit.apply(document); // apply all edits
} catch (BadLocationException e) {
e.printStackTrace();
} finally {
manager.disconnect(path, LocationKind.IFILE, subMonito...
}
このように ITextFileBufferManager インタフェースでソース...
----
この記事は
#vote(おもしろかった[3],そうでもない[1])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
**概要[#d7802a0a]
org.eclipse.text.edits.MultiTextEditクラスはエディタで開...
''2009/07/01追記:Javaのソースコードに関していえば、JDTの...
**やってみる [#h08660ef]
実際にやってみます。スケルトンとなるコードはだいたい以下...
private void execute(ICompilationUnit unit, IProgressMon...
IJavaElement[] elements = null;
try {
if (!unit.isStructureKnown()) {
elements = unit.getChildren();
}
} catch (JavaModelException e) {
e.printStackTrace();
}
try {
monitor.beginTask("タスク実行。", 5);
// ITextFileBufferManagerの取得。
ITextFileBufferManager manager = FileBuffers.getText...
IPath path = unit.getPath();
// ファイルにconnect
SubProgressMonitor subMonitor = new SubProgressMonit...
subMonitor.beginTask("", elements.length);
manager.connect(path, LocationKind.IFILE, subMonitor);
try {
// document取得。
IDocument document = manager.getTextFileBuffer(path,
LocationKind.IFILE).getDocument();
IJavaProject project = unit.getJavaProject();
// エディット用クラスを生成。
MultiTextEdit edit = new MultiTextEdit();
// 子要素は、パッケージ宣言だったり、クラスだった...
// 一つのソースに複数クラスが書いてある場合もある...
for (final IJavaElement javaElement : elements) {
// ↓型(クラス)だったらば、ITypeにキャストしてい...
if (javaElement.getElementType() == IJavaElement...
IType type = (IType) javaElement;
// メソッド一覧を取得。
IMethod[] methods = type.getMethods();
for (IMethod method : methods) { (↓色々やっ...
String code = createIndentedCode("hoge",meth...
// オフセット位置を計算する。(↓色々やってま...
int memberStartOffset = getMemberStartOffset...
// オフセット位置に、挿入する。
edit.addChild(new InsertEdit(memberStartOffs...
}
}
subMonitor.worked(1);
}
edit.apply(document); // apply all edits
} catch (BadLocationException e) {
e.printStackTrace();
} finally {
manager.disconnect(path, LocationKind.IFILE, subMo...
subMonitor.done();
}
} finally {
monitor.worked(1);
monitor.done();
}
}
挿入する位置を求めたり、改行コードを取得したり、挿入する...
// ITextFileBufferManagerの取得。
ITextFileBufferManager manager = FileBuffers.getTextFile...
IPath path = unit.getPath();
manager.connect(path, LocationKind.IFILE, subMonitor);
try {
// document取得。
IDocument document = manager.getTextFileBuffer(path,Lo...
IJavaProject project = unit.getJavaProject();
// エディット用クラスを生成。
MultiTextEdit edit = new MultiTextEdit();
edit.addChild(new InsertEdit(offset,code)); //offsetの...
edit.apply(document); // apply all edits
} catch (BadLocationException e) {
e.printStackTrace();
} finally {
manager.disconnect(path, LocationKind.IFILE, subMonito...
}
このように ITextFileBufferManager インタフェースでソース...
----
この記事は
#vote(おもしろかった[3],そうでもない[1])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: