package data.swing;

import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.JTable;

import data.Currency;

import data.NumberValue;

/**
  * A cell renderer that takes a {@link NumberValue} and renders it using the formatting capabilities of a
  * {@link Currency}.
  *
  * @author Steffen Zschaler
  * @version 2.0 23/08/1999
  * @since v2.0
  */
public class CurrencyRenderer extends DefaultTableCellRenderer {

  /**
    * The Currency used to format the rendered values.
    *
    * @serial
    */
  protected Currency m_cCurrency;

  /**
    * Create a new CurrencyRenderer.
    *
    * @param c the Currency to be used for formatting.
    */
  public CurrencyRenderer (Currency c) {
    super();

    m_cCurrency = c;

    setHorizontalAlignment (RIGHT);
  }

  /**
    * @override Never
    */
  public java.awt.Component getTableCellRendererComponent(JTable table,
                                                          Object value,
                                                          boolean isSelected,
                                                          boolean hasFocus,
                                                          int row,
                                                          int column) {
    super.getTableCellRendererComponent(table,
                                        value,
                                        isSelected,
                                        hasFocus,
                                        row,
                                        column);

    setText (m_cCurrency.toString ((NumberValue) value));

    return this;
  }
}