new look for combo box button

This commit is contained in:
Konstantin Bulenkov
2013-12-30 16:56:39 +01:00
parent 8c42cb3d0d
commit b20439d9b1
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2012 JetBrains s.r.o.
* Copyright 2000-2013 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.
@@ -26,7 +26,9 @@ import com.intellij.openapi.util.IconLoader;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.wm.IdeFocusManager;
import com.intellij.ui.ColorUtil;
import com.intellij.ui.Gray;
import com.intellij.ui.IdeBorderFactory;
import com.intellij.ui.JBColor;
import com.intellij.ui.awt.RelativePoint;
import com.intellij.util.ui.GraphicsUtil;
import com.intellij.util.ui.UIUtil;
@@ -40,7 +42,8 @@ import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
public abstract class ComboBoxAction extends AnAction implements CustomComponentAction {
private static final Icon DISABLED_ARROW_ICON = IconLoader.getDisabledIcon(AllIcons.General.ComboArrow);
private static final Icon ARROW_ICON = AllIcons.General.ComboBoxButtonArrow;
private static final Icon DISABLED_ARROW_ICON = IconLoader.getDisabledIcon(ARROW_ICON);
private boolean mySmallVariant = true;
private DataContext myDataContext;
@@ -321,7 +324,7 @@ public abstract class ComboBoxAction extends AnAction implements CustomComponent
@Override
public Insets getInsets() {
final Insets insets = super.getInsets();
return new Insets(insets.top, insets.left, insets.bottom, insets.right + AllIcons.General.ComboArrow.getIconWidth());
return new Insets(insets.top, insets.left, insets.bottom, insets.right + ARROW_ICON.getIconWidth());
}
@Override
@@ -332,10 +335,10 @@ public abstract class ComboBoxAction extends AnAction implements CustomComponent
result.top += 2;
result.left += 8;
result.bottom += 2;
result.right += 4 + AllIcons.General.ComboArrow.getIconWidth();
result.right += 4 + ARROW_ICON.getIconWidth();
}
else {
result.right += AllIcons.General.ComboArrow.getIconWidth();
result.right += ARROW_ICON.getIconWidth();
}
return result;
@@ -349,7 +352,7 @@ public abstract class ComboBoxAction extends AnAction implements CustomComponent
@Override
public Dimension getPreferredSize() {
final boolean isEmpty = getIcon() == null && StringUtil.isEmpty(getText());
int width = isEmpty ? 10 + AllIcons.General.ComboArrow.getIconWidth() : super.getPreferredSize().width;
int width = isEmpty ? 10 + ARROW_ICON.getIconWidth() : super.getPreferredSize().width;
if (isSmallVariant()) width += 4;
return new Dimension(width, isSmallVariant() ? 19 : UIUtil.isUnderNimbusLookAndFeel() ? 24 : 21);
}
@@ -357,6 +360,7 @@ public abstract class ComboBoxAction extends AnAction implements CustomComponent
@Override
public void paint(Graphics g) {
GraphicsUtil.setupAntialiasing(g);
GraphicsUtil.setupAAPainting(g);
final Dimension size = getSize();
final boolean isEmpty = getIcon() == null && StringUtil.isEmpty(getText());
@@ -384,16 +388,15 @@ public abstract class ComboBoxAction extends AnAction implements CustomComponent
g2.setPaint(UIUtil.getGradientPaint(0, 0, UIUtil.getControlColor(), 0, h, ColorUtil.shift(UIUtil.getControlColor(), 0.8)));
}
else {
g2.setPaint(
UIUtil.getGradientPaint(0, 0, ColorUtil.shift(UIUtil.getControlColor(), 1.1), 0, h, ColorUtil.shift(UIUtil.getControlColor(), 0.9)));
g2.setPaint(UIUtil.getGradientPaint(0, 0, new JBColor(Gray._245, Gray._131), 0, h, new JBColor(Gray._208, Gray._128)));
}
g2.fillRect(2, 0, w - 2, h);
g2.fillRoundRect(2, 0, w - 2, h, 5, 5);
GraphicsUtil.setupAntialiasing(g2);
if (!UIUtil.isUnderDarcula()) {
if (!myMouseInside) {
g2.setPaint(UIUtil.getGradientPaint(0, 0, UIUtil.getBorderColor(), 0, h, UIUtil.getBorderColor().darker()));
} else {
g2.setPaint(UIUtil.getGradientPaint(0, 0, UIUtil.getBorderColor().darker(), 0, h, UIUtil.getBorderColor().darker().darker()));
g2.setPaint(UIUtil.getGradientPaint(0, 0, Gray._131, 0, h, Gray._128));
}
} else {
if (!myMouseInside) {
@@ -403,7 +406,7 @@ public abstract class ComboBoxAction extends AnAction implements CustomComponent
}
}
g2.drawRect(2, 0, w - 3, h - 1);
g2.drawRoundRect(2, 0, w - 3, h - 1, 5, 5);
final Icon icon = getIcon();
int x = 7;
@@ -423,7 +426,7 @@ public abstract class ComboBoxAction extends AnAction implements CustomComponent
}
}
final Insets insets = super.getInsets();
final Icon icon = isEnabled() ? AllIcons.General.ComboArrow : DISABLED_ARROW_ICON;
final Icon icon = isEnabled() ? ARROW_ICON : DISABLED_ARROW_ICON;
final int x;
if (isEmpty) {
x = (size.width - icon.getIconWidth()) / 2;