本文整理汇总了Java中org.netbeans.api.java.source.TreeUtilities.pathFor方法的典型用法代码示例。如果您正苦于以下问题:Java TreeUtilities.pathFor方法的具体用法?Java TreeUtilities.pathFor怎么用?Java TreeUtilities.pathFor使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.netbeans.api.java.source.TreeUtilities
的用法示例。
在下文中一共展示了TreeUtilities.pathFor方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: widenToElementBounds
import org.netbeans.api.java.source.TreeUtilities; //导入方法依赖的package包/类
private TreePath widenToElementBounds(CompilationInfo cInfo, BaseDocument doc, int[] bounds) {
SourcePositions sp = cInfo.getTrees().getSourcePositions();
TreeUtilities tu = cInfo.getTreeUtilities();
int startOffset = getLineStart(doc, bounds[0]);
int endOffset = getLineEnd(doc, bounds[1]);
while (true) {
TokenSequence<JavaTokenId> ts = SourceUtils.getJavaTokenSequence(cInfo.getTokenHierarchy(), startOffset);
if (ts != null && (ts.moveNext() || ts.movePrevious())) {
if (ts.offset() < startOffset && ts.token().id() != JavaTokenId.WHITESPACE) {
startOffset = getLineStart(doc, ts.offset());
continue;
}
}
ts = SourceUtils.getJavaTokenSequence(cInfo.getTokenHierarchy(), endOffset);
if (ts != null && (ts.moveNext() || ts.movePrevious())) {
if (ts.offset() < endOffset && ts.token().id() != JavaTokenId.WHITESPACE) {
endOffset = getLineEnd(doc, ts.offset() + ts.token().length());
continue;
}
}
boolean finish = true;
TreePath tp = tu.pathFor(startOffset);
while (tp != null) {
Tree leaf = tp.getLeaf();
List<? extends Tree> children = null;
switch (leaf.getKind()) {
case BLOCK:
if (endOffset < sp.getEndPosition(tp.getCompilationUnit(), leaf)) {
children = ((BlockTree) leaf).getStatements();
}
break;
case CLASS:
case INTERFACE:
case ANNOTATION_TYPE:
case ENUM:
if (endOffset < sp.getEndPosition(tp.getCompilationUnit(), leaf)) {
children = ((ClassTree) leaf).getMembers();
}
break;
}
if (children != null) {
for (Tree tree : children) {
int startPos = (int) sp.getStartPosition(tp.getCompilationUnit(), tree);
int endPos = (int) sp.getEndPosition(tp.getCompilationUnit(), tree);
if (endPos > startOffset) {
if (startPos < startOffset) {
startOffset = getLineStart(doc, startPos);
finish = false;
}
if (startPos < endOffset && endOffset < endPos) {
endOffset = getLineEnd(doc, endPos);
finish = false;
}
}
}
break;
}
tp = tp.getParentPath();
}
if (finish) {
bounds[0] = startOffset;
bounds[1] = endOffset;
return tp;
}
}
}
示例2: findDestinationOffset
import org.netbeans.api.java.source.TreeUtilities; //导入方法依赖的package包/类
private int findDestinationOffset(CompilationInfo cInfo, BaseDocument doc, int offset, boolean insideBlock) {
TreeUtilities tu = cInfo.getTreeUtilities();
SourcePositions sp = cInfo.getTrees().getSourcePositions();
while (true) {
if (offset < 0 || offset > doc.getLength()) {
return -1;
}
int destinationOffset = downward ? getLineEnd(doc, offset) : getLineStart(doc, offset);
if (doc instanceof GuardedDocument && ((GuardedDocument)doc).isPosGuarded(destinationOffset)) {
return -1;
}
if (destinationOffset < doc.getLength()) {
TokenSequence<JavaTokenId> ts = SourceUtils.getJavaTokenSequence(cInfo.getTokenHierarchy(), destinationOffset);
if (ts != null && (ts.moveNext() || ts.movePrevious())) {
if (ts.offset() < destinationOffset && ts.token().id() != JavaTokenId.WHITESPACE) {
offset = downward ? ts.offset() + ts.token().length() : ts.offset();
continue;
}
}
}
TreePath destinationPath = tu.pathFor(destinationOffset);
Tree leaf = destinationPath.getLeaf();
if (insideBlock) {
switch (leaf.getKind()) {
case COMPILATION_UNIT:
return -1;
case BLOCK:
return destinationOffset;
case IF:
case FOR_LOOP:
case ENHANCED_FOR_LOOP:
case WHILE_LOOP:
case DO_WHILE_LOOP:
case SWITCH:
case CASE:
case SYNCHRONIZED:
case TRY:
case CATCH:
offset = destinationOffset + (downward ? 1 : -1);
break;
default:
offset = downward
? (int) sp.getEndPosition(destinationPath.getCompilationUnit(), leaf)
: (int) sp.getStartPosition(destinationPath.getCompilationUnit(), leaf);
}
} else {
switch (leaf.getKind()) {
case COMPILATION_UNIT:
return -1;
case CLASS:
case INTERFACE:
case ANNOTATION_TYPE:
case ENUM:
return destinationOffset;
default:
offset = downward
? (int) sp.getEndPosition(destinationPath.getCompilationUnit(), leaf)
: (int) sp.getStartPosition(destinationPath.getCompilationUnit(), leaf);
}
}
}
}