package com.limegroup.gnutella.gui.tables; import java.awt.Component; import javax.swing.Icon; import javax.swing.JTable; import javax.swing.JLabel; import javax.swing.table.DefaultTableCellRenderer; import com.limegroup.gnutella.licenses.License; import com.limegroup.gnutella.licenses.LicenseFactory; import com.limegroup.gnutella.gui.ImageManipulator; import com.limegroup.gnutella.gui.GUIMediator; import com.limegroup.gnutella.gui.themes.ThemeMediator; import com.limegroup.gnutella.gui.themes.ThemeObserver; import com.limegroup.gnutella.util.NameValue; class LicenseRenderer extends DefaultTableCellRenderer implements ThemeObserver { /** * The CC icon, disabled. * * Lazily constructed */ private Icon CC_NOT_VALIDATED = null; /** * The Weedshare icon, disabled. * * Lazily constructed. */ private Icon WEED_NOT_VALIDATED = null; /** * An unknown license, disabled. */ private Icon UNKNOWN_NOT_VALIDATED = null; public LicenseRenderer() { setHorizontalAlignment(JLabel.CENTER); ThemeMediator.addThemeObserver(this); } public void updateTheme() { CC_NOT_VALIDATED = null; WEED_NOT_VALIDATED = null; UNKNOWN_NOT_VALIDATED = null; } private Icon getIcon(String s) { if(s == null) return null; if(s.equals(LicenseFactory.CC_NAME)) return GUIMediator.getThemeImage("cc"); else if(s.equals(LicenseFactory.WEED_NAME)) return GUIMediator.getThemeImage("weed"); else if(s.equals(LicenseFactory.UNKNOWN_NAME)) return GUIMediator.getThemeImage("forms_small"); else return null; } /** * Retrieves the invalid icon. */ private Icon getDisabledIcon(String s) { if(s == null) { return null; } else if(s.equals(LicenseFactory.CC_NAME)) { if(CC_NOT_VALIDATED == null) CC_NOT_VALIDATED = ImageManipulator.gray(getIcon(s)); return CC_NOT_VALIDATED; } else if(s.equals(LicenseFactory.WEED_NAME)) { if(WEED_NOT_VALIDATED == null) WEED_NOT_VALIDATED = ImageManipulator.gray(getIcon(s)); return WEED_NOT_VALIDATED; } else if(s.equals(LicenseFactory.UNKNOWN_NAME)) { if(UNKNOWN_NOT_VALIDATED == null) UNKNOWN_NOT_VALIDATED = ImageManipulator.gray(getIcon(s)); return UNKNOWN_NOT_VALIDATED; } else { return null; } } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSel, boolean hasFocus, int row, int column) { NameValue nv = (NameValue)value; super.getTableCellRendererComponent(table, value, isSel, hasFocus, row, column); setText(null); if(nv != null) { Integer e = (Integer)nv.getValue(); int i = e.intValue(); switch(i) { case License.VERIFIED: setIcon(getIcon(nv.getName())); break; case License.UNVERIFIED: setIcon(getDisabledIcon(nv.getName())); break; default: setIcon(null); } } else { setIcon(null); } return this; } }