package org.limewire.ui.swing.library.table; import java.awt.event.ActionEvent; import java.io.File; import java.util.ArrayList; import java.util.List; import javax.swing.SwingUtilities; import org.limewire.core.api.library.LocalFileItem; import org.limewire.core.api.library.LocalFileList; import org.limewire.ui.swing.action.AbstractAction; import org.limewire.ui.swing.library.LibrarySelected; import org.limewire.ui.swing.player.PlayerUtils; import org.limewire.ui.swing.util.BackgroundExecutorService; import org.limewire.ui.swing.util.I18n; import com.google.inject.Inject; import com.google.inject.Provider; /** * Removes the selected items from the selected SharedList */ public class RemoveFromListAction extends AbstractAction { private final Provider<LocalFileList> selectedLocalFileList; private final Provider<List<LocalFileItem>> selectedLocalFileItems; @Inject public RemoveFromListAction(@LibrarySelected Provider<LocalFileList> selectedLocalFileList, @LibrarySelected Provider<List<LocalFileItem>> selectedLocalFileItems) { super(I18n.tr("Remove from List")); this.selectedLocalFileList = selectedLocalFileList; this.selectedLocalFileItems = selectedLocalFileItems; } @Override public void actionPerformed(ActionEvent e) { final File currentSong = PlayerUtils.getCurrentSongFile(); final List<LocalFileItem> items = new ArrayList<LocalFileItem>(selectedLocalFileItems.get()); BackgroundExecutorService.execute(new Runnable() { public void run() { LocalFileList localFileList = selectedLocalFileList.get(); for(LocalFileItem item : items) { if(item.getFile().equals(currentSong)){ SwingUtilities.invokeLater(new Runnable() { public void run() { PlayerUtils.stop(); } }); } if(!item.isIncomplete()) { localFileList.removeFile(item.getFile()); } } } }); } }