| /* |
| * 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(); |
| } |
| } |