# HG changeset patch # User Jan Lahoda # Date 1345874803 -7200 # Node ID 610a3830e4518985d295eee31dcc33206030b801 # Parent 659636ea24a7eef32f79cde20fef3dfe23ba497e# Parent ddabc8ca59a967a844aab9733125f56523e2b79c Merging changes between remote-usages-to-find-usages heads diff -r 659636ea24a7 -r 610a3830e451 remoting/ide/usages/src/org/netbeans/modules/jackpot30/ide/usages/RemoteUsages.java --- a/remoting/ide/usages/src/org/netbeans/modules/jackpot30/ide/usages/RemoteUsages.java Wed Aug 15 20:10:02 2012 +0200 +++ b/remoting/ide/usages/src/org/netbeans/modules/jackpot30/ide/usages/RemoteUsages.java Sat Aug 25 08:06:43 2012 +0200 @@ -189,12 +189,14 @@ FROM_BASE; } - public static boolean computeOccurrences(FileObject file, final ElementHandle eh, final Set options, final TreeElement parent, final List toPopulate) { + public static boolean computeOccurrences(FileObject file, final ElementHandle eh, final Set options, final TreeElement parent, final AtomicBoolean stop, final List toPopulate) { final boolean[] success = new boolean[] {true}; try { JavaSource.forFileObject(file).runUserActionTask(new Task() { @Override public void run(final CompilationController parameter) throws Exception { + if (stop.get()) return ; + parameter.toPhase(Phase.RESOLVED); final Element toFind = eh.resolve(parameter); @@ -203,8 +205,6 @@ return; } - final AtomicBoolean stop = new AtomicBoolean(); - new CancellableTreePathScanner(stop) { @Override public Void visitIdentifier(IdentifierTree node, Void p) { handleNode(node.getName(), getCurrentPath()); @@ -221,7 +221,7 @@ OUTER: while (true) { switch (name.getLeaf().getKind()) { case PARAMETERIZED_TYPE: name = new TreePath(name, ((ParameterizedTypeTree) name.getLeaf()).getType()); break; - case MEMBER_SELECT: simpleName = ((MemberSelectTree) name).getIdentifier(); break OUTER; + case MEMBER_SELECT: simpleName = ((MemberSelectTree) name.getLeaf()).getIdentifier(); break OUTER; case IDENTIFIER: simpleName = ((IdentifierTree) name.getLeaf()).getName(); break OUTER; default: name = getCurrentPath(); break OUTER; } diff -r 659636ea24a7 -r 610a3830e451 remoting/ide/usages/src/org/netbeans/modules/jackpot30/ide/usages/RemoteWhereUsedQuery.java --- a/remoting/ide/usages/src/org/netbeans/modules/jackpot30/ide/usages/RemoteWhereUsedQuery.java Wed Aug 15 20:10:02 2012 +0200 +++ b/remoting/ide/usages/src/org/netbeans/modules/jackpot30/ide/usages/RemoteWhereUsedQuery.java Sat Aug 25 08:06:43 2012 +0200 @@ -21,14 +21,16 @@ import org.netbeans.modules.refactoring.api.Problem; import org.netbeans.modules.refactoring.api.RefactoringElement; import org.netbeans.modules.refactoring.api.Scope; -import org.netbeans.modules.refactoring.api.ScopeDescription; -import org.netbeans.modules.refactoring.api.ScopeProvider; import org.netbeans.modules.refactoring.api.WhereUsedQuery; +import org.netbeans.modules.refactoring.java.api.WhereUsedQueryConstants; import org.netbeans.modules.refactoring.spi.RefactoringElementsBag; import org.netbeans.modules.refactoring.spi.RefactoringPlugin; import org.netbeans.modules.refactoring.spi.RefactoringPluginFactory; import org.netbeans.modules.refactoring.spi.SimpleRefactoringElementImplementation; import org.netbeans.modules.refactoring.spi.ui.ExpandableTreeElement; +import org.netbeans.modules.refactoring.spi.ui.ScopeDescription; +import org.netbeans.modules.refactoring.spi.ui.ScopeProvider; +import org.netbeans.modules.refactoring.spi.ui.ScopeReference; import org.netbeans.modules.refactoring.spi.ui.TreeElement; import org.netbeans.modules.refactoring.spi.ui.TreeElementFactory; import org.netbeans.modules.refactoring.spi.ui.TreeElementFactoryImplementation; @@ -75,6 +77,15 @@ TreePathHandle handle = what.getRefactoringSource().lookup(TreePathHandle.class); ElementHandle toSearch = handle.getElementHandle(); Set searchOptions = EnumSet.noneOf(SearchOptions.class); + if(what.getBooleanValue(WhereUsedQuery.FIND_REFERENCES)) { + searchOptions.add(SearchOptions.USAGES); + } + if(what.getBooleanValue(WhereUsedQueryConstants.FIND_SUBCLASSES)) { + searchOptions.add(SearchOptions.SUB); + } + if(what.getBooleanValue(WhereUsedQueryConstants.SEARCH_FROM_BASECLASS)) { + searchOptions.add(SearchOptions.FROM_BASE); + } for (FileObject found : RemoteUsages.findUsages(toSearch, searchOptions, /*XXX*/new AtomicBoolean())) { Impl i = new Impl(found, toSearch, searchOptions); @@ -173,6 +184,7 @@ private final Impl impl; private final TreeElement delegateTo; + private final AtomicBoolean cancel = new AtomicBoolean(); public TreeElementImpl(Impl impl, TreeElement delegateTo) { this.impl = impl; @@ -201,38 +213,42 @@ @Override public Iterator iterator() { + cancel.set(false); + final List result = new ArrayList(); - RemoteUsages.computeOccurrences(impl.file, impl.eh, impl.searchOptions, this, result); + RemoteUsages.computeOccurrences(impl.file, impl.eh, impl.searchOptions, this, cancel, result); return result.iterator(); } @Override - public int estimateSubNodesCount() { + public int estimateChildCount() { return 1; } + + @Override + public boolean cancel() { + cancel.set(true); + + return true; + } } private static final Scope REMOTE_SCOPE = Scope.create(Collections.emptyList(), Collections.emptyList(), Collections.emptyList()); - private static final ScopeDescription REMOTE_SCOPE_DESCRIPTION = new ScopeDescription("remote-scope", "Remote Scope", null, "A") { - @Override public Scope getScope() { + + @ScopeDescription(id="remote-scope", displayName="Remote Scope", position=-300) + @ScopeReference(path="org-netbeans-modules-refactoring-java-ui-WhereUsedPanel") + public static class RemoteScopeProvider extends ScopeProvider { + + @Override + public boolean initialize(Lookup context, AtomicBoolean cancel) { + return RemoteIndex.loadIndices().iterator().hasNext(); + } + + @Override + public Scope getScope() { return REMOTE_SCOPE; } - }; - - @ServiceProvider(service=ScopeProvider.class) - public static final class ScopeProviderImpl implements ScopeProvider { - - @Override - public Iterable scopesFor(Lookup source) { - if (RemoteIndex.loadIndices().iterator().hasNext()) { - return Collections.singletonList(REMOTE_SCOPE_DESCRIPTION); - } else { - return Collections.emptyList(); - } - } - } - } diff -r 659636ea24a7 -r 610a3830e451 remoting/ide/usages/test/unit/src/org/netbeans/modules/jackpot30/ide/usages/RemoteUsagesTest.java --- a/remoting/ide/usages/test/unit/src/org/netbeans/modules/jackpot30/ide/usages/RemoteUsagesTest.java Wed Aug 15 20:10:02 2012 +0200 +++ b/remoting/ide/usages/test/unit/src/org/netbeans/modules/jackpot30/ide/usages/RemoteUsagesTest.java Sat Aug 25 08:06:43 2012 +0200 @@ -44,6 +44,7 @@ import java.util.ArrayList; import java.util.EnumSet; import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; import javax.lang.model.element.TypeElement; import org.netbeans.api.java.source.CompilationInfo; import org.netbeans.api.java.source.ElementHandle; @@ -56,7 +57,6 @@ import org.netbeans.modules.refactoring.spi.ui.TreeElement; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; -import org.openide.nodes.Node; /** * @@ -79,7 +79,7 @@ ElementHandle eh = ElementHandle.create(info.getTopLevelElements().get(0).getEnclosedElements().get(0)); List constructed = new ArrayList(); - RemoteUsages.computeOccurrences(data, eh, EnumSet.of(RemoteUsages.SearchOptions.USAGES), null, constructed); + RemoteUsages.computeOccurrences(data, eh, EnumSet.of(RemoteUsages.SearchOptions.USAGES), null, new AtomicBoolean(), constructed); TreeElement n = constructed.get(0); @@ -103,7 +103,7 @@ ElementHandle eh = ElementHandle.create(runnable.getEnclosedElements().get(0)); List constructed = new ArrayList(); - RemoteUsages.computeOccurrences(data, eh, EnumSet.of(RemoteUsages.SearchOptions.SUB), null, constructed); + RemoteUsages.computeOccurrences(data, eh, EnumSet.of(RemoteUsages.SearchOptions.SUB), null, new AtomicBoolean(), constructed); assertEquals(1, constructed.size()); @@ -129,7 +129,7 @@ ElementHandle eh = ElementHandle.create(runnable); List constructed = new ArrayList(); - RemoteUsages.computeOccurrences(data, eh, EnumSet.of(RemoteUsages.SearchOptions.SUB), null, constructed); + RemoteUsages.computeOccurrences(data, eh, EnumSet.of(RemoteUsages.SearchOptions.SUB), null, new AtomicBoolean(), constructed); assertEquals(1, constructed.size());