00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 package ikayaki.gui;
00024
00025 import javax.swing.*;
00026 import javax.swing.table.DefaultTableCellRenderer;
00027 import java.awt.*;
00028
00035 public class StyledTableCellRenderer extends DefaultTableCellRenderer {
00036
00048 @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
00049 boolean hasFocus, int row, int column) {
00050
00051 setBorder(null);
00052 setBackground(null);
00053 setForeground(null);
00054 setFont(null);
00055
00056
00057 if (!(value instanceof StyledWrapper)) {
00058 return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
00059 }
00060 StyledWrapper wrapper = (StyledWrapper) value;
00061 super.getTableCellRendererComponent(table, wrapper.value, isSelected, hasFocus, row, column);
00062
00063
00064 setHorizontalAlignment(wrapper.horizontalAlignment);
00065 setVerticalAlignment(wrapper.verticalAlignment);
00066 setOpaque(wrapper.opaque);
00067 if (isSelected && hasFocus) {
00068 if (wrapper.selectedFocusBorder != null) setBorder(wrapper.selectedFocusBorder);
00069 if (wrapper.selectedFocusBackground != null) setBackground(wrapper.selectedFocusBackground);
00070 } else if (isSelected) {
00071 if (wrapper.selectedBorder != null) setBorder(wrapper.selectedBorder);
00072 if (wrapper.selectedBackground != null) setBackground(wrapper.selectedBackground);
00073 } else if (hasFocus) {
00074 if (wrapper.focusBorder != null) setBorder(wrapper.focusBorder);
00075 if (wrapper.focusBackground != null) setBackground(wrapper.focusBackground);
00076 } else {
00077 if (wrapper.border != null) setBorder(wrapper.border);
00078 if (wrapper.background != null) setBackground(wrapper.background);
00079 }
00080 if (wrapper.foreground != null) setForeground(wrapper.foreground);
00081 if (wrapper.font != null) setFont(wrapper.font);
00082 return this;
00083 }
00084 }