1 package net.sf.jga.swing; 33 34 import java.text.Format ; 35 import java.text.NumberFormat ; 36 import javax.swing.JLabel ; 37 import javax.swing.table.DefaultTableCellRenderer ; 38 import net.sf.jga.fn.UnaryFunctor; 39 import net.sf.jga.fn.adaptor.Constant; 40 import net.sf.jga.fn.comparison.EqualTo; 41 import net.sf.jga.fn.string.DefaultFormat; 42 import net.sf.jga.fn.string.FormatValue; 43 import net.sf.jga.util.Formattable; 44 45 53 54 public class GenericTableCellRenderer<T> extends DefaultTableCellRenderer implements Formattable<T> { 55 56 static final long serialVersionUID = -1084070441724877620L; 57 58 private UnaryFunctor<T,String > _formatter; 59 private boolean _formatNulls = false; 60 61 64 public GenericTableCellRenderer () { 65 this(new DefaultFormat<T>(), false); 66 } 67 68 71 public GenericTableCellRenderer (UnaryFunctor<T,String > formatter) { 72 this(formatter, false); 73 } 74 75 79 public GenericTableCellRenderer (UnaryFunctor<T,String > formatter, 80 boolean formatsNulls) 81 { 82 if (formatter == null) { 83 throw new IllegalArgumentException ("Non-null functor required"); 84 } 85 86 _formatter = formatter; 87 _formatNulls = formatsNulls; 88 } 89 90 93 protected void setValue(Object value) { 94 if (value == null && !_formatNulls) { 95 setText(""); 96 return; 97 } 98 99 try { 100 setText(_formatter.fn((T)value)); 103 } 104 catch (ClassCastException x) { 105 setText("#" +value +"#"); 106 } 107 catch (IllegalArgumentException x) { 108 setText("#" +value +"#"); 109 } 110 } 111 112 public String toString() { 113 return "GenericTableCellRenderer["+_formatter+"]"; 114 } 115 116 120 124 public void setFormat(UnaryFunctor<T,String > formatter) { 125 if (formatter == null) { 126 throw new IllegalArgumentException ("Non-null functor required"); 127 } 128 129 _formatter = formatter; 130 } 131 } 132 | Popular Tags |