package org.limewire.ui.swing.menu; import java.awt.event.ActionEvent; import org.limewire.collection.glazedlists.GlazedListsFactory; import org.limewire.core.api.download.DownloadItem; import org.limewire.core.api.download.DownloadState; import org.limewire.ui.swing.action.AbstractAction; import org.limewire.ui.swing.downloads.DownloadMediator; import org.limewire.ui.swing.downloads.table.DownloadStateMatcher; import org.limewire.ui.swing.util.I18n; import ca.odell.glazedlists.EventList; import ca.odell.glazedlists.event.ListEvent; import ca.odell.glazedlists.event.ListEventListener; import com.google.inject.Inject; class FixStalledDownloadsAction extends AbstractAction { private final DownloadMediator downloadMediator; @Inject public FixStalledDownloadsAction(DownloadMediator downloadMediator) { super(I18n.tr("Fix Stalled Downloads")); this.downloadMediator = downloadMediator; } @Inject public void register(DownloadMediator downloadMediator) { EventList<DownloadItem> stalledList = GlazedListsFactory.filterList(downloadMediator.getDownloadList(), new DownloadStateMatcher(DownloadState.STALLED)); stalledList.addListEventListener(new ListEventListener<DownloadItem>() { @Override public void listChanged(ListEvent<DownloadItem> listChanges) { setEnabled(listChanges.getSourceList().size() != 0); } }); setEnabled(stalledList.size() != 0); } @Override public void actionPerformed(ActionEvent e) { downloadMediator.fixStalled(); } }