1    package com.instantbank.common.uiutils;
2    
3    import javax.swing.JButton;
4    import javax.swing.Action;
5    import javax.swing.Icon;
6    import java.awt.Insets;
7    import java.awt.event.MouseListener;
8    import java.awt.event.MouseEvent;
9    import javax.swing.border.Border;
10   import javax.swing.border.BevelBorder;
11   import javax.swing.border.EmptyBorder;
12   
13   /**
14    *  Button with nice visual behavior for mouse pressed and released
15    *
16    * @author Robinson/Vorobiev Book
17    * @created August 2002
18    */
19   public class SmallButton extends JButton
20       implements MouseListener {
21   
22     /**
23      *  Border when button is released
24      */
25     protected Border m_raised;
26     /**
27      *  Border when button is pressed
28      */
29     protected Border m_lowered;
30     /**
31      *  Border when button inactive
32      */
33     protected Border m_inactive;
34   
35   
36     /**
37      *  Constructor for the SmallButton control
38      *
39      * @param act Action fired when button pressed.
40      * @param tip Tip displayed when mouse over the button.
41      */
42     public SmallButton(Action act, String tip) {
43       super((Icon)act.getValue(Action.SMALL_ICON));
44       m_raised = new BevelBorder(BevelBorder.RAISED);
45       m_lowered = new BevelBorder(BevelBorder.LOWERED);
46       m_inactive = new EmptyBorder(2, 2, 2, 2);
47       setBorder(m_inactive);
48       setMargin(new Insets(1, 1, 1, 1));
49       setToolTipText(tip);
50       addActionListener(act);
51       addMouseListener(this);
52       setRequestFocusEnabled(false);
53     }
54   
55   
56   
57     /**
58      *  Gets the alignmentY attribute of the SmallButton object
59      *
60      * @return The alignmentY value
61      */
62     public float getAlignmentY() {
63       return 0.5f;
64     }
65   
66   
67     /**
68      *  Action when mouse pressed
69      *
70      * @param e
71      */
72     public void mousePressed(MouseEvent e) {
73       setBorder(m_lowered);
74     }
75   
76   
77     /**
78      *  mouseReleased Method
79      *
80      * @param e
81      */
82     public void mouseReleased(MouseEvent e) {
83       setBorder(m_inactive);
84     }
85   
86   
87     /**
88      *  mouseClicked Method
89      *
90      * @param e
91      */
92     public void mouseClicked(MouseEvent e) { }
93   
94   
95     /**
96      *  mouseEntered Method
97      *
98      * @param e
99      */
100    public void mouseEntered(MouseEvent e) {
101      setBorder(m_raised);
102    }
103  
104  
105    /**
106     *  mouseExited Method
107     *
108     * @param e
109     */
110    public void mouseExited(MouseEvent e) {
111      setBorder(m_inactive);
112    }
113  }
114