当前位置: 首页>>代码示例>>Java>>正文


Java SharedASTProvider.getAST方法代码示例

本文整理汇总了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];
}
 
开发者ID:eclipse,项目名称:che,代码行数:20,代码来源:ConvertForLoopQuickFixTest.java

示例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);
  }
}
 
开发者ID:eclipse,项目名称:che,代码行数:27,代码来源:RefactoringASTParser.java

示例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));
}
 
开发者ID:eclipse,项目名称:che,代码行数:23,代码来源:RenameNodeCorrectionProposal.java

示例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;
}
 
开发者ID:trylimits,项目名称:Eclipse-Postfix-Code-Completion-Juno38,代码行数:35,代码来源:JavadocView.java

示例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();
		}
	}
}
 
开发者ID:trylimits,项目名称:Eclipse-Postfix-Code-Completion,代码行数:18,代码来源:QuickAssistLightBulbUpdater.java

示例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);
}
 
开发者ID:trylimits,项目名称:Eclipse-Postfix-Code-Completion,代码行数:18,代码来源:CleanUpPostSaveListener.java

示例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());
}
 
开发者ID:trylimits,项目名称:Eclipse-Postfix-Code-Completion,代码行数:27,代码来源:OverrideCompletionProposal.java

示例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;
}
 
开发者ID:masao-kunii,项目名称:byteman-editor,代码行数:26,代码来源:JavaUtils.java

示例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;
}
 
开发者ID:eclipse,项目名称:che,代码行数:9,代码来源:JavaTextSelection.java

示例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());
}
 
开发者ID:eclipse,项目名称:che,代码行数:29,代码来源:OverrideCompletionProposal.java

示例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;
}
 
开发者ID:eclipse,项目名称:che,代码行数:11,代码来源:AssistContext.java

示例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);
}
 
开发者ID:trylimits,项目名称:Eclipse-Postfix-Code-Completion,代码行数:12,代码来源:FindOccurrencesEngine.java

示例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;
}
 
开发者ID:trylimits,项目名称:Eclipse-Postfix-Code-Completion,代码行数:40,代码来源:NLSKeyHyperlinkDetector.java


注:本文中的org.eclipse.jdt.ui.SharedASTProvider.getAST方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。