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 }