From 8b891ddee097136227274d77565c0888ce0d75de Mon Sep 17 00:00:00 2001 From: Konstantin Ulitin Date: Tue, 6 Jun 2017 15:19:29 +0300 Subject: [PATCH] Breadcrumbs: move method to have it available in tests --- .../ui/breadcrumbs/BreadcrumbsUtil.java | 37 +++++++++++++++++++ .../impl/CodeInsightTestFixtureImpl.java | 5 ++- .../breadcrumbs/BreadcrumbsXmlWrapper.java | 23 ++---------- 3 files changed, 44 insertions(+), 21 deletions(-) create mode 100644 platform/editor-ui-api/src/com/intellij/ui/breadcrumbs/BreadcrumbsUtil.java diff --git a/platform/editor-ui-api/src/com/intellij/ui/breadcrumbs/BreadcrumbsUtil.java b/platform/editor-ui-api/src/com/intellij/ui/breadcrumbs/BreadcrumbsUtil.java new file mode 100644 index 000000000000..3393e3f517e8 --- /dev/null +++ b/platform/editor-ui-api/src/com/intellij/ui/breadcrumbs/BreadcrumbsUtil.java @@ -0,0 +1,37 @@ +/* + * Copyright 2000-2017 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.ui.breadcrumbs; + +import com.intellij.lang.Language; +import org.jetbrains.annotations.NotNull; + +public class BreadcrumbsUtil { + + public static BreadcrumbsProvider getInfoProvider(@NotNull Language language) { + BreadcrumbsProvider[] providers = BreadcrumbsProvider.EP_NAME.getExtensions(); + while (language != null) { + for (BreadcrumbsProvider provider : providers) { + for (Language supported : provider.getLanguages()) { + if (language.is(supported)) { + return provider; + } + } + } + language = language.getBaseLanguage(); + } + return null; + } +} diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java index dd3fd78053ae..cda617917d11 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java @@ -117,6 +117,7 @@ import com.intellij.testFramework.*; import com.intellij.testFramework.fixtures.*; import com.intellij.testFramework.utils.inlays.InlayHintsChecker; import com.intellij.ui.breadcrumbs.BreadcrumbsProvider; +import com.intellij.ui.breadcrumbs.BreadcrumbsUtil; import com.intellij.ui.components.breadcrumbs.Crumb; import com.intellij.usageView.UsageInfo; import com.intellij.util.*; @@ -1791,8 +1792,8 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig } final Language language = element.getContainingFile().getLanguage(); - final BreadcrumbsProvider provider = ContainerUtil.find(BreadcrumbsProvider.EP_NAME.getExtensions(), - p -> Arrays.asList(p.getLanguages()).contains(language)); + final BreadcrumbsProvider provider = BreadcrumbsUtil.getInfoProvider(language); + if (provider == null) { return Collections.emptyList(); } diff --git a/xml/impl/src/com/intellij/xml/breadcrumbs/BreadcrumbsXmlWrapper.java b/xml/impl/src/com/intellij/xml/breadcrumbs/BreadcrumbsXmlWrapper.java index 5f0d72f7af76..6006f1555319 100644 --- a/xml/impl/src/com/intellij/xml/breadcrumbs/BreadcrumbsXmlWrapper.java +++ b/xml/impl/src/com/intellij/xml/breadcrumbs/BreadcrumbsXmlWrapper.java @@ -48,6 +48,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.ui.Gray; import com.intellij.ui.breadcrumbs.BreadcrumbsProvider; +import com.intellij.ui.breadcrumbs.BreadcrumbsUtil; import com.intellij.ui.components.breadcrumbs.Crumb; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.ui.MouseEventAdapter; @@ -241,7 +242,7 @@ public class BreadcrumbsXmlWrapper extends JComponent implements Disposable { private static BreadcrumbsProvider findProviderForElement(@NotNull PsiElement element, BreadcrumbsProvider defaultProvider) { Language language = element.getLanguage(); if (!EditorSettingsExternalizable.getInstance().isBreadcrumbsShownFor(language.getID())) return defaultProvider; - BreadcrumbsProvider provider = getInfoProvider(language); + BreadcrumbsProvider provider = BreadcrumbsUtil.getInfoProvider(language); return provider == null ? defaultProvider : provider; } @@ -418,11 +419,11 @@ public class BreadcrumbsXmlWrapper extends JComponent implements Disposable { Language baseLang = viewProvider.getBaseLanguage(); if (checkSettings && !settings.isBreadcrumbsShownFor(baseLang.getID())) return null; - BreadcrumbsProvider provider = getInfoProvider(baseLang); + BreadcrumbsProvider provider = BreadcrumbsUtil.getInfoProvider(baseLang); if (provider == null) { for (Language language : viewProvider.getLanguages()) { if (!checkSettings || settings.isBreadcrumbsShownFor(language.getID())) { - provider = getInfoProvider(language); + provider = BreadcrumbsUtil.getInfoProvider(language); if (provider != null) break; } } @@ -491,22 +492,6 @@ public class BreadcrumbsXmlWrapper extends JComponent implements Disposable { breadcrumbs.setCrumbs(null); } - @Nullable - private static BreadcrumbsProvider getInfoProvider(@NotNull Language language) { - BreadcrumbsProvider[] providers = BreadcrumbsProvider.EP_NAME.getExtensions(); - while (language != null) { - for (BreadcrumbsProvider provider : providers) { - for (Language supported : provider.getLanguages()) { - if (language.is(supported)) { - return provider; - } - } - } - language = language.getBaseLanguage(); - } - return null; - } - private static class MyUpdate extends Update { private final BreadcrumbsXmlWrapper myBreadcrumbsComponent;