3
import java.awt.event.*;
7
import org.pushingpixels.lafwidget.LafWidgetAdapter;
8
import org.pushingpixels.substance.api.SubstanceLookAndFeel;
9
import org.pushingpixels.substance.api.SubstanceConstants.ScrollPaneButtonPolicyKind;
11
public class ScrollBarUiDebugger extends LafWidgetAdapter<JScrollBar> {
12
protected MouseListener substanceDebugUiListener;
15
public boolean requiresCustomLafSupport() {
20
public void installListeners() {
22
this.substanceDebugUiListener = new MouseAdapter() {
24
public void mousePressed(MouseEvent e) {
29
public void mouseReleased(MouseEvent e) {
33
protected void process(MouseEvent e) {
34
if (e.isPopupTrigger()) {
35
JPopupMenu popup = new JPopupMenu();
36
JMenuItem policyNone = new JMenuItem("Empty policy");
37
policyNone.addActionListener(new PolicyChanger(
38
ScrollPaneButtonPolicyKind.NONE));
39
popup.add(policyNone);
40
JMenuItem policyOpposite = new JMenuItem("Opposite policy");
41
policyOpposite.addActionListener(new PolicyChanger(
42
ScrollPaneButtonPolicyKind.OPPOSITE));
43
popup.add(policyOpposite);
44
JMenuItem policyAdjacent = new JMenuItem("Adjacent policy");
45
policyAdjacent.addActionListener(new PolicyChanger(
46
ScrollPaneButtonPolicyKind.ADJACENT));
47
popup.add(policyAdjacent);
48
JMenuItem policyMultiple = new JMenuItem("Multiple policy");
49
policyMultiple.addActionListener(new PolicyChanger(
50
ScrollPaneButtonPolicyKind.MULTIPLE));
51
popup.add(policyMultiple);
52
JMenuItem policyMultipleBoth = new JMenuItem(
53
"Multiple both policy");
54
policyMultipleBoth.addActionListener(new PolicyChanger(
55
ScrollPaneButtonPolicyKind.MULTIPLE_BOTH));
56
popup.add(policyMultipleBoth);
57
popup.show(jcomp, e.getX(), e.getY());
61
this.jcomp.addMouseListener(this.substanceDebugUiListener);
65
public void uninstallListeners() {
66
if (this.substanceDebugUiListener != null) {
67
this.jcomp.removeMouseListener(this.substanceDebugUiListener);
68
this.substanceDebugUiListener = null;
74
* Listener on policy change menu items in debug UI mode.
76
* @author Kirill Grouchnikov
78
protected class PolicyChanger implements ActionListener {
82
protected ScrollPaneButtonPolicyKind newPolicy;
85
* Creates a new policy change listener.
90
public PolicyChanger(ScrollPaneButtonPolicyKind newPolicy) {
92
this.newPolicy = newPolicy;
98
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
101
public void actionPerformed(ActionEvent e) {
102
SwingUtilities.invokeLater(new Runnable() {
105
((JScrollPane) jcomp.getParent()).putClientProperty(
106
SubstanceLookAndFeel.SCROLL_PANE_BUTTONS_POLICY,
107
PolicyChanger.this.newPolicy);
108
jcomp.getParent().doLayout();
109
jcomp.getParent().repaint();