Main Page | Packages | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

StyledTableCellRenderer.java

Go to the documentation of this file.
00001 /*
00002  * StyledTableCellRenderer.java
00003  *
00004  * Copyright (C) 2005 Project SQUID, http://www.cs.helsinki.fi/group/squid/
00005  *
00006  * This file is part of Ikayaki.
00007  *
00008  * Ikayaki is free software; you can redistribute it and/or modify
00009  * it under the terms of the GNU General Public License as published by
00010  * the Free Software Foundation; either version 2 of the License, or
00011  * (at your option) any later version.
00012  *
00013  * Ikayaki is distributed in the hope that it will be useful,
00014  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00016  * GNU General Public License for more details.
00017  *
00018  * You should have received a copy of the GNU General Public License
00019  * along with Ikayaki; if not, write to the Free Software
00020  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
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         // reset style before default renderer
00051         setBorder(null);
00052         setBackground(null);
00053         setForeground(null);
00054         setFont(null);
00055 
00056         // get the component as rendered by the default renderer
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         // apply custom style to the component
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 }

Generated on Fri May 6 16:00:32 2005 for Squid by  doxygen 1.4.1