View Javadoc

1   package org.apache.log4j.chainsaw;
2   
3   import java.awt.Insets;
4   import java.awt.event.ItemEvent;
5   import java.awt.event.ItemListener;
6   import java.awt.event.MouseEvent;
7   import java.awt.event.MouseListener;
8   
9   import javax.swing.Action;
10  import javax.swing.BorderFactory;
11  import javax.swing.JToggleButton;
12  import javax.swing.SwingConstants;
13  import javax.swing.border.BevelBorder;
14  import javax.swing.border.Border;
15  import javax.swing.border.SoftBevelBorder;
16  
17  
18  /***
19   * A better button class that has nice roll over effects.
20   *
21   * This class is borrowed (quite heavily, but with modifications)
22   * from the "Swing: Second Edition"
23   * book by Matthew Robinson and Pavel Vorobeiv. An excellent book on Swing.
24   *
25   * @author Matthew Robinson
26   * @author Pavel Vorobeiv
27   * @author Paul Smith <psmith@apache.org>
28   */
29  class SmallToggleButton extends JToggleButton implements ItemListener,
30    MouseListener {
31    protected Border m_highlighted = new SoftBevelBorder(BevelBorder.RAISED);
32    protected Border m_raised = BorderFactory.createEmptyBorder();
33    protected Border m_inactive = m_raised;
34    protected Border m_border = m_inactive;
35    protected Border m_lowered = new SoftBevelBorder(BevelBorder.LOWERED);
36    protected Insets m_ins = new Insets(4, 4, 4, 4);
37  
38    public SmallToggleButton() {
39      super();
40      setHorizontalAlignment(SwingConstants.CENTER);
41      setBorder(isSelected() ? m_lowered : m_raised);
42      setMargin(m_ins);
43      setRequestFocusEnabled(false);
44      addItemListener(this);
45      addMouseListener(this);
46      setText("");
47    }
48  
49    public SmallToggleButton(Action action) {
50      this();
51      setAction(action);
52    }
53  
54    /***
55     * DOCUMENT ME!
56     *
57     * @return DOCUMENT ME!
58     */
59    public float getAlignmentY() {
60      return 0.5f;
61    }
62  
63    /***
64     * DOCUMENT ME!
65     *
66     * @return DOCUMENT ME!
67     */
68    public Border getBorder() {
69      return m_border;
70    }
71  
72    /***
73     * DOCUMENT ME!
74     *
75     * @return DOCUMENT ME!
76     */
77    public Insets getInsets() {
78      return m_ins;
79    }
80  
81    /***
82     * DOCUMENT ME!
83     *
84     * @param e DOCUMENT ME!
85     */
86    public void itemStateChanged(ItemEvent e) {
87      setBorder(isSelected() ? m_lowered : m_raised);
88    }
89  
90    /***
91     * DOCUMENT ME!
92     *
93     * @param e DOCUMENT ME!
94     */
95    public void mouseClicked(MouseEvent e) {
96    }
97  
98    /***
99     * DOCUMENT ME!
100    *
101    * @param e DOCUMENT ME!
102    */
103   public void mouseEntered(MouseEvent e) {
104     if (isEnabled()) {
105       m_border = m_highlighted;
106       setBorder(m_highlighted);
107     }
108   }
109 
110   /***
111    * DOCUMENT ME!
112    *
113    * @param e DOCUMENT ME!
114    */
115   public void mouseExited(MouseEvent e) {
116     m_border = m_inactive;
117     setBorder(m_inactive);
118   }
119 
120   /***
121    * DOCUMENT ME!
122    *
123    * @param e DOCUMENT ME!
124    */
125   public void mousePressed(MouseEvent e) {
126     m_border = m_lowered;
127     setBorder(m_lowered);
128   }
129 
130   /***
131    * DOCUMENT ME!
132    *
133    * @param e DOCUMENT ME!
134    */
135   public void mouseReleased(MouseEvent e) {
136     m_border = m_inactive;
137     setBorder(m_inactive);
138   }
139 }