001    package data.swing;
002    
003    import javax.swing.table.DefaultTableCellRenderer;
004    import javax.swing.JTable;
005    
006    import data.Currency;
007    
008    import data.NumberValue;
009    
010    /**
011     * A cell renderer that takes a {@link NumberValue} and renders it using the formatting capabilities of a
012     * {@link Currency}.
013     *
014     * @author Steffen Zschaler
015     * @version 2.0 23/08/1999
016     * @since v2.0
017     */
018    public class CurrencyRenderer extends DefaultTableCellRenderer {
019    
020        /**
021         * The Currency used to format the rendered values.
022         *
023         * @serial
024         */
025        protected Currency m_cCurrency;
026    
027        /**
028         * Create a new CurrencyRenderer.
029         *
030         * @param c the Currency to be used for formatting.
031         */
032        public CurrencyRenderer(Currency c) {
033            super();
034    
035            m_cCurrency = c;
036    
037            setHorizontalAlignment(RIGHT);
038        }
039    
040        /**
041         * @override Never
042         */
043        public java.awt.Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
044                boolean hasFocus, int row, int column) {
045            super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
046            setText(m_cCurrency.toString((NumberValue)value));
047    
048            return this;
049        }
050    }