package org.limewire.ui.swing.menu;
import java.awt.event.ActionEvent;
import org.limewire.core.api.library.SharedFileList;
import org.limewire.core.api.library.SharedFileListManager;
import org.limewire.friend.api.FriendConnection;
import org.limewire.friend.api.FriendConnectionEvent;
import org.limewire.listener.EventBean;
import org.limewire.listener.EventUtils;
import org.limewire.ui.swing.action.AbstractAction;
import org.limewire.ui.swing.library.LibraryMediator;
import org.limewire.ui.swing.library.navigator.CreateListAction;
import org.limewire.ui.swing.util.I18n;
import com.google.inject.Inject;
import com.google.inject.Provider;
public class ShareListMenu extends DelayedMnemonicMenu {
private final EventBean<FriendConnectionEvent> friendConnectionEventBean;
private final Provider<SharedFileListManager> shareListManagerProvider;
private final Provider<CreateListAction> createListActionProvider;
private final Provider<LibraryMediator> libraryMediatorProvider;
@Inject
public ShareListMenu(EventBean<FriendConnectionEvent> friendConnectionEventBean,
Provider<SharedFileListManager> shareListManagerProvider,
Provider<CreateListAction> createListActionProvider,
Provider<LibraryMediator> libraryMediatorProvider) {
super(I18n.tr("&Share List"));
this.friendConnectionEventBean = friendConnectionEventBean;
this.shareListManagerProvider = shareListManagerProvider;
this.createListActionProvider = createListActionProvider;
this.libraryMediatorProvider = libraryMediatorProvider;
createMenuItems();
}
@Override
public void createMenuItems() {
FriendConnection friendConnection = EventUtils.getSource(friendConnectionEventBean);
if (friendConnection != null && friendConnection.isLoggedIn()) {
for ( final SharedFileList list : shareListManagerProvider.get().getModel() ) {
if (!list.isPublic()) {
add(new AbstractAction(I18n.tr(list.getCollectionName())) {
@Override
public void actionPerformed(ActionEvent e) {
libraryMediatorProvider.get().showSharedFileList(list, true);
}
});
}
}
addSeparator();
add(createListActionProvider.get());
}
else {
setEnabled(false);
}
}
}