package org.limewire.ui.swing.downloads.table.renderer; import org.limewire.core.api.download.DownloadItem; import org.limewire.core.api.download.DownloadState; import org.limewire.ui.swing.components.decorators.ProgressBarDecorator; import org.limewire.ui.swing.transfer.TransferProgressRenderer; import org.limewire.ui.swing.util.I18n; import org.limewire.util.CommonUtils; import com.google.inject.Inject; /** * Cell renderer for the progress column in the Downloads table. */ public class DownloadProgressRenderer extends TransferProgressRenderer { /** * Constructs a DownloadProgressRenderer. */ @Inject public DownloadProgressRenderer(ProgressBarDecorator progressBarDecorator) { super(progressBarDecorator); } @Override protected void updateProgress(Object value, int columnWidth) { if (value instanceof DownloadItem) { DownloadItem item = (DownloadItem) value; DownloadState state = item.getState(); progressBar.setValue(item.getPercentComplete()); progressBar.setVisible(columnWidth > resources.getProgressBarCutoffWidth() && (state == DownloadState.DOWNLOADING || state == DownloadState.PAUSED || state == DownloadState.SCANNING || state == DownloadState.SCANNING_FRAGMENT)); progressBar.setEnabled(state != DownloadState.PAUSED); } else { progressBar.setValue(0); progressBar.setVisible(false); progressBar.setEnabled(true); } } @Override protected void updateTime(Object value) { if (value instanceof DownloadItem) { DownloadItem item = (DownloadItem) value; DownloadState state = item.getState(); if (state == DownloadState.SCANNING) { timeLabel.setText(I18n.tr("Finalizing...")); timeLabel.setMinimumSize(timeLabel.getPreferredSize()); timeLabel.setVisible(true); } else if (state != DownloadState.DOWNLOADING || item.getRemainingDownloadTime() > Long.MAX_VALUE - 1000) { timeLabel.setVisible(false); } else { timeLabel.setText(I18n.tr("{0} left", CommonUtils.seconds2time(item .getRemainingDownloadTime()))); timeLabel.setMinimumSize(timeLabel.getPreferredSize()); timeLabel.setVisible(true); } } else { timeLabel.setVisible(false); } } }