package copyto.from.jdt.internal;
import org.eclipse.jdt.core.IMember;
import org.eclipse.jdt.core.ISourceRange;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.dom.ASTNode;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jdt.core.dom.NodeFinder;
import org.eclipse.jdt.ui.SharedASTProvider;
class MemberCopyable extends ASTNodeCopyable {
private final IMember member;
public MemberCopyable(final IMember member) {
this.member = member;
}
@Override
protected ASTNode createNode() {
final CompilationUnit ast = SharedASTProvider.getAST(this.member
.getTypeRoot(), SharedASTProvider.WAIT_YES, null);
if (ast != null) {
try {
return findMethodDeclaration(ast, this.member);
} catch (final JavaModelException e) {
}
return null;
}
return ast;
}
private static ASTNode findMethodDeclaration(final CompilationUnit unit,
final IMember member) throws JavaModelException {
final ISourceRange sourceRange = member.getSourceRange();
return NodeFinder.perform(unit, sourceRange.getOffset(), sourceRange
.getLength());
}
}