View Javadoc
1   package com.jsql.view.swing.tree.custom;
2   
3   import javax.swing.*;
4   import javax.swing.plaf.UIResource;
5   import javax.swing.plaf.metal.MetalLookAndFeel;
6   import java.awt.*;
7   import java.io.Serializable;
8   
9   public class CheckBoxMenuItemIconCustom implements Icon, UIResource, Serializable {
10  
11      @Override
12      public void paintIcon(Component component, Graphics graphics, int x, int y) {
13          
14          AbstractButton abstractButton = (AbstractButton) component;
15          ButtonModel model = abstractButton.getModel();
16  
17          boolean isSelected = model.isSelected();
18          boolean isEnabled = model.isEnabled();
19          boolean isPressed = model.isPressed();
20          boolean isArmed = model.isArmed();
21  
22          graphics.translate(x, y);
23  
24          if (isEnabled) {
25              
26              if (isPressed || isArmed) {
27                  
28                  graphics.setColor(MetalLookAndFeel.getControlInfo());
29                  graphics.drawLine(0, 0, 8, 0);
30                  graphics.drawLine(0, 0, 0, 8);
31                  graphics.drawLine(8, 2, 8, 8);
32                  graphics.drawLine(2, 8, 8, 8);
33  
34                  graphics.setColor(MetalLookAndFeel.getPrimaryControl());
35  
36              } else {
37                  
38                  graphics.setColor(MetalLookAndFeel.getControlDarkShadow());
39                  graphics.drawLine(0, 0, 8, 0);
40                  graphics.drawLine(0, 0, 0, 8);
41                  graphics.drawLine(8, 2, 8, 8);
42                  graphics.drawLine(2, 8, 8, 8);
43  
44                  graphics.setColor(MetalLookAndFeel.getControlHighlight());
45              }
46  
47              graphics.drawLine(1, 1, 7, 1);
48              graphics.drawLine(1, 1, 1, 7);
49              graphics.drawLine(9, 1, 9, 9);
50              graphics.drawLine(1, 9, 9, 9);
51  
52          } else {
53              
54              graphics.setColor(MetalLookAndFeel.getMenuDisabledForeground());
55              graphics.drawRect(0, 0, 8, 8);
56          }
57  
58          if (isSelected) {
59              this.drawSelected(component, graphics, abstractButton, model, isEnabled);
60          }
61  
62          graphics.translate(-x, -y);
63      }
64  
65      private void drawSelected(Component component, Graphics graphics, AbstractButton abstractButton, ButtonModel model, boolean isEnabled) {
66          
67          if (isEnabled) {
68              if (model.isArmed() || (component instanceof JMenu && model.isSelected())) {
69                  graphics.setColor(MetalLookAndFeel.getMenuSelectedForeground());
70              } else {
71                  graphics.setColor(abstractButton.getForeground());
72              }
73          } else {
74              graphics.setColor(MetalLookAndFeel.getMenuDisabledForeground());
75          }
76  
77          graphics.drawLine(2, 2, 2, 6);
78          graphics.drawLine(3, 2, 3, 6);
79          graphics.drawLine(4, 4, 8, 0);
80          graphics.drawLine(4, 5, 9, 0);
81      }
82  
83      @Override
84      public int getIconWidth() {
85          return 10;
86      }
87  
88      @Override
89      public int getIconHeight() {
90          return 10;
91      }
92  }