-
Notifications
You must be signed in to change notification settings - Fork 83
/
ToolbarXP.java
108 lines (93 loc) · 3.13 KB
/
ToolbarXP.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package com.revivius.nb.darcula;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JPanel;
import javax.swing.UIManager;
/**
* Copy paste from o.n.swing.plaf.
* @author Revivius
*/
public final class ToolbarXP extends JPanel {
/** Width of grip. */
private static final int GRIP_WIDTH = 7;
/** Minimum size. */
private final Dimension dim;
/** Maximum size. */
private final Dimension max;
public ToolbarXP() {
dim = new Dimension(GRIP_WIDTH, GRIP_WIDTH);
max = new Dimension(GRIP_WIDTH, Integer.MAX_VALUE);
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
int x = 3;
for (int i = 4; i < getHeight() - 4; i += 4) {
//first draw the rectangular highlight below each dot
g.setColor(UIManager.getColor("controlLtHighlight")); //NOI18N
g.fillRect(x + 1, i + 1, 2, 2);
//Get the shadow color. We'll paint the darkest dot first,
//and work our way to the lightest
Color col = UIManager.getColor("controlShadow"); //NOI18N
g.setColor(col);
//draw the darkest dot
g.drawLine(x + 1, i + 1, x + 1, i + 1);
//Get the color components and calculate the amount each component
//should increase per dot
int red = col.getRed();
int green = col.getGreen();
int blue = col.getBlue();
//Get the default component background - we start with the dark
//color, and for each dot, add a percentage of the difference
//between this and the background color
Color back = getBackground();
int rb = back.getRed();
int gb = back.getGreen();
int bb = back.getBlue();
//Get the amount to increment each component for each dot
int incr = (rb - red) / 5;
int incg = (gb - green) / 5;
int incb = (bb - blue) / 5;
//Increment the colors
red += incr;
green += incg;
blue += incb;
//Create a slightly lighter color and draw the dot
col = new Color(red, green, blue);
g.setColor(col);
g.drawLine(x + 1, i, x + 1, i);
//And do it for the next dot, and so on, for all four dots
red += incr;
green += incg;
blue += incb;
col = new Color(red, green, blue);
g.setColor(col);
g.drawLine(x, i + 1, x, i + 1);
red += incr;
green += incg;
blue += incb;
col = new Color(red, green, blue);
g.setColor(col);
g.drawLine(x, i, x, i);
}
}
/**
* @return minimum size
*/
@Override
public Dimension getMinimumSize() {
return dim;
}
/**
* @return preferred size
*/
@Override
public Dimension getPreferredSize() {
return new Dimension(GRIP_WIDTH, getParent().getHeight() - 4);
}
@Override
public Dimension getMaximumSize() {
return max;
}
}