Move fallback icon logic from ActionToolbarImpl to ActionButton itself

It will unify buttons behaviour and allow to create the same buttons from createCustomComponent

The base implementation of getDataContext is actually do the same as the removed one

GitOrigin-RevId: 1827d0c8fa3bb393cfaa95c5c910d47422e556d1
This commit is contained in:
Alexey Merkulov
2023-02-05 16:32:38 +00:00
committed by intellij-monorepo-bot
parent eb5233512d
commit f9a55966c7
2 changed files with 17 additions and 19 deletions
@@ -25,7 +25,10 @@ import com.intellij.ui.popup.PopupState;
import com.intellij.ui.popup.WizardPopup;
import com.intellij.ui.popup.util.PopupImplUtil;
import com.intellij.util.ReflectionUtil;
import com.intellij.util.ui.*;
import com.intellij.util.ui.JBDimension;
import com.intellij.util.ui.JBInsets;
import com.intellij.util.ui.StartupUiUtil;
import com.intellij.util.ui.UIUtil;
import com.intellij.util.ui.accessibility.AccessibleContextUtil;
import com.intellij.util.ui.accessibility.ScreenReader;
import org.jetbrains.annotations.NonNls;
@@ -388,7 +391,11 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A
@NotNull
protected Icon getFallbackIcon(boolean enabled) {
return EmptyIcon.ICON_18;
Presentation p = getAction().getTemplatePresentation();
Icon icon = Objects.requireNonNullElse(p.getIcon(), AllIcons.Toolbar.Unknown);
if (enabled) return icon;
if (p.getDisabledIcon() != null) return p.getDisabledIcon();
return IconLoader.getDisabledIcon(icon);
}
public void updateIcon() {
@@ -17,7 +17,10 @@ import com.intellij.openapi.diagnostic.ControlFlowException;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.ui.popup.*;
import com.intellij.openapi.ui.popup.util.PopupUtil;
import com.intellij.openapi.util.*;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.NlsContexts;
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.openapi.wm.IdeFocusManager;
import com.intellij.openapi.wm.ToolWindow;
@@ -51,8 +54,10 @@ import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.*;
import java.util.Set;
import java.util.concurrent.CancellationException;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
@@ -552,21 +557,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct
return buttonWithText;
}
ActionButton actionButton = new ActionButton(action, presentation, place, minimumSize) {
@Override
protected DataContext getDataContext() {
return getToolbarDataContext();
}
@Override
protected @NotNull Icon getFallbackIcon(boolean enabled) {
Presentation p = getAction().getTemplatePresentation();
Icon icon = Objects.requireNonNullElse(p.getIcon(), AllIcons.Toolbar.Unknown);
if (enabled) return icon;
if (p.getDisabledIcon() != null) return p.getDisabledIcon();
return IconLoader.getDisabledIcon(icon);
}
};
ActionButton actionButton = new ActionButton(action, presentation, place, minimumSize);
applyToolbarLook(look, presentation, actionButton);
return actionButton;