001    package org.shiftone.jrat.ui.util;
002    
003    
004    import org.shiftone.jrat.util.log.Logger;
005    
006    import javax.swing.*;
007    import javax.swing.table.DefaultTableCellRenderer;
008    import java.awt.*;
009    
010    
011    /**
012     * Class ColorTableCellRenderer renders a Color int a table by displaying a
013     * round rectangular swatch.
014     *
015     * @author jeff@shiftone.org (Jeff Drost)
016     */
017    public class ColorTableCellRenderer extends DefaultTableCellRenderer {
018    
019        private static final Logger LOG = Logger.getLogger(ColorTableCellRenderer.class);
020        private Object value = null;
021    
022        /**
023         * Method getTableCellRendererComponent
024         */
025        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
026                                                       int row, int column) {
027    
028            this.value = value;
029    
030            return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
031        }
032    
033    
034        /**
035         * Method paint
036         */
037        public void paintComponent(Graphics g) {
038    
039            if (value instanceof Color) {
040                int x = 4;
041                int y = 4;
042                int w = getWidth() - 8;
043                int h = getHeight() - 9;
044    
045                g.setColor(Color.darkGray);
046                g.fillRoundRect(x - 2, y - 2, w + 4, h + 4, 5, 5);
047                g.setColor((Color) value);
048                g.fillRoundRect(x, y, w, h, 5, 5);
049            }
050        }
051    }