View Javadoc

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