WEB-68184 Own "ToolbarProvider" and suppressor for OpenInBrowserAction

Merge-request: IJ-MR-174190
Merged-by: Arsenii Iusufov <arsenii.iusufov@jetbrains.com>

GitOrigin-RevId: 1e16ff196c9fd0efe43d4041a9a736e5570a9e3a
This commit is contained in:
Arsenii Iusufov
2025-09-01 22:54:33 +00:00
committed by intellij-monorepo-bot
parent 3fafaf4bf6
commit d627bca71c
7 changed files with 49 additions and 37 deletions
+7 -5
View File
@@ -183,6 +183,13 @@ com.intellij.ide.actions.SettingsEntryPointAction$IconCustomizer
- sf:EP_NAME:com.intellij.openapi.extensions.ExtensionPointName
- a:getCustomIcon(com.intellij.ui.BadgeIconSupplier):javax.swing.Icon
- getSecondIcon():javax.swing.Icon
c:com.intellij.ide.browsers.actions.OpenInBrowserBaseGroupAction$OpenInBrowserFloatingToolbarProvider
- com.intellij.openapi.editor.toolbar.floating.AbstractFloatingToolbarProvider
- <init>():V
- isApplicable(com.intellij.openapi.actionSystem.DataContext):Z
com.intellij.ide.browsers.actions.OpenInBrowserBaseGroupAction$OpenInBrowserFloatingToolbarSuppressor
- sf:EP_NAME:com.intellij.openapi.extensions.ExtensionPointName
- a:isSuppressed(com.intellij.openapi.editor.toolbar.floating.FloatingToolbarProvider,com.intellij.openapi.actionSystem.DataContext):Z
com.intellij.ide.dnd.TransferableWrapper
- com.intellij.ide.dnd.FileFlavorProvider
- a:getPsiElements():com.intellij.psi.PsiElement[]
@@ -588,11 +595,6 @@ com.intellij.openapi.editor.impl.softwrap.mapping.SoftWrapApplianceManager$Visib
com.intellij.openapi.editor.markup.LineMarkerRendererEx
- com.intellij.openapi.editor.markup.LineMarkerRenderer
- a:getPosition():com.intellij.openapi.editor.markup.LineMarkerRendererEx$Position
com.intellij.openapi.editor.toolbar.floating.EditorFloatingToolbarSuppressor
- sf:Companion:com.intellij.openapi.editor.toolbar.floating.EditorFloatingToolbarSuppressor$Companion
- a:isSuppressed(com.intellij.openapi.editor.toolbar.floating.FloatingToolbarProvider,com.intellij.openapi.actionSystem.DataContext):Z
f:com.intellij.openapi.editor.toolbar.floating.EditorFloatingToolbarSuppressor$Companion
- f:getEP_NAME():com.intellij.openapi.extensions.ExtensionPointName
com.intellij.openapi.editor.toolbar.floating.FloatingToolbarComponent
- a:getAutoHideable():Z
- a:getBackgroundAlpha():F
@@ -11,6 +11,9 @@ import com.intellij.lang.Language;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.diff.impl.DiffUtil;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.toolbar.floating.AbstractFloatingToolbarProvider;
import com.intellij.openapi.editor.toolbar.floating.FloatingToolbarProvider;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.fileTypes.LanguageFileType;
import com.intellij.openapi.fileTypes.PlainTextLanguage;
import com.intellij.openapi.project.DumbAware;
@@ -22,6 +25,7 @@ import com.intellij.psi.util.CachedValue;
import com.intellij.psi.util.CachedValueProvider;
import com.intellij.ui.jcef.JBCefApp;
import com.intellij.util.CachedValueImpl;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -99,6 +103,34 @@ public abstract class OpenInBrowserBaseGroupAction extends ActionGroup implement
}
}
public static class OpenInBrowserFloatingToolbarProvider extends AbstractFloatingToolbarProvider {
private static final String ACTION_GROUP = "OpenInBrowserEditorContextBarGroup";
public OpenInBrowserFloatingToolbarProvider() {
super(ACTION_GROUP);
}
@Override
public boolean isApplicable(@NotNull DataContext dataContext) {
boolean suppressed = ContainerUtil.exists(
OpenInBrowserFloatingToolbarSuppressor.EP_NAME.getExtensionList(),
suppressor -> suppressor.isSuppressed(this, dataContext)
);
return !suppressed && super.isApplicable(dataContext);
}
}
public interface OpenInBrowserFloatingToolbarSuppressor {
/**
* Determines if the floating toolbar should be suppressed.
*/
boolean isSuppressed(FloatingToolbarProvider provider, DataContext dataContext);
ExtensionPointName<OpenInBrowserFloatingToolbarSuppressor> EP_NAME =
ExtensionPointName.create("com.intellij.openInBrowserFloatingToolbarSuppressor");
}
public static class OpenInBrowserEditorContextBarGroupAction extends OpenInBrowserBaseGroupAction {
public OpenInBrowserEditorContextBarGroupAction() {
super(false);
@@ -1,24 +0,0 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.openapi.editor.toolbar.floating
import com.intellij.openapi.actionSystem.DataContext
import com.intellij.openapi.extensions.ExtensionPointName
/**
* Extension point to suppress the display of editor floating toolbars.
* If any extension returns true from [isSuppressed], the toolbar will not be shown.
*/
interface EditorFloatingToolbarSuppressor {
/**
* Determines if the floating toolbar should be suppressed.
*/
fun isSuppressed(
provider: FloatingToolbarProvider,
dataContext: DataContext,
): Boolean
companion object {
val EP_NAME: ExtensionPointName<EditorFloatingToolbarSuppressor> =
ExtensionPointName.create("com.intellij.editorFloatingToolbarProviderSuppressor")
}
}
@@ -37,10 +37,7 @@ interface FloatingToolbarProvider {
val actionGroup: ActionGroup
fun isApplicable(dataContext: DataContext): Boolean {
val suppressors = EditorFloatingToolbarSuppressor.EP_NAME.extensionList
return !suppressors.any { it.isSuppressed(this, dataContext) }
}
fun isApplicable(dataContext: DataContext): Boolean = true
fun register(dataContext: DataContext, component: FloatingToolbarComponent, parentDisposable: Disposable) {}
@@ -61,4 +58,4 @@ interface FloatingToolbarProvider {
return EP_NAME.createExtensionDisposable(provider, parentDisposable)
}
}
}
}
@@ -170,8 +170,8 @@
interface="com.intellij.openapi.editor.toolbar.floating.FloatingToolbarProvider"
dynamic="true"/>
<extensionPoint name="editorFloatingToolbarProviderSuppressor"
interface="com.intellij.openapi.editor.toolbar.floating.EditorFloatingToolbarSuppressor"
<extensionPoint name="openInBrowserFloatingToolbarSuppressor"
interface="com.intellij.ide.browsers.actions.OpenInBrowserBaseGroupAction$OpenInBrowserFloatingToolbarSuppressor"
dynamic="true"/>
<extensionPoint name="actionPromoter" interface="com.intellij.openapi.actionSystem.ActionPromoter" dynamic="true"/>
@@ -912,6 +912,10 @@
implementation="com.intellij.openapi.editor.toolbar.floating.DefaultFloatingToolbarProvider"
id="DefaultFloatingToolbarProvider"/>
<editorFloatingToolbarProvider
implementation="com.intellij.ide.browsers.actions.OpenInBrowserBaseGroupAction$OpenInBrowserFloatingToolbarProvider"
id="OpenInBrowserFloatingToolbarProvider"/>
<bundledKeymap file="$default.xml"/>
<bundledKeymap file="Mac OS X 10.5+.xml"/>
<bundledKeymap file="Mac OS X.xml"/>
@@ -1862,9 +1862,10 @@
<add-to-group group-id="RevealGroup" anchor="last"/>
<override-text place="RevealInPopup"/>
</group>
<group id="OpenInBrowserEditorContextBarGroup" />
<group id="OpenInBrowserEditorContextBarGroupAction"
class="com.intellij.ide.browsers.actions.OpenInBrowserBaseGroupAction$OpenInBrowserEditorContextBarGroupAction">
<add-to-group group-id="EditorContextBarMenu" anchor="last"/>
<add-to-group group-id="OpenInBrowserEditorContextBarGroup" anchor="last"/>
</group>
</actions>
<applicationListeners>