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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
已复制!
package cppcheckplus.control;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.BorderFactory;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.OverlayLayout;
import cppcheckplus.shortcut.MyShortcutItem;
import cppcheckplus.shortcut.MyShortcutPanel;
public class MyListRenderer extends DefaultListCellRenderer
{
private JPanel itemRender;
private int separatorHeight = 30;
private JPanel separatorPanel;
private JLabel separatorLabel;
private MySeparator separator;
private Color itemTextColor;
private Color separatorTextColor;
private Color itemSelectedBackground;
private Color itemSelectedBorder;
private Font separatorFont;
public MyListRenderer(MyList list)
{
super();
itemRender = new JPanel(new BorderLayout());
separatorPanel = new JPanel() {
public Dimension getPreferredSize()
{
Dimension size = super.getPreferredSize();
return new Dimension(size.width, separatorHeight);
}
};
separatorLabel = new JLabel();
separator = new MySeparator(0);
separatorTextColor = Color.white;
separatorFont = MyContorlUtil.FONT_12_BOLD;
itemTextColor = MyContorlUtil.LIST_TEXT_COLOR;
itemSelectedBackground = new Color(199, 198, 200);
itemSelectedBorder = new Color(163, 163, 163);
itemRender.setOpaque(false);
itemRender.add(this, "Center");
separatorPanel.setLayout(new OverlayLayout(separatorPanel));
JPanel separatorHelpPane = new JPanel(new BorderLayout());
separatorHelpPane.setBorder(BorderFactory.createEmptyBorder(12, 0, 0, 0));
separatorHelpPane.add(separator);
separatorHelpPane.setOpaque(false);
separatorPanel.setOpaque(false);
separatorLabel.setOpaque(true);
separatorLabel.setBackground(MyContorlUtil.LIST_BACKGROUND);
separatorLabel.setForeground(separatorTextColor);
separatorLabel.setFont(separatorFont);
separatorLabel.setVerticalAlignment(1);
separatorLabel.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 2));
JPanel labelHelpPane = new JPanel(new BorderLayout());
labelHelpPane.setBorder(BorderFactory.createEmptyBorder(6, 15, 0, 0));
labelHelpPane.add(separatorLabel, "West");
labelHelpPane.setOpaque(false);
separatorPanel.add(labelHelpPane);
separatorPanel.add(separatorHelpPane);
}
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
{
MyShortcutItem shortcutItem = (MyShortcutItem)value;
if(shortcutItem.isGroup())
{
String groupName = shortcutItem.getText();
separatorLabel.setText(groupName);
separatorPanel.setToolTipText(groupName);
if (list.getParent() instanceof MyShortcutPanel)
{
MyShortcutPanel pane = (MyShortcutPanel)list.getParent();
if (pane.isShrinked())
{
separatorLabel.setText(" ");
separatorLabel.setOpaque(false);
} else
{
separatorLabel.setOpaque(true);
}
}
return separatorPanel;
}
else
{
setText(shortcutItem.getText());
setBackground(MyContorlUtil.LIST_BACKGROUND);
setToolTipText(shortcutItem.getToolTip());
setIcon(shortcutItem.getIcon());
}
if (list.getParent() instanceof MyShortcutPanel)
{
MyShortcutPanel pane = (MyShortcutPanel)list.getParent();
if (pane.isShrinked())
{
setBorder(BorderFactory.createEmptyBorder(2, 7, 1, 2));
setText("");
} else
{
setBorder(BorderFactory.createEmptyBorder(2, 20, 1, 2));
}
}
if (isSelected)
{
setBackground(itemSelectedBackground);
itemRender.setBorder(BorderFactory.createLineBorder(itemSelectedBorder));
}
else
{
itemRender.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
}
setForeground(itemTextColor);
return itemRender;
}
}
|