package org.limewire.ui.swing.upload.table;
import org.limewire.core.api.upload.UploadItem;
import org.limewire.core.api.upload.UploadListManager;
import org.limewire.core.api.upload.UploadState;
import org.limewire.ui.swing.library.LibraryMediator;
import org.limewire.ui.swing.player.PlayerUtils;
import org.limewire.ui.swing.properties.FileInfoDialogFactory;
import org.limewire.ui.swing.properties.FileInfoDialog.FileInfoType;
import org.limewire.ui.swing.util.NativeLaunchUtils;
public class UploadActionHandler {
public final static String PLAY_COMMAND = "play";
public final static String CANCEL_COMMAND = "cancel";
public final static String LIBRARY_COMMAND = "library";
public final static String LAUNCH_COMMAND = "launch";
public final static String REMOVE_COMMAND = "remove";
public final static String LOCATE_ON_DISK_COMMAND = "locate";
public final static String PROPERTIES_COMMAND = "properties";
private final UploadListManager uploadListManager;
private final FileInfoDialogFactory fileInfoFactory;
private final LibraryMediator libraryMediator;
public UploadActionHandler(UploadListManager uploadListManager, LibraryMediator libraryMediator,
FileInfoDialogFactory fileInfoFactory){
this.uploadListManager = uploadListManager;
this.libraryMediator = libraryMediator;
this.fileInfoFactory = fileInfoFactory;
}
public void performAction(final String actionCommmand, final UploadItem item){
if (actionCommmand == CANCEL_COMMAND) {
item.cancel();
//canceled upload items end up in the DONE state so they need to be manually removed.
if (item.getState() == UploadState.CANCELED || item.getState() == UploadState.DONE) {
uploadListManager.remove(item);
}
} else if (actionCommmand == LOCATE_ON_DISK_COMMAND){
NativeLaunchUtils.launchExplorer(item.getFile());
} else if (actionCommmand == PROPERTIES_COMMAND){
fileInfoFactory.createFileInfoDialog(item, FileInfoType.LOCAL_FILE);
} else if (actionCommmand == REMOVE_COMMAND){
uploadListManager.remove(item);
} else if (actionCommmand == LIBRARY_COMMAND){
libraryMediator.selectInLibrary(item.getFile());
} else if (actionCommmand == LAUNCH_COMMAND){
NativeLaunchUtils.safeLaunchFile(item.getFile());
} else if (actionCommmand == PLAY_COMMAND){
PlayerUtils.playOrLaunch(item.getFile());
}
}
}