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..1e8afe05ab0ae4920eaa0cb740af7371d774b08b 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; |
| /** |
| * Observer interface to be notified of selection changes. |
| @@ -32,14 +34,25 @@ public class SelectionDelegate<E> { |
| private Set<E> mSelectedItems = new HashSet<>(); |
|
Michael van Ouwerkerk
2017/04/04 13:54:31
Should we document that E must have a meaningful e
Finnur
2017/04/04 16:13:35
Ditto.
|
| private ObserverList<SelectionObserver<E>> mObservers = new ObserverList<>(); |
| + /* |
|
Michael van Ouwerkerk
2017/04/04 13:54:31
nit: /** for JavaDoc
Finnur
2017/04/04 16:13:35
Done.
|
| + * 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); |
| } |
| } |
| - |
| } |