package org.limewire.ui.swing.library.table; import java.awt.Component; import java.awt.Point; import java.util.Collections; import java.util.List; import org.limewire.core.api.library.LocalFileItem; import org.limewire.ui.swing.table.TablePopupHandler; import com.google.inject.Provider; class LibraryPopupHandler implements TablePopupHandler { private final LibraryTable libraryTable; private final Provider<LibraryPopupMenu> popupMenu; public LibraryPopupHandler(LibraryTable libraryTab, Provider<LibraryPopupMenu> popupMenu) { this.libraryTable = libraryTab; this.popupMenu = popupMenu; } @Override public boolean isPopupShowing(int row) { return false; } @Override public void maybeShowPopup(Component component, int x, int y) { int popupRow = libraryTable.rowAtPoint(new Point(x, y)); if(popupRow < 0) return; LocalFileItem selectedItem = (LocalFileItem) libraryTable.getModel().getValueAt(popupRow, 0); List<LocalFileItem> selectedItems = Collections.unmodifiableList(libraryTable.getSelection()); if(selectedItems.size() <= 1 || !selectedItems.contains(selectedItem)) { libraryTable.setRowSelectionInterval(popupRow, popupRow); } popupMenu.get().show(component, x, y); } }