package org.projectusus.core.filerelations.model;
import org.eclipse.jdt.core.dom.ASTNode;
import org.eclipse.jdt.core.dom.AbstractTypeDeclaration;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jdt.core.dom.FieldAccess;
import org.eclipse.jdt.core.dom.IBinding;
import org.eclipse.jdt.core.dom.ITypeBinding;
import org.eclipse.jdt.core.dom.QualifiedName;
import org.eclipse.jdt.core.dom.SimpleName;
import org.eclipse.jdt.core.dom.SimpleType;
public class ASTNodeHelper {
public ITypeBinding resolveBindingOf( AbstractTypeDeclaration node ) {
return node.resolveBinding();
}
public ITypeBinding resolveBindingOf( SimpleType node ) {
return node.resolveBinding();
}
public IBinding resolveBindingOf( SimpleName node ) {
return node.resolveBinding();
}
public ITypeBinding resolveTypeBindingOf( FieldAccess node ) {
return node.resolveTypeBinding();
}
public ITypeBinding resolveTypeBindingOf( QualifiedName qualifier ) {
return qualifier.resolveTypeBinding();
}
public AbstractTypeDeclaration findEnclosingClassOf( ASTNode node ) {
ASTNode enclosingClass = node;
while( enclosingClass != null && !(enclosingClass instanceof AbstractTypeDeclaration) ) {
enclosingClass = enclosingClass.getParent();
}
return (AbstractTypeDeclaration)enclosingClass;
}
public int calcLineNumberFor( ASTNode node ) {
ASTNode root = node.getRoot();
if( root instanceof CompilationUnit ) {
CompilationUnit cu = (CompilationUnit)root;
return cu.getLineNumber( node.getStartPosition() );
}
return 0;
}
public int getStartPositionFor( ASTNode node ) {
return node.getStartPosition();
}
}