blob: 1048e5d0449b3da54e8fd7fe697a40fed9547102 [file] [log] [blame]
/*
* Copyright 2000-2014 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.ide.ui.laf.darcula.ui;
import com.intellij.openapi.ui.GraphicsConfig;
import com.intellij.ui.ColorUtil;
import com.intellij.ui.Gray;
import sun.swing.MenuItemLayoutHelper;
import javax.swing.*;
import javax.swing.plaf.ComponentUI;
import java.awt.*;
/**
* @author Konstantin Bulenkov
*/
public class DarculaRadioButtonMenuItemUI extends DarculaMenuItemUIBase {
@SuppressWarnings({"MethodOverridesStaticMethodOfSuperclass", "UnusedDeclaration"})
public static ComponentUI createUI(JComponent c) {
return new DarculaRadioButtonMenuItemUI();
}
protected String getPropertyPrefix() {
return "RadioButtonMenuItem";
}
@Override
protected void paintCheckIcon(Graphics g2, MenuItemLayoutHelper lh, MenuItemLayoutHelper.LayoutResult lr, Color holdc, Color foreground) {
Graphics2D g = (Graphics2D) g2;
final GraphicsConfig config = new GraphicsConfig(g);
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_DEFAULT);
g.translate(lr.getCheckRect().x-1, lr.getCheckRect().y-1);
int rad = 5;
final int x = 0;
final int y = 0;
final int w = 13;
final int h = 13;
g.translate(x, y);
//setup AA for lines
Color bg = lh.getMenuItem().getBackground();
g.setPaint(new GradientPaint(0, 0, ColorUtil.shift(bg, 1.5),
0, 16, ColorUtil.shift(bg, 1.2)));
g.fillOval(0, 1, w - 1, h - 1);
g.setPaint(new GradientPaint(w / 2, 1, Gray._160.withAlpha(90), w / 2, h, Gray._100.withAlpha(90)));
g.drawOval(0, 2, w - 1, h - 1);
g.setPaint(Gray._40.withAlpha(200));
g.drawOval(0, 1, w - 1, h - 1);
if (lh.getMenuItem().isSelected()) {
final boolean enabled = lh.getMenuItem().isEnabled();
g.setColor(UIManager.getColor(enabled ? "RadioButton.darcula.selectionEnabledShadowColor" : "RadioButton.darcula.selectionDisabledShadowColor"));
g.fillOval((w - rad)/2 , h/2 , rad, rad);
g.setColor(UIManager.getColor(enabled ? "RadioButton.darcula.selectionEnabledColor" : "RadioButton.darcula.selectionDisabledColor"));
g.fillOval((w - rad)/2 , h/2 - 1, rad, rad);
}
config.restore();
g.translate(-x, -y);
g.translate(-lr.getCheckRect().x+1, -lr.getCheckRect().y+1);
config.restore();
}
}