package org.limewire.ui.swing.table; import java.awt.Component; import javax.swing.JTable; import javax.swing.SwingConstants; import org.limewire.core.api.Category; import org.limewire.core.api.FilePropertyKey; import org.limewire.core.api.library.LocalFileItem; import org.limewire.inject.LazySingleton; import org.limewire.ui.swing.library.table.DefaultLibraryRenderer; import org.limewire.ui.swing.util.I18n; import com.google.inject.Inject; /** * Renders the name for the given fileItem. If the file is incomplete * (incomplete) is appending to the name. If the file is an audio file, the * title property is used instead of the name property if it exists. */ @LazySingleton public class NameRenderer extends DefaultLibraryRenderer { @Inject public NameRenderer() { setHorizontalAlignment(SwingConstants.LEFT); } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); String name = null; if (value != null && value instanceof LocalFileItem) { LocalFileItem localFileItem = (LocalFileItem) value; name = getName(localFileItem); } if (name != null) { setText(name); } else { setText(""); } return this; } private String getName(LocalFileItem localFileItem) { String name = null; if (localFileItem.getCategory() == Category.AUDIO) { name = localFileItem.getPropertyString(FilePropertyKey.TITLE); } else if (localFileItem.getCategory() == Category.VIDEO) { name = localFileItem.getFileName(); } if (name == null) { name = localFileItem.getPropertyString(FilePropertyKey.NAME); } if (name == null) { name = localFileItem.getFileName(); } if (name != null) { if (localFileItem.isIncomplete()) { name = I18n.tr("{0} (downloading)", name); } } return name; } }