usage view - reduce usage of com.intellij.openapi.util.Factory

GitOrigin-RevId: d91139cbaf328ed536f4ad9db84aafbcbad64305
This commit is contained in:
Vladimir Krivosheev
2024-07-04 00:49:44 +02:00
committed by intellij-monorepo-bot
parent c7b029752c
commit 5f3b22977c
6 changed files with 17 additions and 15 deletions

View File

@@ -160,7 +160,7 @@ c:com.intellij.usages.impl.UsageViewManagerImpl
- s:getProgressTitle(com.intellij.usages.UsageViewPresentation):java.lang.String
- getSelectedUsageView():com.intellij.usages.UsageView
- searchAndShowUsages(com.intellij.usages.UsageTarget[],com.intellij.openapi.util.Factory,com.intellij.usages.FindUsagesProcessPresentation,com.intellij.usages.UsageViewPresentation,com.intellij.usages.UsageViewManager$UsageViewStateListener):V
- searchAndShowUsages(com.intellij.usages.UsageTarget[],com.intellij.openapi.util.Factory,Z,Z,com.intellij.usages.UsageViewPresentation,com.intellij.usages.UsageViewManager$UsageViewStateListener):com.intellij.usages.UsageView
- searchAndShowUsages(com.intellij.usages.UsageTarget[],java.util.function.Supplier,Z,Z,com.intellij.usages.UsageViewPresentation,com.intellij.usages.UsageViewManager$UsageViewStateListener):com.intellij.usages.UsageView
- showUsages(com.intellij.usages.UsageTarget[],com.intellij.usages.Usage[],com.intellij.usages.UsageViewPresentation):com.intellij.usages.UsageView
- showUsages(com.intellij.usages.UsageTarget[],com.intellij.usages.Usage[],com.intellij.usages.UsageViewPresentation,com.intellij.openapi.util.Factory):com.intellij.usages.UsageView
c:com.intellij.usages.impl.rules.FileGroupingRule

View File

