package org.limewire.ui.swing.upload.table;
import javax.swing.JDialog;
import org.limewire.core.api.upload.UploadItem;
import org.limewire.ui.swing.library.LibraryMediator;
import org.limewire.ui.swing.player.PlayerMediator;
import org.limewire.ui.swing.properties.FileInfoDialogFactory;
import org.limewire.ui.swing.properties.FileInfoDialog.FileInfoType;
import org.limewire.ui.swing.upload.UploadMediator;
import org.limewire.ui.swing.util.NativeLaunchUtils;
import com.google.inject.Inject;
import com.google.inject.Provider;
/**
* Controller for user-initiated actions on an upload item.
*/
class UploadActionHandler {
public final static String PLAY_COMMAND = "play";
public final static String PAUSE_COMMAND = "pause";
public final static String RESUME_COMMAND = "resume";
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 UploadMediator uploadMediator;
private final FileInfoDialogFactory fileInfoFactory;
private final LibraryMediator libraryMediator;
private final Provider<PlayerMediator> playerMediator;
@Inject UploadActionHandler(UploadMediator uploadMediator,
LibraryMediator libraryMediator,
FileInfoDialogFactory fileInfoFactory,
Provider<PlayerMediator> playerMediator) {
this.uploadMediator = uploadMediator;
this.libraryMediator = libraryMediator;
this.fileInfoFactory = fileInfoFactory;
this.playerMediator = playerMediator;
}
public void performAction(final String actionCommmand, final UploadItem item){
if (actionCommmand == CANCEL_COMMAND) {
uploadMediator.cancel(item, true);
} else if (actionCommmand == LOCATE_ON_DISK_COMMAND){
NativeLaunchUtils.launchExplorer(item.getFile());
} else if (actionCommmand == PROPERTIES_COMMAND){
JDialog dialog = fileInfoFactory.createFileInfoDialog(item, FileInfoType.UPLOADING_FILE);
dialog.setVisible(true);
} else if (actionCommmand == REMOVE_COMMAND){
uploadMediator.remove(item);
} else if (actionCommmand == LIBRARY_COMMAND){
libraryMediator.selectInLibrary(item.getFile());
} else if (actionCommmand == LAUNCH_COMMAND){
playerMediator.get().playOrLaunchNatively(item.getFile());
} else if (actionCommmand == PLAY_COMMAND){
playerMediator.get().playOrLaunchNatively(item.getFile());
} else if (actionCommmand == PAUSE_COMMAND) {
item.pause();
} else if (actionCommmand == RESUME_COMMAND) {
item.resume();
}
}
}