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..03f0b031f5be7f12da1a7da1bd469ebb72abe8d4 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 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() { |
+ mIsSingleSelection = 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 (mIsSingleSelection) mSelectedItems.clear(); |
+ mSelectedItems.add(item); |
+ } |
notifyObservers(); |
@@ -99,5 +112,4 @@ public class SelectionDelegate<E> { |
observer.onSelectionStateChange(selectedItems); |
} |
} |
- |
} |