mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
IJPL-156230 ui: Introduce ActionButtonUtil
A set of util methods that help to travers the UI tree and find `ActionButton` component GitOrigin-RevId: a33a87f7f17c4cbe10423a9a6382787399f1f80b
This commit is contained in:
committed by
intellij-monorepo-bot
parent
28aa440bce
commit
7c012ef721
@@ -11987,6 +11987,12 @@ pf:com.intellij.openapi.actionSystem.impl.ActionButton$AccessibleActionButton
|
||||
- getAccessibleName():java.lang.String
|
||||
- getAccessibleRole():javax.accessibility.AccessibleRole
|
||||
- getAccessibleStateSet():javax.accessibility.AccessibleStateSet
|
||||
f:com.intellij.openapi.actionSystem.impl.ActionButtonUtil
|
||||
- sf:INSTANCE:com.intellij.openapi.actionSystem.impl.ActionButtonUtil
|
||||
- sf:findActionButton(javax.swing.JComponent,kotlin.jvm.functions.Function1):com.intellij.openapi.actionSystem.impl.ActionButton
|
||||
- sf:findActionButtonById(javax.swing.JComponent,java.lang.String):com.intellij.openapi.actionSystem.impl.ActionButton
|
||||
- sf:findToolbarActionButton(com.intellij.openapi.actionSystem.ActionToolbar,kotlin.jvm.functions.Function1):com.intellij.openapi.actionSystem.impl.ActionButton
|
||||
- sf:findToolbarActionButtonById(com.intellij.openapi.actionSystem.ActionToolbar,java.lang.String):com.intellij.openapi.actionSystem.impl.ActionButton
|
||||
c:com.intellij.openapi.actionSystem.impl.ActionButtonWithText
|
||||
- com.intellij.openapi.actionSystem.impl.ActionButton
|
||||
- sf:SHORTCUT_SHOULD_SHOWN:com.intellij.openapi.util.Key
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.intellij.openapi.actionSystem.impl
|
||||
|
||||
import com.intellij.openapi.actionSystem.ActionManager
|
||||
import com.intellij.openapi.actionSystem.ActionToolbar
|
||||
import com.intellij.util.ui.UIUtil
|
||||
import javax.swing.JComponent
|
||||
|
||||
object ActionButtonUtil {
|
||||
@JvmStatic
|
||||
fun findActionButton(component: JComponent,
|
||||
condition: (ActionButton) -> Boolean): ActionButton? {
|
||||
return UIUtil.uiTraverser(component)
|
||||
.filter(ActionButton::class.java)
|
||||
.filter { condition(it) }
|
||||
.first()
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun findToolbarActionButton(toolbar: ActionToolbar, condition: (ActionButton) -> Boolean): ActionButton? {
|
||||
return findActionButton(toolbar.component, condition)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun findActionButtonById(component: JComponent, actionId: String): ActionButton? {
|
||||
return findActionButton(component) { button ->
|
||||
ActionManager.getInstance().getId(button.action) == actionId
|
||||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun findToolbarActionButtonById(toolbar: ActionToolbar, actionId: String): ActionButton? {
|
||||
return findActionButtonById(toolbar.component, actionId)
|
||||
}
|
||||
}
|
||||
@@ -9,12 +9,12 @@ import com.intellij.diff.editor.DiffRequestProcessorEditorCustomizer
|
||||
import com.intellij.diff.util.DiffUserDataKeysEx
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.actionSystem.ActionToolbar
|
||||
import com.intellij.openapi.actionSystem.impl.ActionButtonUtil
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.fileEditor.FileEditor
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.openapi.vcs.VcsBundle
|
||||
import com.intellij.openapi.vcs.changes.ui.ActionToolbarGotItTooltip
|
||||
import com.intellij.openapi.vcs.changes.ui.findToolbarActionButton
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.util.ui.update.DisposableUpdate
|
||||
import com.intellij.util.ui.update.MergingUpdateQueue
|
||||
@@ -53,7 +53,7 @@ private class ShowDiffInEditorTabTooltipHolder(disposable: Disposable,
|
||||
|
||||
private fun showGotItTooltip() {
|
||||
val diffSettingsButton: (ActionToolbar) -> JComponent? = { toolbar ->
|
||||
findToolbarActionButton(toolbar) { action -> action is SetEditorSettingsActionGroup || action is SetEditorSettingsAction }
|
||||
ActionButtonUtil.findToolbarActionButton(toolbar) { b -> b.action is SetEditorSettingsActionGroup || b.action is SetEditorSettingsAction }
|
||||
}
|
||||
notificationQueue.queue(DisposableUpdate.createDisposable(this, TOOLTIP_ID) {
|
||||
ActionToolbarGotItTooltip(TOOLTIP_ID, VcsBundle.message("show.diff.in.editor.tab.got.it.tooltip"),
|
||||
|
||||
@@ -5,12 +5,9 @@ import com.intellij.internal.statistic.collectors.fus.ui.GotItUsageCollector
|
||||
import com.intellij.internal.statistic.collectors.fus.ui.GotItUsageCollectorGroup
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.actionSystem.ActionToolbar
|
||||
import com.intellij.openapi.actionSystem.AnAction
|
||||
import com.intellij.openapi.actionSystem.impl.ActionButton
|
||||
import com.intellij.openapi.ui.popup.Balloon
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.ui.GotItTooltip
|
||||
import com.intellij.util.ui.UIUtil
|
||||
import com.intellij.util.ui.update.Activatable
|
||||
import com.intellij.util.ui.update.UiNotifyConnector
|
||||
import org.jetbrains.annotations.Nls
|
||||
@@ -52,10 +49,3 @@ internal class ActionToolbarGotItTooltip(@NonNls private val id: String,
|
||||
if (dispose) Disposer.dispose(tooltipDisposable)
|
||||
}
|
||||
}
|
||||
|
||||
internal fun findToolbarActionButton(toolbar: ActionToolbar, condition: (AnAction) -> Boolean): JComponent? {
|
||||
return UIUtil.uiTraverser(toolbar.component)
|
||||
.filter(ActionButton::class.java)
|
||||
.filter { condition(it.action) }
|
||||
.first()
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import com.intellij.openapi.actionSystem.ActionGroup
|
||||
import com.intellij.openapi.actionSystem.ActionManager
|
||||
import com.intellij.openapi.actionSystem.DataContext
|
||||
import com.intellij.openapi.actionSystem.DataProvider
|
||||
import com.intellij.openapi.actionSystem.impl.ActionButton
|
||||
import com.intellij.openapi.actionSystem.impl.ActionButtonUtil
|
||||
import com.intellij.openapi.editor.colors.EditorColorsListener
|
||||
import com.intellij.openapi.editor.colors.EditorColorsScheme
|
||||
import com.intellij.openapi.project.Project
|
||||
@@ -29,7 +29,6 @@ import com.intellij.util.ui.JBUI
|
||||
import com.intellij.util.ui.JBUI.Borders.empty
|
||||
import com.intellij.util.ui.JBUI.Borders.emptyLeft
|
||||
import com.intellij.util.ui.JBUI.scale
|
||||
import com.intellij.util.ui.UIUtil.uiTraverser
|
||||
import com.intellij.util.ui.components.BorderLayoutPanel
|
||||
import com.intellij.vcsUtil.VcsUIUtil
|
||||
import org.jetbrains.annotations.Nls
|
||||
@@ -192,7 +191,6 @@ abstract class NonModalCommitPanel(
|
||||
}
|
||||
}
|
||||
|
||||
private fun CommitActionsPanel.getShowCommitOptionsButton(): JComponent? =
|
||||
uiTraverser(this)
|
||||
.filter(ActionButton::class.java)
|
||||
.find { it.action is ShowCommitOptionsAction }
|
||||
private fun CommitActionsPanel.getShowCommitOptionsButton(): JComponent? = ActionButtonUtil.findActionButton(this) {
|
||||
it.action is ShowCommitOptionsAction
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ import com.intellij.ide.util.treeView.AbstractTreeNode;
|
||||
import com.intellij.ide.util.treeView.NodeRenderer;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.actionSystem.impl.ActionButton;
|
||||
import com.intellij.openapi.actionSystem.impl.ActionButtonUtil;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.ReadAction;
|
||||
import com.intellij.openapi.client.ClientSystemInfo;
|
||||
@@ -182,7 +182,7 @@ public class CoverageView extends BorderLayoutPanel implements DataProvider, Dis
|
||||
final String message = CoverageBundle.message("coverage.filter.gotit", myViewExtension.getElementsName());
|
||||
final GotItTooltip gotIt = new GotItTooltip("coverage.view.elements.filter", message, this);
|
||||
if (gotIt.canShow()) {
|
||||
final JComponent filterAction = findToolbarActionButtonWithIcon(actionToolbar, FILTER_ICON);
|
||||
final JComponent filterAction = ActionButtonUtil.findToolbarActionButton(actionToolbar, button -> button.getIcon() == FILTER_ICON);
|
||||
if (filterAction != null) {
|
||||
gotIt.show(filterAction, GotItTooltip.BOTTOM_MIDDLE);
|
||||
}
|
||||
@@ -653,11 +653,4 @@ public class CoverageView extends BorderLayoutPanel implements DataProvider, Dis
|
||||
}).submit(AppExecutorUtil.getAppExecutorService());
|
||||
}
|
||||
}
|
||||
|
||||
private static JComponent findToolbarActionButtonWithIcon(ActionToolbar toolbar, Icon icon) {
|
||||
return UIUtil.uiTraverser(toolbar.getComponent())
|
||||
.filter(ActionButton.class)
|
||||
.filter(button -> button.getIcon() == icon)
|
||||
.first();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user