package com.limegroup.gnutella.gui.search; import java.awt.Color; import java.awt.Component; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import com.limegroup.gnutella.gui.themes.ThemeFileHandler; import com.limegroup.gnutella.gui.themes.ThemeMediator; import com.limegroup.gnutella.gui.themes.ThemeObserver; /** Draws ResultSpeed's appropriately colorized */ class ResultSpeedRenderer extends DefaultTableCellRenderer implements ThemeObserver { /** The color to show measured speeds in. This is dark green, * similar to the color on the connected status icon. */ public static Color _measuredColor; public static Color _unmeasuredColor; /** * Creates a new <tt>ResultSpeedRenderer</tt> instance, making it a * theme listener. */ ResultSpeedRenderer() { updateTheme(); ThemeMediator.addThemeObserver(this); } // inherit doc comment public void updateTheme() { _measuredColor = ThemeFileHandler.SEARCH_RESULT_SPEED_COLOR.getValue(); _unmeasuredColor = ThemeFileHandler.WINDOW8_COLOR.getValue(); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSel, boolean hasFocus, int row, int column) { //Note that we don't display all the information in the column. ResultSpeed speed=(ResultSpeed)value; String tag = (speed == null ? "" : speed.stringValue()); Component ret=super.getTableCellRendererComponent( table, tag, isSel, hasFocus, row, column); //Render measured speeds in green, others in black. The second call is //necessary to prevent everything from turning green, since one renderer //is shared among all cells. if (speed != null && speed.isMeasured()) ret.setForeground(_measuredColor); else ret.setForeground(_unmeasuredColor); return ret; } }