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 * ID for serialization.
022 */
023 private static final long serialVersionUID = 5154459383072256109L;
024
025 /**
026 * The Currency used for formatting.
027 *
028 * @serial
029 */
030 private Currency m_cCurrency;
031
032 /**
033 * The cell renderer that renders the value column.
034 */
035 private transient TableCellRenderer m_tcrValueRenderer;
036
037 /**
038 * Internal helper function that gets (and if necessary creates) the cell renderer for the value column.
039 *
040 * @override Never
041 */
042 protected TableCellRenderer getValueRenderer() {
043 if (m_tcrValueRenderer == null) {
044 m_tcrValueRenderer = new CurrencyRenderer(m_cCurrency);
045 }
046
047 return m_tcrValueRenderer;
048 }
049
050 /**
051 * Create a new DefaultCurrencyItemTED.
052 *
053 * @param c the Currency used for formatting. Must be the same as the Currency modelled by the associated
054 * {@link CatalogTableModel}.
055 */
056 public DefaultCurrencyItemTED(Currency c) {
057 super();
058
059 m_cCurrency = c;
060 }
061
062 /**
063 * @return <code>String.class</code> for the first, <code>{@link NumberValue}.class</code> for the second
064 * column.
065 * @override Sometimes
066 */
067 public Class<?> getColumnClass(int nIdx) {
068 Class[] acClasses = {
069 String.class, NumberValue.class};
070 return acClasses[nIdx];
071 }
072
073 /**
074 * @return <code>null</code> for the first, {@link #getValueRenderer} for the second column.
075 * @override Sometimes
076 */
077 public TableCellRenderer getCellRenderer(int nIdx) {
078 if (nIdx == 1) {
079 return getValueRenderer();
080 } else {
081 return super.getCellRenderer(nIdx);
082 }
083 }
084 }