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 }