OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.chrome.browser.ntp.cards; | 5 package org.chromium.chrome.browser.ntp.cards; |
6 | 6 |
7 import android.support.annotation.CallSuper; | 7 import android.support.annotation.CallSuper; |
8 | 8 |
9 import org.chromium.base.Callback; | 9 import org.chromium.base.Callback; |
10 import org.chromium.chrome.browser.ntp.snippets.SnippetArticle; | |
11 | 10 |
12 import java.util.Collections; | 11 import java.util.Collections; |
13 import java.util.Set; | 12 import java.util.Set; |
14 | 13 |
15 /** | 14 /** |
16 * An optional leaf (i.e. single item) in the tree. Depending on its internal st
ate (see | 15 * An optional leaf (i.e. single item) in the tree. Depending on its internal st
ate (see |
17 * {@link #isVisible()}), the item will be present or absent from the tree, by m
anipulating the | 16 * {@link #isVisible()}), the item will be present or absent from the tree, by m
anipulating the |
18 * values returned from {@link ChildNode} methods. This allows the parent node t
o not have to add or | 17 * values returned from {@link ChildNode} methods. This allows the parent node t
o not have to add or |
19 * remove the optional leaf from its children manually. | 18 * remove the optional leaf from its children manually. |
20 * | 19 * |
(...skipping 13 matching lines...) Expand all Loading... |
34 return getItemViewType(); | 33 return getItemViewType(); |
35 } | 34 } |
36 | 35 |
37 @Override | 36 @Override |
38 public void onBindViewHolder(NewTabPageViewHolder holder, int position) { | 37 public void onBindViewHolder(NewTabPageViewHolder holder, int position) { |
39 checkIndex(position); | 38 checkIndex(position); |
40 onBindViewHolder(holder); | 39 onBindViewHolder(holder); |
41 } | 40 } |
42 | 41 |
43 @Override | 42 @Override |
44 public SnippetArticle getSuggestionAt(int position) { | |
45 checkIndex(position); | |
46 return null; | |
47 } | |
48 | |
49 @Override | |
50 public Set<Integer> getItemDismissalGroup(int position) { | 43 public Set<Integer> getItemDismissalGroup(int position) { |
51 checkIndex(position); | 44 checkIndex(position); |
52 return canBeDismissed() ? Collections.singleton(0) : Collections.<Intege
r>emptySet(); | 45 return canBeDismissed() ? Collections.singleton(0) : Collections.<Intege
r>emptySet(); |
53 } | 46 } |
54 | 47 |
55 @Override | 48 @Override |
56 public void dismissItem(int position, Callback<String> itemRemovedCallback)
{ | 49 public void dismissItem(int position, Callback<String> itemRemovedCallback)
{ |
57 checkIndex(position); | 50 checkIndex(position); |
58 dismiss(itemRemovedCallback); | 51 dismiss(itemRemovedCallback); |
59 } | 52 } |
60 | 53 |
| 54 @Override |
| 55 public final void visitItems(NodeVisitor visitor) { |
| 56 if (mVisible) visitOptionalItem(visitor); |
| 57 } |
| 58 |
61 /** @return Whether the optional item is currently visible. */ | 59 /** @return Whether the optional item is currently visible. */ |
62 public final boolean isVisible() { | 60 public final boolean isVisible() { |
63 return mVisible; | 61 return mVisible; |
64 } | 62 } |
65 | 63 |
66 /** | 64 /** |
67 * Notifies the parents in the tree about whether the visibility of this lea
f changed. Call this | 65 * Notifies the parents in the tree about whether the visibility of this lea
f changed. Call this |
68 * after a data change that could affect the return value of {@link #isVisib
le()}. The leaf is | 66 * after a data change that could affect the return value of {@link #isVisib
le()}. The leaf is |
69 * initially considered hidden. | 67 * initially considered hidden. |
70 */ | 68 */ |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 /** | 103 /** |
106 * Dismiss this item. The default implementation asserts, as by default item
s can't be | 104 * Dismiss this item. The default implementation asserts, as by default item
s can't be |
107 * dismissed. | 105 * dismissed. |
108 * @param itemRemovedCallback Should be called with the title of the dismiss
ed item, to announce | 106 * @param itemRemovedCallback Should be called with the title of the dismiss
ed item, to announce |
109 * it for accessibility purposes. | 107 * it for accessibility purposes. |
110 * @see TreeNode#dismissItem | 108 * @see TreeNode#dismissItem |
111 */ | 109 */ |
112 protected void dismiss(Callback<String> itemRemovedCallback) { | 110 protected void dismiss(Callback<String> itemRemovedCallback) { |
113 assert false; | 111 assert false; |
114 } | 112 } |
| 113 |
| 114 /** |
| 115 * Visits this item. This method is called iff the optional item is currentl
y visible. |
| 116 * @param visitor The visitor with which to visit this item. |
| 117 */ |
| 118 protected abstract void visitOptionalItem(NodeVisitor visitor); |
115 } | 119 } |
OLD | NEW |