Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/widget/selection/SelectionDelegate.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/widget/selection/SelectionDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/widget/selection/SelectionDelegate.java |
| index d718fc7c2822c9714275a5fb6025701ed60e5838..c6380c4917fe0787147e40c23f84f6ff109a865d 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/widget/selection/SelectionDelegate.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/widget/selection/SelectionDelegate.java |
| @@ -16,6 +16,8 @@ import java.util.Set; |
| * @param <E> The type of the selectable items this delegate interacts with. |
| */ |
| public class SelectionDelegate<E> { |
| + // True if the SelectionDelegate should only support a single item being selected at a time. |
| + private boolean mSingleSelection; |
|
Theresa
2017/04/04 16:36:40
nit: mIsSingleSelection
|
| /** |
| * Observer interface to be notified of selection changes. |
| @@ -26,20 +28,31 @@ public class SelectionDelegate<E> { |
| * @param selectedItems The list of currently selected items. An empty list indicates there |
| * is no selection. |
| */ |
| - public void onSelectionStateChange(List<E> selectedItems); |
| + void onSelectionStateChange(List<E> selectedItems); |
| } |
| private Set<E> mSelectedItems = new HashSet<>(); |
| private ObserverList<SelectionObserver<E>> mObservers = new ObserverList<>(); |
| /** |
| + * Sets the mode of this SelectionDelegate to single-selection. |
| + */ |
| + public void setSingleSelectionMode() { |
| + mSingleSelection = true; |
| + } |
| + |
| + /** |
| * Toggles the selected state for the given item. |
| * @param item The item to toggle. |
| * @return Whether the item is selected. |
| */ |
| public boolean toggleSelectionForItem(E item) { |
| - if (mSelectedItems.contains(item)) mSelectedItems.remove(item); |
| - else mSelectedItems.add(item); |
| + if (mSelectedItems.contains(item)) { |
| + mSelectedItems.remove(item); |
| + } else { |
| + if (mSingleSelection) mSelectedItems.clear(); |
| + mSelectedItems.add(item); |
| + } |
| notifyObservers(); |
| @@ -99,5 +112,4 @@ public class SelectionDelegate<E> { |
| observer.onSelectionStateChange(selectedItems); |
| } |
| } |
| - |
| } |