/** * */ package org.gudy.azureus2.ui.swt.views.tableitems.mytorrents; import org.eclipse.swt.graphics.Image; import org.gudy.azureus2.core3.util.DisplayFormatters; import org.gudy.azureus2.plugins.download.Download; import org.gudy.azureus2.plugins.ui.tables.*; import org.gudy.azureus2.ui.swt.views.table.CoreTableColumnSWT; import org.gudy.azureus2.ui.swt.views.table.TableCellSWT; import com.aelitis.azureus.ui.swt.imageloader.ImageLoader; /** * @author TuxPaper * @created Jul 11, 2010 * */ public class ColumnTorrentSpeed extends CoreTableColumnSWT implements TableCellRefreshListener { public static final Class DATASOURCE_TYPE = Download.class; public static final String COLUMN_ID = "torrentspeed"; private Image imgUp; private Image imgDown; public ColumnTorrentSpeed(String tableID) { super(COLUMN_ID, 80, tableID); setAlignment(ALIGN_TRAIL); setType(TableColumn.TYPE_TEXT); setRefreshInterval(INTERVAL_LIVE); setUseCoreDataSource(false); ImageLoader imageLoader = ImageLoader.getInstance(); imgUp = imageLoader.getImage("image.torrentspeed.up"); imgDown = imageLoader.getImage("image.torrentspeed.down"); } public void fillTableColumnInfo(TableColumnInfo info) { info.addCategories(new String[] { CAT_ESSENTIAL, CAT_BYTES, }); info.setProficiency(TableColumnInfo.PROFICIENCY_BEGINNER); } public void refresh(TableCell cell) { Object ds = cell.getDataSource(); if (!(ds instanceof Download)) { return; } Download dm = (Download)ds; long value; long sortValue; String prefix = ""; int iState; iState = dm.getState(); if (iState == Download.ST_DOWNLOADING) { value = dm.getStats().getDownloadAverage(); ((TableCellSWT)cell).setIcon(imgDown); } else if (iState == Download.ST_SEEDING) { value = dm.getStats().getUploadAverage(); ((TableCellSWT)cell).setIcon(imgUp); } else { ((TableCellSWT)cell).setIcon(null); value = 0; } sortValue = (value << 4) | iState; if (cell.setSortValue(sortValue) || !cell.isValid()) { cell.setText(value > 0 ? prefix + DisplayFormatters.formatByteCountToKiBEtcPerSec(value) : ""); } } }