package org.limewire.ui.swing.library.table; import java.awt.Component; import java.awt.Font; import javax.swing.Icon; import javax.swing.JTable; import javax.swing.table.TableCellRenderer; import org.jdesktop.application.Resource; import org.limewire.core.api.Category; import org.limewire.core.api.library.LocalFileItem; import org.limewire.inject.LazySingleton; import org.limewire.ui.swing.util.CategoryIconManager; import org.limewire.ui.swing.util.GuiUtils; import org.limewire.ui.swing.util.I18n; import org.limewire.ui.swing.util.IconManager; import org.limewire.ui.swing.util.PropertiableFileUtils; import com.google.inject.Inject; import com.google.inject.Provider; @LazySingleton class NameCategoryRenderer extends DefaultLibraryRenderer implements TableCellRenderer { private final Provider<IconManager> iconManager; private final CategoryIconManager categoryIconManager; @Resource private Font font; @Inject public NameCategoryRenderer(Provider<IconManager> iconManager, CategoryIconManager categoryIconManager) { GuiUtils.assignResources(this); this.iconManager = iconManager; this.categoryIconManager = categoryIconManager; setIconTextGap(5); setFont(font); } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); if (value instanceof LocalFileItem) { LocalFileItem item = (LocalFileItem) value; if(item.isIncomplete()) { setText(I18n.tr("{0} (downloading)", item.getFileName())); } else if(item.getCategory() == Category.AUDIO) { setText(getAudioName(item)); } else { setText(item.getFileName()); } setIcon(getIcon(item)); } else { setText(""); setIcon(null); } return this; } private Icon getIcon(LocalFileItem item) { if(item.getCategory() == Category.DOCUMENT || item.getCategory() == Category.OTHER) { return iconManager.get().getIconForFile(item.getFile()); } else { return categoryIconManager.getIcon(item.getCategory()); } } private String getAudioName(LocalFileItem item) { return PropertiableFileUtils.getNameProperty(item, true); } }