本文整理汇总了Java中org.eclipse.jdt.ui.SharedASTProvider.getAST方法的典型用法代码示例。如果您正苦于以下问题:Java SharedASTProvider.getAST方法的具体用法?Java SharedASTProvider.getAST怎么用?Java SharedASTProvider.getAST使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.eclipse.jdt.ui.SharedASTProvider
的用法示例。
在下文中一共展示了SharedASTProvider.getAST方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: getForStatement
import org.eclipse.jdt.ui.SharedASTProvider; //导入方法依赖的package包/类
private static ForStatement getForStatement(ICompilationUnit cu) {
CompilationUnit ast =
SharedASTProvider.getAST(cu, SharedASTProvider.WAIT_YES, new NullProgressMonitor());
final ForStatement[] statement = new ForStatement[1];
ast.accept(
new GenericVisitor() {
protected boolean visitNode(ASTNode node) {
if (node instanceof ForStatement) {
statement[0] = (ForStatement) node;
return false;
} else {
return super.visitNode(node);
}
}
});
return statement[0];
}
示例2: parseWithASTProvider
import org.eclipse.jdt.ui.SharedASTProvider; //导入方法依赖的package包/类
/**
* Tries to get the shared AST from the ASTProvider. If the shared AST is not available, parses
* the type root with a RefactoringASTParser that uses settings similar to the ASTProvider.
*
* @param typeRoot the type root
* @param resolveBindings whether bindings are to be resolved if a new AST needs to be created
* @param pm an {@link IProgressMonitor}, or <code>null</code>
* @return the parsed CompilationUnit
*/
public static CompilationUnit parseWithASTProvider(
ITypeRoot typeRoot, boolean resolveBindings, IProgressMonitor pm) {
CompilationUnit cuNode =
SharedASTProvider.getAST(typeRoot, SharedASTProvider.WAIT_ACTIVE_ONLY, pm);
if (cuNode != null) {
return cuNode;
} else {
return new RefactoringASTParser(ASTProvider.SHARED_AST_LEVEL)
.parse(
typeRoot,
null,
resolveBindings,
ASTProvider.SHARED_AST_STATEMENT_RECOVERY,
ASTProvider.SHARED_BINDING_RECOVERY,
pm);
}
}
示例3: addEdits
import org.eclipse.jdt.ui.SharedASTProvider; //导入方法依赖的package包/类
@Override
protected void addEdits(IDocument doc, TextEdit root) throws CoreException {
super.addEdits(doc, root);
// build a full AST
CompilationUnit unit =
SharedASTProvider.getAST(getCompilationUnit(), SharedASTProvider.WAIT_YES, null);
ASTNode name = NodeFinder.perform(unit, fOffset, fLength);
if (name instanceof SimpleName) {
SimpleName[] names = LinkedNodeFinder.findByProblems(unit, (SimpleName) name);
if (names != null) {
for (int i = 0; i < names.length; i++) {
SimpleName curr = names[i];
root.addChild(new ReplaceEdit(curr.getStartPosition(), curr.getLength(), fNewName));
}
return;
}
}
root.addChild(new ReplaceEdit(fOffset, fLength, fNewName));
}
示例4: getConstantValueFromActiveEditor
import org.eclipse.jdt.ui.SharedASTProvider; //导入方法依赖的package包/类
/**
* Returns the constant value for a field that is referenced by the currently active type.
* This method does may not run in the main UI thread.
* <p>
* XXX: This method was part of the JavadocHover#getConstantValue(IField field, IRegion hoverRegion)
* method (lines 299-314).
* </p>
* @param activeType the type that is currently active
* @param field the field that is being referenced (usually not declared in <code>activeType</code>)
* @param selection the region in <code>activeType</code> that contains the field reference
* @param monitor a progress monitor
*
* @return the constant value for the given field or <code>null</code> if none
* @since 3.4
*/
private static Object getConstantValueFromActiveEditor(ITypeRoot activeType, IField field, ITextSelection selection, IProgressMonitor monitor) {
Object constantValue= null;
CompilationUnit unit= SharedASTProvider.getAST(activeType, SharedASTProvider.WAIT_ACTIVE_ONLY, monitor);
if (unit == null)
return null;
ASTNode node= NodeFinder.perform(unit, selection.getOffset(), selection.getLength());
if (node != null && node.getNodeType() == ASTNode.SIMPLE_NAME) {
IBinding binding= ((SimpleName)node).resolveBinding();
if (binding != null && binding.getKind() == IBinding.VARIABLE) {
IVariableBinding variableBinding= (IVariableBinding)binding;
if (field.equals(variableBinding.getJavaElement())) {
constantValue= variableBinding.getConstantValue();
}
}
}
return constantValue;
}
示例5: doPropertyChanged
import org.eclipse.jdt.ui.SharedASTProvider; //导入方法依赖的package包/类
protected void doPropertyChanged(String property) {
if (property.equals(PreferenceConstants.EDITOR_QUICKASSIST_LIGHTBULB)) {
if (isSetInPreferences()) {
ICompilationUnit cu= getCompilationUnit();
if (cu != null) {
installSelectionListener();
Point point= fViewer.getSelectedRange();
CompilationUnit astRoot= SharedASTProvider.getAST(cu, SharedASTProvider.WAIT_ACTIVE_ONLY, null);
if (astRoot != null) {
doSelectionChanged(point.x, point.y, astRoot);
}
}
} else {
uninstallSelectionListener();
}
}
}
示例6: addEdits
import org.eclipse.jdt.ui.SharedASTProvider; //导入方法依赖的package包/类
@Override
protected void addEdits(IDocument doc, TextEdit root) throws CoreException {
super.addEdits(doc, root);
// build a full AST
CompilationUnit unit= SharedASTProvider.getAST(getCompilationUnit(), SharedASTProvider.WAIT_YES, null);
ASTNode name= NodeFinder.perform(unit, fOffset, fLength);
if (name instanceof SimpleName) {
SimpleName[] names= LinkedNodeFinder.findByProblems(unit, (SimpleName) name);
if (names != null) {
for (int i= 0; i < names.length; i++) {
SimpleName curr= names[i];
root.addChild(new ReplaceEdit(curr.getStartPosition(), curr.getLength(), fNewName));
}
return;
}
}
root.addChild(new ReplaceEdit(fOffset, fLength, fNewName));
}
开发者ID:trylimits,项目名称:Eclipse-Postfix-Code-Completion-Juno38,代码行数:22,代码来源:RenameNodeCorrectionProposal.java
示例7: createAst
import org.eclipse.jdt.ui.SharedASTProvider; //导入方法依赖的package包/类
private CompilationUnit createAst(ICompilationUnit unit, Map<String, String> cleanUpOptions, IProgressMonitor monitor) {
IJavaProject project= unit.getJavaProject();
if (compatibleOptions(project, cleanUpOptions)) {
CompilationUnit ast= SharedASTProvider.getAST(unit, SharedASTProvider.WAIT_NO, monitor);
if (ast != null)
return ast;
}
ASTParser parser= CleanUpRefactoring.createCleanUpASTParser();
parser.setSource(unit);
Map<String, String> compilerOptions= RefactoringASTParser.getCompilerOptions(unit.getJavaProject());
compilerOptions.putAll(cleanUpOptions);
parser.setCompilerOptions(compilerOptions);
return (CompilationUnit)parser.createAST(monitor);
}
示例8: getRecoveredAST
import org.eclipse.jdt.ui.SharedASTProvider; //导入方法依赖的package包/类
private CompilationUnit getRecoveredAST(IDocument document, int offset, Document recoveredDocument) {
CompilationUnit ast= SharedASTProvider.getAST(fCompilationUnit, SharedASTProvider.WAIT_ACTIVE_ONLY, null);
if (ast != null) {
recoveredDocument.set(document.get());
return ast;
}
char[] content= document.get().toCharArray();
// clear prefix to avoid compile errors
int index= offset - 1;
while (index >= 0 && Character.isJavaIdentifierPart(content[index])) {
content[index]= ' ';
index--;
}
recoveredDocument.set(new String(content));
final ASTParser parser= ASTParser.newParser(ASTProvider.SHARED_AST_LEVEL);
parser.setResolveBindings(true);
parser.setStatementsRecovery(true);
parser.setSource(content);
parser.setUnitName(fCompilationUnit.getElementName());
parser.setProject(fCompilationUnit.getJavaProject());
return (CompilationUnit) parser.createAST(new NullProgressMonitor());
}
示例9: getMemberFromOffset
import org.eclipse.jdt.ui.SharedASTProvider; //导入方法依赖的package包/类
public static IMember getMemberFromOffset(ITextEditor javaEditor, int offset) throws JavaModelException {
ITypeRoot element= JavaUI.getEditorInputTypeRoot(javaEditor.getEditorInput());
CompilationUnit ast = SharedASTProvider.getAST(element, SharedASTProvider.WAIT_YES, null);
NodeFinder finder= new NodeFinder(ast, offset, 0);
ASTNode node= finder.getCoveringNode();
while(node != null) {
if(node instanceof Initializer) {
TypeDeclaration typeDeclaration = (TypeDeclaration) node.getParent();
IType type = (IType) typeDeclaration.resolveBinding().getJavaElement();
for(IInitializer initializer : type.getInitializers()) {
if(node.getStartPosition() == initializer.getSourceRange().getOffset()
&& Flags.isStatic(initializer.getFlags())) {
return initializer;
}
}
}
if(node instanceof MethodDeclaration) {
IMethodBinding binding = ((MethodDeclaration) node).resolveBinding();
return (IMethod) binding.getJavaElement();
}
node = node.getParent();
}
return null;
}
示例10: resolvePartialAstAtOffset
import org.eclipse.jdt.ui.SharedASTProvider; //导入方法依赖的package包/类
public CompilationUnit resolvePartialAstAtOffset() {
if (fPartialASTRequested) return fPartialAST;
fPartialASTRequested = true;
// long start= System.currentTimeMillis();
fPartialAST = SharedASTProvider.getAST(fElement, SharedASTProvider.WAIT_YES, null);
// System.out.println("Time requesting partial AST: " + (System.currentTimeMillis() - start));
return fPartialAST;
}
示例11: getRecoveredAST
import org.eclipse.jdt.ui.SharedASTProvider; //导入方法依赖的package包/类
private CompilationUnit getRecoveredAST(
IDocument document, int offset, Document recoveredDocument) {
CompilationUnit ast =
SharedASTProvider.getAST(fCompilationUnit, SharedASTProvider.WAIT_ACTIVE_ONLY, null);
if (ast != null) {
recoveredDocument.set(document.get());
return ast;
}
char[] content = document.get().toCharArray();
// clear prefix to avoid compile errors
int index = offset - 1;
while (index >= 0 && Character.isJavaIdentifierPart(content[index])) {
content[index] = ' ';
index--;
}
recoveredDocument.set(new String(content));
final CheASTParser parser = CheASTParser.newParser(ASTProvider.SHARED_AST_LEVEL);
parser.setResolveBindings(true);
parser.setStatementsRecovery(true);
parser.setSource(content);
parser.setUnitName(fCompilationUnit.getElementName());
parser.setProject(fCompilationUnit.getJavaProject());
return (CompilationUnit) parser.createAST(new NullProgressMonitor());
}
示例12: getASTRoot
import org.eclipse.jdt.ui.SharedASTProvider; //导入方法依赖的package包/类
public CompilationUnit getASTRoot() {
if (fASTRoot == null) {
fASTRoot = SharedASTProvider.getAST(fCompilationUnit, fWaitFlag, null);
if (fASTRoot == null) {
// see bug 63554
fASTRoot = ASTResolving.createQuickFixAST(fCompilationUnit, null);
}
}
return fASTRoot;
}
示例13: findBreakOrContinueTarget
import org.eclipse.jdt.ui.SharedASTProvider; //导入方法依赖的package包/类
/**
* Finds the target for break or continue node.
*
* @param input the editor input
* @param region the region
* @return the break or continue target location or <code>null</code> if none
* @since 3.7
*/
public static OccurrenceLocation findBreakOrContinueTarget(ITypeRoot input, IRegion region) {
CompilationUnit astRoot= SharedASTProvider.getAST(input, SharedASTProvider.WAIT_NO, null);
if (astRoot == null)
return null;
ASTNode node= NodeFinder.perform(astRoot, region.getOffset(), region.getLength());
ASTNode breakOrContinueNode= null;
boolean labelSelected= false;
if (node instanceof SimpleName) {
SimpleName simpleName= (SimpleName) node;
StructuralPropertyDescriptor location= simpleName.getLocationInParent();
if (location == ContinueStatement.LABEL_PROPERTY || location == BreakStatement.LABEL_PROPERTY) {
breakOrContinueNode= simpleName.getParent();
labelSelected= true;
}
} else if (node instanceof ContinueStatement || node instanceof BreakStatement)
breakOrContinueNode= node;
if (breakOrContinueNode == null)
return null;
BreakContinueTargetFinder finder= new BreakContinueTargetFinder();
if (finder.initialize(astRoot, breakOrContinueNode) == null) {
OccurrenceLocation[] locations= finder.getOccurrences();
if (locations != null) {
if (breakOrContinueNode instanceof BreakStatement && !labelSelected)
return locations[locations.length - 1]; // points to the end of target statement
return locations[0]; // points to the beginning of target statement
}
}
return null;
}
开发者ID:trylimits,项目名称:Eclipse-Postfix-Code-Completion-Juno38,代码行数:41,代码来源:JavaElementHyperlinkDetector.java
示例14: run
import org.eclipse.jdt.ui.SharedASTProvider; //导入方法依赖的package包/类
public String run(ITypeRoot input, int offset, int length) throws JavaModelException {
if (input.getSourceRange() == null) {
return SearchMessages.FindOccurrencesEngine_noSource_text;
}
final CompilationUnit root= SharedASTProvider.getAST(input, SharedASTProvider.WAIT_YES, null);
if (root == null) {
return SearchMessages.FindOccurrencesEngine_cannotParse_text;
}
return run(root, offset, length);
}
示例15: detectHyperlinks
import org.eclipse.jdt.ui.SharedASTProvider; //导入方法依赖的package包/类
public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) {
ITextEditor textEditor= (ITextEditor)getAdapter(ITextEditor.class);
if (region == null || textEditor == null)
return null;
IEditorSite site= textEditor.getEditorSite();
if (site == null)
return null;
ITypeRoot javaElement= getInputJavaElement(textEditor);
if (javaElement == null)
return null;
CompilationUnit ast= SharedASTProvider.getAST(javaElement, SharedASTProvider.WAIT_NO, null);
if (ast == null)
return null;
ASTNode node= NodeFinder.perform(ast, region.getOffset(), 1);
if (!(node instanceof StringLiteral) && !(node instanceof SimpleName))
return null;
if (node.getLocationInParent() == QualifiedName.QUALIFIER_PROPERTY)
return null;
IRegion nlsKeyRegion= new Region(node.getStartPosition(), node.getLength());
AccessorClassReference ref= NLSHintHelper.getAccessorClassReference(ast, nlsKeyRegion);
if (ref == null)
return null;
String keyName= null;
if (node instanceof StringLiteral) {
keyName= ((StringLiteral)node).getLiteralValue();
} else {
keyName= ((SimpleName)node).getIdentifier();
}
if (keyName != null)
return new IHyperlink[] {new NLSKeyHyperlink(nlsKeyRegion, keyName, ref, textEditor)};
return null;
}