001 package data.swing;
002
003 import data.*;
004
005 import javax.swing.table.*;
006
007 /**
008 * A {@link util.swing.TableEntryDescriptor} that can be used to model Currencies with a
009 * {@link CatalogTableModel}.
010 *
011 * <p>Essentially this is a {@link DefaultCatalogItemTED} that renders its value column using the Currency to
012 * format the values.</p>
013 *
014 * @author Steffen Zschaler
015 * @version 2.0 23/08/1999
016 * @since v2.0
017 */
018 public class DefaultCurrencyItemTED extends DefaultCatalogItemTED {
019
020 /**
021 * The Currency used for formatting.
022 *
023 * @serial
024 */
025 private Currency m_cCurrency;
026
027 /**
028 * The cell renderer that renders the value column.
029 */
030 private transient TableCellRenderer m_tcrValueRenderer;
031
032 /**
033 * Internal helper function that gets (and if necessary creates) the cell renderer for the value column.
034 *
035 * @override Never
036 */
037 protected TableCellRenderer getValueRenderer() {
038 if (m_tcrValueRenderer == null) {
039 m_tcrValueRenderer = new CurrencyRenderer(m_cCurrency);
040 }
041
042 return m_tcrValueRenderer;
043 }
044
045 /**
046 * Create a new DefaultCurrencyItemTED.
047 *
048 * @param c the Currency used for formatting. Must be the same as the Currency modelled by the associated
049 * {@link CatalogTableModel}.
050 */
051 public DefaultCurrencyItemTED(Currency c) {
052 super();
053
054 m_cCurrency = c;
055 }
056
057 /**
058 * @return <code>String.class</code> for the first, <code>{@link NumberValue}.class</code> for the second
059 * column.
060 * @override Sometimes
061 */
062 public Class getColumnClass(int nIdx) {
063 Class[] acClasses = {
064 String.class, NumberValue.class};
065 return acClasses[nIdx];
066 }
067
068 /**
069 * @return <code>null</code> for the first, {@link #getValueRenderer} for the second column.
070 * @override Sometimes
071 */
072 public TableCellRenderer getCellRenderer(int nIdx) {
073 if (nIdx == 1) {
074 return getValueRenderer();
075 } else {
076 return super.getCellRenderer(nIdx);
077 }
078 }
079 }