package org.limewire.ui.swing.library.table;
import java.io.File;
import java.util.List;
import javax.swing.JMenu;
import org.limewire.core.api.library.LibraryManager;
import org.limewire.core.api.library.LocalFileList;
import org.limewire.core.api.library.SharedFileListManager;
import org.limewire.ui.swing.library.LibraryPanel;
import com.google.inject.Inject;
import com.google.inject.Provider;
/**
* Factory class to create menus to work with lists.
*/
public class ListMenuFactory {
private final SharedFileListManager sharedFileListManager;
private final LibraryManager libraryManager;
private final LibraryPanel libraryPanel;
/**
* Constructs a ListMenuFactory.
*/
@Inject
public ListMenuFactory(SharedFileListManager sharedFileListManager,
LibraryManager libraryManager, LibraryPanel libraryPanel) {
this.sharedFileListManager = sharedFileListManager;
this.libraryManager = libraryManager;
this.libraryPanel = libraryPanel;
}
/**
* Creates an "Add to List" menu for the specified list of selected files.
*/
public JMenu createAddToListMenu(Provider<List<File>> selectedFiles) {
AddToListMenu menu = new AddToListMenu(selectedFiles);
menu.initialize(sharedFileListManager);
return menu;
}
/**
* Creates a "Show in List" menu for the specified list of selected files.
*/
public JMenu createShowInListMenu(Provider<List<File>> selectedFiles, boolean showLibrary) {
ShowInListMenu menu = new ShowInListMenu(selectedFiles);
menu.initialize(sharedFileListManager, libraryManager, libraryPanel, showLibrary);
return menu;
}
/**
* Creates a "Show in List" menu for the specified list of selected files
* and local file list.
*/
public JMenu createShowInListMenu(Provider<List<File>> selectedFiles,
Provider<LocalFileList> selectedLocalFileList, boolean showLibrary) {
ShowInListMenu menu = new ShowInListMenu(selectedFiles, selectedLocalFileList);
menu.initialize(sharedFileListManager, libraryManager, libraryPanel, showLibrary);
return menu;
}
}