fix spinners and text fields bg

(cherry picked from commit da4eeed38ffee90588466aef849d5e62b92de522)
This commit is contained in:
Konstantin Bulenkov
2012-12-05 16:15:49 +01:00
parent afb3166aac
commit cf88fbae4f
5 changed files with 87 additions and 22 deletions
@@ -89,6 +89,8 @@ public final class DarculaLaf extends BasicLookAndFeel {
initIdeaDefaults(defaults);
patchStyledEditorKit();
patchComboBox(metalDefaults, defaults);
defaults.remove("Spinner.arrowButtonBorder");
defaults.put("Spinner.arrowButtonSize", new Dimension(16, 5));
return defaults;
}
catch (Exception ignore) {
@@ -12,7 +12,7 @@ Menu.maxGutterIconWidth=18
MenuItem.maxGutterIconWidth=18
MenuItem.acceleratorDelimiter=-
EditorPane.inactiveBackground=585D5F
EditorPane.inactiveBackground=45494A
EditorPane.inactiveForeground=bbbbbb
EditorPaneUI=com.intellij.ide.ui.laf.darcula.ui.DarculaEditorPaneUI
@@ -45,15 +45,15 @@ Separator.foreground=2d2d2d
Focus.color=ff0000
TextField.background=585D5F
TextField.background=45494A
TextFieldUI=com.intellij.ide.ui.laf.darcula.ui.DarculaTextFieldUI
TextField.border=com.intellij.ide.ui.laf.darcula.ui.DarculaTextBorder
PasswordField.background=585D5F
PasswordField.background=45494A
PasswordFieldUI=com.intellij.ide.ui.laf.darcula.ui.DarculaPasswordFieldUI
PasswordField.border=com.intellij.ide.ui.laf.darcula.ui.DarculaTextBorder
FormattedTextField.background=585D5F
FormattedTextField.background=45494A
TextArea.background=585D5F
TextArea.background=45494A
CheckBoxUI=com.intellij.ide.ui.laf.darcula.ui.DarculaCheckBoxUI
CheckBox.border=com.intellij.ide.ui.laf.darcula.ui.DarculaCheckBoxBorder
@@ -79,6 +79,7 @@ ToolTip.background=5C5C42
SpinnerUI=com.intellij.ide.ui.laf.darcula.ui.DarculaSpinnerUI
Spinner.border=com.intellij.ide.ui.laf.darcula.ui.DarculaSpinnerBorder
Spinner.background=3c3f41
Spinner.arrowButtonInsets=1,1,1,1
Spinner.editorBorderPainted=false
Hyperlink.linkColor=589df6
@@ -51,7 +51,12 @@ public class DarculaSpinnerBorder implements Border, UIResource {
g.setColor(UIUtil.getTextFieldBackground());
g.fillRoundRect(x1, y1, width1, height1, 5, 5);
g.setColor(UIUtil.getPanelBackground());
g.fillRect(x1 + width1 - 17, y1, 17, height1);
if (editor != null) {
final int off = editor.getBounds().x + editor.getWidth() + ((JSpinner)c).getInsets().left;
g.fillRect(off, y1, 17, height1);
g.setColor(Gray._100);
g.drawLine(off, y1, off, height1+2);
}
if (!c.isEnabled()) {
((Graphics2D)g).setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.4f));
@@ -36,7 +36,6 @@ import java.awt.event.FocusEvent;
* @author Konstantin Bulenkov
*/
public class DarculaSpinnerUI extends BasicSpinnerUI {
private FocusAdapter myFocusListener = new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
@@ -74,15 +73,19 @@ public class DarculaSpinnerUI extends BasicSpinnerUI {
@Override
public void paint(Graphics g, JComponent c) {
super.paint(g, c);
final Border border = spinner.getBorder();
if (border != null) {
border.paintBorder(c, g, 0, 0, spinner.getWidth(), spinner.getHeight());
}
}
@Override
protected Component createPreviousButton() {
JButton button = createArrow(SwingConstants.SOUTH);
button.setName("Spinner.nextButton");
button.setName("Spinner.previousButton");
button.setBorder(new EmptyBorder(1, 1, 1, 1));
installNextButtonListeners(button);
installPreviousButtonListeners(button);
return button;
}
@@ -91,26 +94,48 @@ public class DarculaSpinnerUI extends BasicSpinnerUI {
JButton button = createArrow(SwingConstants.NORTH);
button.setName("Spinner.nextButton");
button.setBorder(new EmptyBorder(1, 1, 1, 1));
installNextButtonListeners(button);
return button;
}
private static JButton createArrow(@MagicConstant(intValues = {SwingConstants.NORTH, SwingConstants.SOUTH}) int direction) {
@Override
protected LayoutManager createLayout() {
return new LayoutManagerDelegate(super.createLayout()) {
@Override
public void layoutContainer(Container parent) {
super.layoutContainer(parent);
final JComponent editor = spinner.getEditor();
if (editor != null) {
final Rectangle bounds = editor.getBounds();
editor.setBounds(bounds.x, bounds.y, bounds.width - 6, bounds.height);
}
}
};
}
private JButton createArrow(@MagicConstant(intValues = {SwingConstants.NORTH, SwingConstants.SOUTH}) int direction) {
final Color shadow = UIUtil.getPanelBackground();
final Color darkShadow = UIUtil.getLabelForeground();
JButton b = new BasicArrowButton(direction, shadow, shadow, darkShadow, shadow) {
@Override
public void paint(Graphics g) {
int y = direction == NORTH ? getHeight() - 6 : 2;
paintTriangle(g, 0, y, 0, direction, DarculaSpinnerUI.this.spinner.isEnabled());
}
@Override
public boolean isOpaque() {
return false;
}
@Override
public void paintTriangle(Graphics g, int x, int y, int size, int direction, boolean isEnabled) {
final GraphicsConfig config = GraphicsUtil.setupAAPainting(g);
int mid;
x = 5;
y = 2;
final int w = getWidth() - 1 - x - 2;
final int h = getHeight() - 1 - 1;
mid = (w + 1) / 2;
g.setColor(UIUtil.getPanelBackground());
g.fillRect(1, 1, getWidth() - 1, getHeight() - 1);
final int w = 8;
final int h = 6;
mid = w / 2;
g.setColor(isEnabled ? darkShadow : darkShadow.darker());
@@ -141,4 +166,37 @@ public class DarculaSpinnerUI extends BasicSpinnerUI {
b.setInheritsPopupMenu(true);
return b;
}
static class LayoutManagerDelegate implements LayoutManager {
protected final LayoutManager myDelegate;
LayoutManagerDelegate(LayoutManager delegate) {
myDelegate = delegate;
}
@Override
public void addLayoutComponent(String name, Component comp) {
myDelegate.addLayoutComponent(name, comp);
}
@Override
public void removeLayoutComponent(Component comp) {
myDelegate.removeLayoutComponent(comp);
}
@Override
public Dimension preferredLayoutSize(Container parent) {
return myDelegate.preferredLayoutSize(parent);
}
@Override
public Dimension minimumLayoutSize(Container parent) {
return myDelegate.minimumLayoutSize(parent);
}
@Override
public void layoutContainer(Container parent) {
myDelegate.layoutContainer(parent);
}
}
}
@@ -17,7 +17,7 @@ package com.intellij.ide.ui.laf.darcula.ui;
import com.intellij.ide.ui.laf.darcula.DarculaUIUtil;
import com.intellij.openapi.ui.GraphicsConfig;
import com.intellij.ui.ColorUtil;
import com.intellij.ui.Gray;
import javax.swing.border.Border;
import javax.swing.plaf.InsetsUIResource;
@@ -42,7 +42,6 @@ public class DarculaTextBorder implements Border, UIResource {
@Override
public void paintBorder(Component c, Graphics g2, int x, int y, int width, int height) {
Graphics2D g = ((Graphics2D)g2);
g.setColor(ColorUtil.fromHex("737373"));
final GraphicsConfig config = new GraphicsConfig(g);
g.translate(x, y);
@@ -50,7 +49,7 @@ public class DarculaTextBorder implements Border, UIResource {
DarculaUIUtil.paintFocusRing(g, 2, 2, width-4, height-4);
} else {
boolean editable = !(c instanceof JTextComponent) || (((JTextComponent)c).isEditable());
g.setColor(c.isEnabled() && editable ? new Color(0x939393) : new Color(0x535353));
g.setColor(c.isEnabled() && editable ? Gray._100 : new Color(0x535353));
g.drawRect(1, 1, width - 2, height - 2);
}
g.translate(-x, -y);