001    package org.springframework.richclient.table.renderer;
002    
003    import java.awt.Component;
004    
005    import javax.swing.JTable;
006    import javax.swing.table.DefaultTableCellRenderer;
007    
008    import org.springframework.context.support.MessageSourceAccessor;
009    
010    /**
011     * TableCellRenderer which looks up messages by using the class and name of the
012     * Enum as a messageKey.
013     * 
014     * @author Xavier Breton
015     */
016    public class EnumTableCellRenderer extends DefaultTableCellRenderer {
017    
018            private static final long serialVersionUID = -1737388077316919179L;
019    
020            private MessageSourceAccessor messageSourceAccessor;
021    
022            /**
023             * Constructor.
024             * 
025             * @param messageSourceAccesor containing the messages for the Enums.
026             */
027            public EnumTableCellRenderer(MessageSourceAccessor messageSourceAccesor) {
028                    this.messageSourceAccessor = messageSourceAccesor;
029            }
030    
031            /**
032             * {@inheritDoc}
033             */
034            @SuppressWarnings( "unchecked")
035            public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
036                            int row, int column) {
037                    if (value instanceof Enum) {
038                            value = messageSourceAccessor.getMessage(value.getClass().getName() + "." + ((Enum) value).name());
039                    }
040    
041                    return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
042            }
043    }