1    package com.instantbank.common.uiutils;
2    
3    import javax.swing.JToggleButton;
4    import javax.swing.ImageIcon;
5    import java.awt.Insets;
6    import java.awt.event.ItemListener;
7    import java.awt.event.ItemEvent;
8    import javax.swing.border.Border;
9    import javax.swing.border.BevelBorder;
10   
11   /**
12    *  Small button with toggle behavior
13    *
14    * @author Robinson/Vorobiev
15    * @created September 2002
16    */
17   public class SmallToggleButton extends JToggleButton
18       implements ItemListener {
19   
20     /**
21      *  Border when button raised
22      */
23     protected Border m_raised;
24     /**
25      *  Border when button lowered
26      */
27     protected Border m_lowered;
28   
29   
30     /**
31      *  Constructor for the SmallToggleButton object
32      *
33      * @param selected Initial state. Selected = true.
34      * @param imgUnselected Image when unselected.
35      * @param imgSelected Imege when selected
36      * @param tip Tip text
37      */
38     public SmallToggleButton(boolean selected, ImageIcon imgUnselected,
39                              ImageIcon imgSelected, String tip) {
40       super(imgUnselected, selected);
41       setHorizontalAlignment(CENTER);
42       setBorderPainted(true);
43       m_raised = new BevelBorder(BevelBorder.RAISED);
44       m_lowered = new BevelBorder(BevelBorder.LOWERED);
45       setBorder(selected ? m_lowered : m_raised);
46       setMargin(new Insets(1, 1, 1, 1));
47       setToolTipText(tip);
48       setRequestFocusEnabled(false);
49       setSelectedIcon(imgSelected);
50       addItemListener(this);
51     }
52   
53   
54     /**
55      *  Gets the alignmentY attribute of the SmallToggleButton
56      *
57      * @return The alignmentY value
58      */
59     public float getAlignmentY() {
60       return 0.5f;
61     }
62   
63   
64     /**
65      *  Changes the border following the button's state change.
66      *
67      * @param e Item event
68      */
69     public void itemStateChanged(ItemEvent e) {
70       setBorder(isSelected() ? m_lowered : m_raised);
71     }
72   }
73