package org.limewire.ui.swing.images; import java.awt.Component; import java.awt.Point; import java.util.ArrayList; import java.util.List; import org.limewire.core.api.library.LocalFileItem; import org.limewire.ui.swing.library.table.LibraryPopupMenu; import org.limewire.ui.swing.table.TablePopupHandler; import com.google.inject.Provider; class ImagePopupHandler implements TablePopupHandler { private final ImageList imageList; private final Provider<LibraryPopupMenu> popupMenu; public ImagePopupHandler(ImageList imageList, Provider<LibraryPopupMenu> popupMenu) { this.imageList = imageList; this.popupMenu = popupMenu; } @Override public boolean isPopupShowing(int row) { return false; } @Override public void maybeShowPopup(Component component, int x, int y) { int popupRow = imageList.locationToIndex(new Point(x, y)); if(popupRow < 0) return; LocalFileItem selectedItem = (LocalFileItem) imageList.getModel().getElementAt(popupRow); List<LocalFileItem> selectedItems = new ArrayList<LocalFileItem>(imageList.getSelectedItems()); if (selectedItems.size() <= 1 || !selectedItems.contains(selectedItem)) { selectedItems.clear(); imageList.setSelectedIndex(popupRow); } popupMenu.get().show(component, x, y); } }