Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(897)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/widget/selection/SelectionDelegate.java

Issue 2789363003: Implement single-selection mode for SelectionDelegate. (Closed)
Patch Set: Add test Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
}
}
-
}

Powered by Google App Engine
This is Rietveld 408576698