@@ -1,4 +1,4 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.usages.impl;
import com.intellij.diagnostic.PerformanceWatcher;
@@ -23,7 +23,6 @@ import com.intellij.openapi.progress.util.TooManyUsagesStatus;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.MessageType;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.Factory;
import com.intellij.openapi.util.NlsSafe;
import com.intellij.openapi.util.Segment;
import com.intellij.openapi.util.text.HtmlBuilder;
@@ -57,6 +56,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
import java.util.function.Supplier;
final class SearchForUsagesRunnable implements Runnable {
@NonNls private static final String FIND_OPTIONS_HREF_TARGET = "FindOptions";
@@ -70,7 +70,7 @@ final class SearchForUsagesRunnable implements Runnable {
private final AtomicReference<UsageViewEx> myUsageViewRef;
private final UsageViewPresentation myPresentation;
private final UsageTarget[] mySearchFor;
private final Factory<? extends UsageSearcher> mySearcherFactory;
private final Supplier<? extends UsageSearcher> mySearcherFactory;
private final FindUsagesProcessPresentation myProcessPresentation;
@NotNull private final SearchScope mySearchScopeToWarnOfFallingOutOf;
private final UsageViewManager.UsageViewStateListener myListener;
@@ -84,7 +84,7 @@ final class SearchForUsagesRunnable implements Runnable {
@NotNull AtomicReference<UsageViewEx> usageViewRef,
@NotNull UsageViewPresentation presentation,
UsageTarget @NotNull [] searchFor,
@NotNull Factory<? extends UsageSearcher> searcherFactory,
@NotNull Supplier<? extends UsageSearcher> searcherFactory,
@NotNull FindUsagesProcessPresentation processPresentation,
@NotNull SearchScope searchScopeToWarnOfFallingOutOf,
@Nullable UsageViewManager.UsageViewStateListener listener,
@@ -299,7 +299,7 @@ final class SearchForUsagesRunnable implements Runnable {
return null;
}
UsageViewEx usageView = myUsageViewManager.createUsageView(mySearchFor, Usage.EMPTY_ARRAY, myPresentation, mySearcherFactory);
UsageViewEx usageView = myUsageViewManager.createUsageView(mySearchFor, Usage.EMPTY_ARRAY, myPresentation, mySearcherFactory::get);
if (myUsageViewRef.compareAndSet(null, usageView)) {
// associate progress only if created successfully, otherwise Dispose will cancel the actual progress, see IDEA-195542
PsiElement element = getPsiElement(mySearchFor);
@@ -363,7 +363,7 @@ final class SearchForUsagesRunnable implements Runnable {
}
TooManyUsagesStatus.createFor(indicator);
UsageSearcher usageSearcher = mySearcherFactory.create();
UsageSearcher usageSearcher = mySearcherFactory.get();
long startSearchStamp = System.currentTimeMillis();
GlobalSearchScope everythingScope = GlobalSearchScope.everythingScope(myProject);

View File

@@ -103,7 +103,7 @@ public class UsageViewImpl implements UsageViewEx {
private final UsageTarget[] myTargets;
private UsageGroupingRule[] myGroupingRules;
private final UsageFilteringRuleState myFilteringRulesState = UsageFilteringRuleStateService.createFilteringRuleState();
private final Factory<? extends UsageSearcher> myUsageSearcherFactory;
private final Supplier<? extends UsageSearcher> myUsageSearcherFactory;
private final @NotNull Project myProject;
private volatile boolean mySearchInProgress = true;
@@ -197,7 +197,7 @@ public class UsageViewImpl implements UsageViewEx {
@NotNull CoroutineScope coroutineScope,
@NotNull UsageViewPresentation presentation,
UsageTarget @NotNull [] targets,
@Nullable Factory<? extends UsageSearcher> usageSearcherFactory) {
@Nullable Supplier<? extends UsageSearcher> usageSearcherFactory) {
this.coroutineScope = coroutineScope;
// fire events every 50 ms, not more often to batch requests
myUniqueIdentifier = COUNTER.getAndIncrement();
@@ -1778,7 +1778,7 @@ public class UsageViewImpl implements UsageViewEx {
public boolean canPerformReRun() {
if (myRerunAction != null && myRerunAction.isEnabled()) return allTargetsAreValid();
try {
return myUsageSearcherFactory != null && allTargetsAreValid() && myUsageSearcherFactory.create() != null;
return myUsageSearcherFactory != null && allTargetsAreValid() && myUsageSearcherFactory.get() != null;
}
catch (PsiInvalidElementAccessException e) {
return false;

View File

@@ -140,7 +140,7 @@ public class UsageViewManagerImpl extends UsageViewManager {
@Override
public @Nullable UsageView searchAndShowUsages(UsageTarget @NotNull [] searchFor,
@NotNull Factory<? extends UsageSearcher> searcherFactory,
@NotNull Supplier<? extends UsageSearcher> searcherFactory,
boolean showPanelIfOnlyOneUsage,
boolean showNotFoundMessage,
@NotNull UsageViewPresentation presentation,
@@ -153,7 +153,7 @@ public class UsageViewManagerImpl extends UsageViewManager {
}
private UsageView doSearchAndShow(UsageTarget @NotNull [] searchFor,
@NotNull Factory<? extends UsageSearcher> searcherFactory,
@NotNull Supplier<? extends UsageSearcher> searcherFactory,
@NotNull UsageViewPresentation presentation,
@NotNull FindUsagesProcessPresentation processPresentation,
@Nullable UsageViewStateListener listener) {

View File

@@ -349,7 +349,7 @@ a:com.intellij.usages.UsageViewManager
- a:getSelectedUsageView():com.intellij.usages.UsageView
- s:isSelfUsage(com.intellij.usages.Usage,com.intellij.usages.UsageTarget[]):Z
- a:searchAndShowUsages(com.intellij.usages.UsageTarget[],com.intellij.openapi.util.Factory,com.intellij.usages.FindUsagesProcessPresentation,com.intellij.usages.UsageViewPresentation,com.intellij.usages.UsageViewManager$UsageViewStateListener):V
- a:searchAndShowUsages(com.intellij.usages.UsageTarget[],com.intellij.openapi.util.Factory,Z,Z,com.intellij.usages.UsageViewPresentation,com.intellij.usages.UsageViewManager$UsageViewStateListener):com.intellij.usages.UsageView
- a:searchAndShowUsages(com.intellij.usages.UsageTarget[],java.util.function.Supplier,Z,Z,com.intellij.usages.UsageViewPresentation,com.intellij.usages.UsageViewManager$UsageViewStateListener):com.intellij.usages.UsageView
- a:showUsages(com.intellij.usages.UsageTarget[],com.intellij.usages.Usage[],com.intellij.usages.UsageViewPresentation):com.intellij.usages.UsageView
- a:showUsages(com.intellij.usages.UsageTarget[],com.intellij.usages.Usage[],com.intellij.usages.UsageViewPresentation,com.intellij.openapi.util.Factory):com.intellij.usages.UsageView
com.intellij.usages.UsageViewManager$UsageViewStateListener

View File

@@ -1,4 +1,4 @@
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.usages;
@@ -10,6 +10,8 @@ import com.intellij.usages.rules.PsiElementUsage;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.function.Supplier;
public abstract class UsageViewManager {
public static UsageViewManager getInstance (Project project) {
return project.getService(UsageViewManager.class);
@@ -31,7 +33,7 @@ public abstract class UsageViewManager {
@Nullable ("returns null in case of no usages found or usage view not shown for one usage")
public abstract UsageView searchAndShowUsages(UsageTarget @NotNull [] searchFor,
@NotNull Factory<? extends UsageSearcher> searcherFactory,
@NotNull Supplier<? extends UsageSearcher> searcherFactory,
boolean showPanelIfOnlyOneUsage,
boolean showNotFoundMessage,
@NotNull UsageViewPresentation presentation,