mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 11:50:54 +07:00
[Rider] Backport IJ-CR-149703 to 243
(cherry picked from commit 99b365b55ca8d27529487d7ae285df092d13d943) IJ-CR-149789 GitOrigin-RevId: 42d5a1d175320934b9c4c9a27a1bb0dc1ff33bb3
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3e03cbdd2b
commit
57f92b38c7
@@ -0,0 +1,15 @@
|
||||
// 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.ide.actions.searcheverywhere;
|
||||
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import kotlin.time.Duration;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
|
||||
@ApiStatus.Internal
|
||||
public interface PreviewListener {
|
||||
@ApiStatus.Internal
|
||||
void onPreviewEditorCreated(SearchEverywhereUI searchEverywhereUI, Editor editor);
|
||||
@ApiStatus.Internal
|
||||
void onPreviewDataReady(Project project, Object data, long duration);
|
||||
}
|
||||
@@ -94,6 +94,9 @@ import com.intellij.util.text.MatcherHolder;
|
||||
import com.intellij.util.ui.*;
|
||||
import kotlin.Unit;
|
||||
import kotlin.jvm.functions.Function1;
|
||||
import kotlin.time.Duration;
|
||||
import kotlin.time.DurationKt;
|
||||
import kotlin.time.DurationUnit;
|
||||
import one.util.streamex.StreamEx;
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
@@ -102,6 +105,7 @@ import javax.swing.*;
|
||||
import javax.swing.event.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.time.Instant;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
@@ -126,10 +130,12 @@ import static com.intellij.ide.actions.searcheverywhere.statistics.SearchEverywh
|
||||
public final class SearchEverywhereUI extends BigPopupUI implements UiDataProvider, QuickSearchComponent {
|
||||
|
||||
public static final Topic<SearchListener> SEARCH_EVENTS = Topic.create("Search events", SearchListener.class);
|
||||
@ApiStatus.Internal
|
||||
public static final Topic<PreviewListener> PREVIEW_EVENTS = Topic.create("Search everywhere preview events", PreviewListener.class);
|
||||
|
||||
public static final String SEARCH_EVERYWHERE_SEARCH_FILED_KEY = "search-everywhere-textfield"; //only for testing purposes
|
||||
|
||||
static final DataKey<SearchEverywhereFoundElementInfo> SELECTED_ITEM_INFO = DataKey.create("selectedItemInfo");
|
||||
@ApiStatus.Internal public static final DataKey<SearchEverywhereFoundElementInfo> SELECTED_ITEM_INFO = DataKey.create("selectedItemInfo");
|
||||
|
||||
public static final int SINGLE_CONTRIBUTOR_ELEMENTS_LIMIT = 30;
|
||||
public static final int MULTIPLE_CONTRIBUTORS_ELEMENTS_LIMIT = 15;
|
||||
@@ -155,6 +161,7 @@ public final class SearchEverywhereUI extends BigPopupUI implements UiDataProvid
|
||||
private JComponent myExtendedInfoPanel;
|
||||
private @Nullable ExtendedInfoComponent myExtendedInfoComponent;
|
||||
private final SearchListener topicPublisher = ApplicationManager.getApplication().getMessageBus().syncPublisher(SEARCH_EVENTS);
|
||||
private final PreviewListener myPreviewTopicPublisher = ApplicationManager.getApplication().getMessageBus().syncPublisher(PREVIEW_EVENTS);
|
||||
|
||||
private UsagePreviewPanel myUsagePreviewPanel;
|
||||
private final List<Disposable> myUsagePreviewDisposableList = new ArrayList<>();
|
||||
@@ -671,6 +678,8 @@ public final class SearchEverywhereUI extends BigPopupUI implements UiDataProvid
|
||||
onFocusLost(e);
|
||||
}
|
||||
});
|
||||
|
||||
myPreviewTopicPublisher.onPreviewEditorCreated(SearchEverywhereUI.this, editor);
|
||||
}
|
||||
};
|
||||
Disposer.register(this, myUsagePreviewPanel);
|
||||
@@ -1033,9 +1042,13 @@ public final class SearchEverywhereUI extends BigPopupUI implements UiDataProvid
|
||||
new Task.Backgroundable(myProject, IdeBundle.message("search.everywhere.preview.showing"), true) {
|
||||
@Override
|
||||
public void run(@NotNull ProgressIndicator indicator) {
|
||||
final var start = System.nanoTime();
|
||||
UsageInfo usageInfo = ReadAction.compute(() -> {
|
||||
return findFirstChild();
|
||||
});
|
||||
final var elapsed = System.nanoTime() - start;
|
||||
|
||||
myPreviewTopicPublisher.onPreviewDataReady(myProject, selectedValue, elapsed / 1_000_000);
|
||||
|
||||
List<UsageInfo2UsageAdapter> usages = new ArrayList<>();
|
||||
if (usageInfo != null) {
|
||||
|
||||
Reference in New Issue
Block a user