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