package org.limewire.ui.swing.table;
import java.awt.Component;
import javax.swing.JTable;
import org.limewire.core.api.Category;
import org.limewire.core.api.FilePropertyKey;
import org.limewire.core.api.library.LocalFileItem;
import org.limewire.core.api.library.PropertiableFile;
import org.limewire.inject.LazySingleton;
import org.limewire.ui.swing.search.model.VisualSearchResult;
import org.limewire.ui.swing.util.GuiUtils;
import org.limewire.ui.swing.util.I18n;
import com.google.inject.Inject;
/**
* Displays the quality of a file in a table cell.
*/
@LazySingleton
public class QualityRenderer extends DefaultLimeTableCellRenderer {
@Inject
public QualityRenderer(){
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
String text;
if(value == null) {
text = "";
} else if(value instanceof VisualSearchResult){
VisualSearchResult result = (VisualSearchResult)value;
if(result.isSpam()) {
text = I18n.tr("Spam");
} else {
if(!(result.getProperty(FilePropertyKey.QUALITY) instanceof Number))
text = "";
else {
Number num = ((Number)result.getProperty(FilePropertyKey.QUALITY));
text = GuiUtils.toQualityStringShort(num.longValue()) + getQualityDetails(result);
}
}
} else if(value instanceof LocalFileItem) {
LocalFileItem item = (LocalFileItem) value;
if(!(item.getProperty(FilePropertyKey.QUALITY) instanceof Number))
text = "";
else {
Number num = ((Number)item.getProperty(FilePropertyKey.QUALITY));
text = GuiUtils.toQualityStringShort(num.longValue()) + getQualityDetails(item);
}
} else {
text = "";
}
super.getTableCellRendererComponent(table, text, isSelected, hasFocus, row, column);
return this;
}
private String getQualityDetails(PropertiableFile propertiable){
if (propertiable.getCategory() == Category.AUDIO){
Object bitRate = propertiable.getProperty(FilePropertyKey.BITRATE);
if (bitRate != null) {
return " (" + bitRate + ")";
}
}
return "";
}
}