mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-263715 Popup Lists: place mnemonics between icon and text
(cherry picked from commit e442dd73416c37681658cf1e813b647bf1cab635) IJ-CR-7890 GitOrigin-RevId: 4bfc5d55710b3a05288dc352a470bdda40b09be3
This commit is contained in:
committed by
intellij-monorepo-bot
parent
35a75ebe98
commit
2e52716ac8
+10
-6
@@ -765,11 +765,17 @@ public final class ChooseRunConfigurationPopup implements ExecutorProvider {
|
||||
protected ListCellRenderer<?> getListElementRenderer() {
|
||||
return new PopupListElementRenderer<>(this){
|
||||
@Override
|
||||
protected JComponent createIconBar(JList<?> list, Object value, boolean selected) {
|
||||
protected JComponent createIconBar() {
|
||||
JPanel res = new JPanel(new GridBagLayout());
|
||||
res.setOpaque(false);
|
||||
res.setBorder(JBUI.Borders.emptyRight(JBUI.CurrentTheme.ActionsList.elementIconGap()));
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void customizeComponent(JList<?> list, Object value, boolean isSelected) {
|
||||
super.customizeComponent(list, value, isSelected);
|
||||
GridBag gbc = new GridBag()
|
||||
.setDefaultAnchor(GridBagConstraints.CENTER)
|
||||
.setDefaultWeightX(1)
|
||||
@@ -777,12 +783,10 @@ public final class ChooseRunConfigurationPopup implements ExecutorProvider {
|
||||
.setDefaultFill(GridBagConstraints.BOTH);
|
||||
|
||||
if (value instanceof NumericMnemonicItem && ((NumericMnemonicItem)value).digitMnemonicsEnabled()) {
|
||||
res.add(myMnemonicLabel, gbc.next().weightx(0));
|
||||
res.add(Box.createHorizontalStrut(JBUI.CurrentTheme.ActionsList.mnemonicIconGap()), gbc.next());
|
||||
myIconBar.add(myMnemonicLabel, gbc.next().weightx(0));
|
||||
myIconBar.add(Box.createHorizontalStrut(JBUI.CurrentTheme.ActionsList.mnemonicIconGap()), gbc.next());
|
||||
}
|
||||
res.add(myIconLabel, gbc.next());
|
||||
|
||||
return res;
|
||||
myIconBar.add(myIconLabel, gbc.next());
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
+7
@@ -152,16 +152,23 @@ abstract class RunAnythingChooseContextAction(private val containingPanel: JPane
|
||||
private lateinit var myInfoLabel: JLabel
|
||||
|
||||
override fun createItemComponent(): JComponent {
|
||||
myIconLabel = JLabel()
|
||||
myTextLabel = ErrorLabel()
|
||||
myInfoLabel = JLabel()
|
||||
myTextLabel.border = JBUI.Borders.emptyRight(10)
|
||||
|
||||
myIconBar = createIconBar()
|
||||
|
||||
val textPanel = JPanel(BorderLayout())
|
||||
textPanel.add(myTextLabel, BorderLayout.WEST)
|
||||
textPanel.add(myInfoLabel, BorderLayout.CENTER)
|
||||
return layoutComponent(textPanel)
|
||||
}
|
||||
|
||||
override fun createIconBar(): JComponent {
|
||||
return myIconLabel
|
||||
}
|
||||
|
||||
override fun customizeComponent(list: JList<out PopupFactoryImpl.ActionItem>,
|
||||
actionItem: PopupFactoryImpl.ActionItem,
|
||||
isSelected: Boolean) {
|
||||
|
||||
@@ -63,6 +63,7 @@ open class StateActionGroupPopup(@NlsContexts.PopupTitle title: String?,
|
||||
createLabel()
|
||||
panel.add(myTextLabel, BorderLayout.CENTER)
|
||||
myTextLabel.border = JBUI.Borders.emptyTop(1)
|
||||
myIconBar = createIconBar()
|
||||
|
||||
val bt = createButton()
|
||||
rightPane.add(bt, BorderLayout.CENTER)
|
||||
@@ -78,6 +79,15 @@ open class StateActionGroupPopup(@NlsContexts.PopupTitle title: String?,
|
||||
return layoutComponent(panel)
|
||||
}
|
||||
|
||||
override fun createLabel() {
|
||||
super.createLabel()
|
||||
myIconLabel.border = JBUI.Borders.empty(1, 0, 0, JBUI.CurrentTheme.ActionsList.elementIconGap())
|
||||
}
|
||||
|
||||
override fun createIconBar(): JComponent {
|
||||
return myIconLabel
|
||||
}
|
||||
|
||||
private fun createButton(): JComponent {
|
||||
val pane = JPanel(MigLayout("ins 0, gap 0")).apply {
|
||||
isOpaque = false
|
||||
|
||||
+13
-12
@@ -119,6 +119,8 @@ public class PopupListElementRenderer<E> extends GroupedItemsListRenderer<E> {
|
||||
myMnemonicLabel.setBorder(new JBEmptyBorder(insets));
|
||||
myMnemonicLabel.setFont(JBUI.CurrentTheme.ActionsList.applyStylesForNumberMnemonic(myMnemonicLabel.getFont()));
|
||||
|
||||
myIconBar = createIconBar();
|
||||
|
||||
return layoutComponent(panel);
|
||||
}
|
||||
|
||||
@@ -143,6 +145,10 @@ public class PopupListElementRenderer<E> extends GroupedItemsListRenderer<E> {
|
||||
myNextStepButtonSeparator = createNextStepButtonSeparator();
|
||||
left.add(myNextStepButtonSeparator, BorderLayout.EAST);
|
||||
|
||||
if (myIconBar != null) {
|
||||
left.add(myIconBar, BorderLayout.WEST);
|
||||
}
|
||||
|
||||
JPanel result = new JPanel();
|
||||
result.setLayout(new GridBagLayout());
|
||||
result.setBorder(JBUI.Borders.empty());
|
||||
@@ -173,6 +179,7 @@ public class PopupListElementRenderer<E> extends GroupedItemsListRenderer<E> {
|
||||
|
||||
@Override
|
||||
protected void setComponentIcon(Icon icon, Icon disabledIcon) {
|
||||
if (myIconLabel == null) return;
|
||||
myIconLabel.setIcon(icon);
|
||||
myIconLabel.setDisabledIcon(disabledIcon);
|
||||
}
|
||||
@@ -255,6 +262,9 @@ public class PopupListElementRenderer<E> extends GroupedItemsListRenderer<E> {
|
||||
myMnemonicLabel.setText(mnemonic != null ? String.valueOf(mnemonic) : "");
|
||||
myMnemonicLabel.setForeground(isSelected && isSelectable && !nextStepButtonSelected ? getSelectionForeground() : JBUI.CurrentTheme.ActionsList.MNEMONIC_FOREGROUND);
|
||||
}
|
||||
else if (myMnemonicLabel != null) {
|
||||
myMnemonicLabel.setVisible(false);
|
||||
}
|
||||
|
||||
if (step.isMnemonicsNavigationEnabled()) {
|
||||
MnemonicNavigationFilter<Object> filter = step.getMnemonicNavigationFilter();
|
||||
@@ -300,22 +310,13 @@ public class PopupListElementRenderer<E> extends GroupedItemsListRenderer<E> {
|
||||
myValueLabel.setText(step instanceof ListPopupStepEx<?> ? ((ListPopupStepEx<E>)step).getValueFor(value) : null);
|
||||
setSelected(myValueLabel, isSelected && isSelectable && !nextStepButtonSelected, isSelected);
|
||||
}
|
||||
|
||||
if (myIconBar != null) myMainPane.remove(myIconBar);
|
||||
myIconBar = createIconBar(list, value, isSelected);
|
||||
if (myIconBar != null) myMainPane.add(myIconBar, BorderLayout.WEST);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected JComponent createIconBar(JList<? extends E> list, E value, boolean selected) {
|
||||
boolean mnemonicShown = value instanceof NumericMnemonicItem && ((NumericMnemonicItem)value).digitMnemonicsEnabled();
|
||||
boolean iconShown = myIconLabel.getIcon() != null;
|
||||
if (!mnemonicShown && !iconShown) return null;
|
||||
|
||||
protected JComponent createIconBar() {
|
||||
Box res = Box.createHorizontalBox();
|
||||
res.setBorder(JBUI.Borders.emptyRight(JBUI.CurrentTheme.ActionsList.elementIconGap()));
|
||||
if (iconShown) res.add(myIconLabel);
|
||||
if (mnemonicShown) res.add(myMnemonicLabel);
|
||||
res.add(myIconLabel);
|
||||
res.add(myMnemonicLabel);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
+1
-1
@@ -48,7 +48,7 @@ public class PopupListElementRendererWithIcon extends PopupListElementRenderer<O
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable JComponent createIconBar(JList<?> list, Object value, boolean selected) {
|
||||
protected @Nullable JComponent createIconBar() {
|
||||
return myIconLabel;
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -21,6 +21,7 @@ class GrazieLanguagesPopupElementRenderer(list: ListPopupImpl) : PopupListElemen
|
||||
override fun createItemComponent(): JComponent {
|
||||
createLabel()
|
||||
createSizeLabel()
|
||||
myIconBar = createIconBar()
|
||||
|
||||
val panel = panel(BorderLayout()) {
|
||||
add(myTextLabel, BorderLayout.CENTER)
|
||||
|
||||
Reference in New Issue
Block a user