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

Side by Side Diff: chrome/android/java_staging/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkActionBar.java

Issue 1141283003: Upstream oodles of Chrome for Android code into Chromium. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: final patch? Created 5 years, 7 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.chrome.browser.enhancedbookmarks;
6
7 import android.app.Activity;
8 import android.content.Context;
9 import android.support.v7.app.ActionBarDrawerToggle;
10 import android.support.v7.widget.Toolbar;
11 import android.support.v7.widget.Toolbar.OnMenuItemClickListener;
12 import android.text.TextUtils;
13 import android.util.AttributeSet;
14 import android.view.MenuItem;
15 import android.view.View;
16 import android.view.View.OnClickListener;
17
18 import com.google.android.apps.chrome.R;
19
20 import org.chromium.chrome.browser.BookmarksBridge.BookmarkItem;
21 import org.chromium.chrome.browser.BookmarksBridge.BookmarkModelObserver;
22 import org.chromium.chrome.browser.enhanced_bookmarks.EnhancedBookmarksModel;
23 import org.chromium.chrome.browser.widget.NumberRollView;
24 import org.chromium.components.bookmarks.BookmarkId;
25 import org.chromium.components.bookmarks.BookmarkType;
26 import org.chromium.ui.base.DeviceFormFactor;
27
28 import java.util.List;
29
30 /**
31 * Main action bar of Enhanced Bookmark UI. It is responsible for displaying tit le and buttons
32 * associated with the current context.
33 */
34 public class EnhancedBookmarkActionBar extends Toolbar implements EnhancedBookma rkUIObserver,
35 OnMenuItemClickListener, OnClickListener {
36 private static final int NAVIGATION_BUTTON_NONE = 0;
37 private static final int NAVIGATION_BUTTON_MENU = 1;
38 private static final int NAVIGATION_BUTTON_BACK = 2;
39 private static final int NAVIGATION_BUTTON_SELECTION_BACK = 3;
40
41 private int mNavigationButton;
42 private BookmarkItem mCurrentFolder;
43 private EnhancedBookmarkDelegate mDelegate;
44 private ActionBarDrawerToggle mActionBarDrawerToggle;
45 private boolean mIsSelectionEnabled;
46
47 private BookmarkModelObserver mBookmarkModelObserver = new BookmarkModelObse rver() {
48 @Override
49 public void bookmarkModelChanged() {
50 onSelectionStateChange(mDelegate.getSelectedBookmarks());
51 }
52 };
53
54 public EnhancedBookmarkActionBar(Context context, AttributeSet attrs) {
55 super(context, attrs);
56 setNavigationOnClickListener(this);
57 inflateMenu(R.menu.eb_action_bar_menu);
58 if (DeviceFormFactor.isTablet(context)) getMenu().removeItem(R.id.close_ menu_id);
59 setOnMenuItemClickListener(this);
60 }
61
62 @Override
63 public void onClick(View view) {
64 switch (mNavigationButton) {
65 case NAVIGATION_BUTTON_NONE:
66 break;
67 case NAVIGATION_BUTTON_MENU:
68 // ActionBarDrawerToggle handles this.
69 break;
70 case NAVIGATION_BUTTON_BACK:
71 mDelegate.openFolder(mCurrentFolder.getParentId());
72 break;
73 case NAVIGATION_BUTTON_SELECTION_BACK:
74 mDelegate.clearSelection();
75 break;
76 default:
77 assert false : "Incorrect navigation button state";
78 }
79 }
80
81 @Override
82 public boolean onMenuItemClick(MenuItem menuItem) {
83 EnhancedBookmarksModel model = mDelegate.getModel();
84 if (menuItem.getItemId() == R.id.edit_menu_id) {
85 EnhancedBookmarkAddEditFolderActivity.startEditFolderActivity(getCon text(),
86 mCurrentFolder.getId());
87 } else if (menuItem.getItemId() == R.id.list_toggle_menu_id) {
88 mDelegate.setListModeEnabled(!mDelegate.isListModeEnabled());
89 return true;
90 } else if (menuItem.getItemId() == R.id.search_menu_id) {
91 mDelegate.openSearchUI();
92 return true;
93 } else if (menuItem.getItemId() == R.id.close_menu_id) {
94 mDelegate.finishActivityOnPhone();
95 return true;
96 } else if (menuItem.getItemId() == R.id.selection_mode_edit_menu_id) {
97 List<BookmarkId> list = mDelegate.getSelectedBookmarks();
98 assert list.size() == 1;
99 BookmarkItem item = model.getBookmarkById(list.get(0));
100 if (item.isFolder()) {
101 EnhancedBookmarkAddEditFolderActivity.startEditFolderActivity(ge tContext(),
102 item.getId());
103 } else {
104 mDelegate.startDetailActivity(item.getId(), null);
105 }
106 return true;
107 } else if (menuItem.getItemId() == R.id.selection_mode_move_menu_id) {
108 List<BookmarkId> list = mDelegate.getSelectedBookmarks();
109 if (list.size() >= 1) {
110 EnhancedBookmarkFolderSelectActivity.startFolderSelectActivity(g etContext(),
111 list.toArray(new BookmarkId[list.size()]));
112 }
113 return true;
114 } else if (menuItem.getItemId() == R.id.selection_mode_delete_menu_id) {
115 mDelegate.getModel().deleteBookmarks(
116 mDelegate.getSelectedBookmarks().toArray(new BookmarkId[0])) ;
117 return true;
118 }
119
120 assert false : "Unhandled menu click.";
121 return false;
122 }
123
124 /**
125 * Update the current navigation button (the top-left icon on LTR)
126 * @param navigationButton one of NAVIGATION_BUTTON_* constants.
127 */
128 private void setNavigationButton(int navigationButton) {
129 int iconResId = 0;
130 int contentDescriptionId = 0;
131
132 if (navigationButton == NAVIGATION_BUTTON_MENU && !mDelegate.doesDrawerE xist()) {
133 mNavigationButton = NAVIGATION_BUTTON_NONE;
134 } else {
135 mNavigationButton = navigationButton;
136 }
137
138 if (mNavigationButton == NAVIGATION_BUTTON_MENU) {
139 initActionBarDrawerToggle();
140 // ActionBarDrawerToggle will take care of icon and content descript ion, so just return.
141 return;
142 }
143
144 if (mActionBarDrawerToggle != null) {
145 mActionBarDrawerToggle.setDrawerIndicatorEnabled(false);
146 mDelegate.getDrawerLayout().setDrawerListener(null);
147 }
148
149 setNavigationOnClickListener(this);
150
151 switch (mNavigationButton) {
152 case NAVIGATION_BUTTON_NONE:
153 break;
154 case NAVIGATION_BUTTON_BACK:
155 iconResId = R.drawable.eb_back_normal;
156 contentDescriptionId = R.string.accessibility_toolbar_btn_back;
157 break;
158 case NAVIGATION_BUTTON_SELECTION_BACK:
159 iconResId = R.drawable.eb_cancel_active;
160 contentDescriptionId = R.string.accessibility_enhanced_bookmark_ cancel_selection;
161 break;
162 default:
163 assert false : "Incorrect navigationButton argument";
164 }
165
166 if (iconResId == 0) {
167 setNavigationIcon(null);
168 } else {
169 setNavigationIcon(iconResId);
170 }
171 setNavigationContentDescription(contentDescriptionId);
172 }
173
174 /**
175 * Set up ActionBarDrawerToggle, a.k.a. hamburger button.
176 */
177 private void initActionBarDrawerToggle() {
178 // Sadly, the only way to set correct toolbar button listener for Action BarDrawerToggle
179 // is constructing, so we will need to construct every time we re-show t his button.
180 mActionBarDrawerToggle = new ActionBarDrawerToggle((Activity) getContext (),
181 mDelegate.getDrawerLayout(), this,
182 R.string.accessibility_enhanced_bookmark_drawer_toggle_btn_open,
183 R.string.accessibility_enhanced_bookmark_drawer_toggle_btn_close );
184 mDelegate.getDrawerLayout().setDrawerListener(mActionBarDrawerToggle);
185 mActionBarDrawerToggle.syncState();
186 }
187
188 void showLoadingUi() {
189 setTitle(null);
190 setNavigationButton(NAVIGATION_BUTTON_NONE);
191 getMenu().findItem(R.id.search_menu_id).setVisible(false);
192 getMenu().findItem(R.id.edit_menu_id).setVisible(false);
193 getMenu().findItem(R.id.list_toggle_menu_id).setVisible(false);
194 }
195
196 // EnhancedBookmarkUIObserver implementations.
197
198 @Override
199 public void onEnhancedBookmarkDelegateInitialized(EnhancedBookmarkDelegate d elegate) {
200 mDelegate = delegate;
201 mDelegate.addUIObserver(this);
202 delegate.getModel().addModelObserver(mBookmarkModelObserver);
203 getMenu().findItem(R.id.list_toggle_menu_id).setVisible(true);
204 }
205
206 @Override
207 public void onDestroy() {
208 mDelegate.removeUIObserver(this);
209 mDelegate.getModel().removeModelObserver(mBookmarkModelObserver);
210 }
211
212 @Override
213 public void onAllBookmarksStateSet() {
214 setTitle(R.string.enhanced_bookmark_title_bar_all_items);
215 setNavigationButton(NAVIGATION_BUTTON_MENU);
216 getMenu().findItem(R.id.search_menu_id).setVisible(true);
217 getMenu().findItem(R.id.edit_menu_id).setVisible(false);
218 }
219
220 @Override
221 public void onFolderStateSet(BookmarkId folder) {
222 mCurrentFolder = mDelegate.getModel().getBookmarkById(folder);
223
224 getMenu().findItem(R.id.search_menu_id).setVisible(false);
225 getMenu().findItem(R.id.edit_menu_id).setVisible(mCurrentFolder.isEditab le());
226
227 // If the parent folder is a top level node, we don't go up anymore.
228 if (mDelegate.getModel().getTopLevelFolderParentIDs().contains(
229 mCurrentFolder.getParentId())) {
230 if (TextUtils.isEmpty(mCurrentFolder.getTitle())) {
231 setTitle(R.string.enhanced_bookmark_title_bar_all_items);
232 } else {
233 setTitle(mCurrentFolder.getTitle());
234 }
235 setNavigationButton(NAVIGATION_BUTTON_MENU);
236 } else {
237 setTitle(mCurrentFolder.getTitle());
238 setNavigationButton(NAVIGATION_BUTTON_BACK);
239 }
240 }
241
242 @Override
243 public void onSelectionStateChange(List<BookmarkId> selectedBookmarks) {
244 boolean wasSelectionEnabled = mIsSelectionEnabled;
245 mIsSelectionEnabled = mDelegate.isSelectionEnabled();
246 NumberRollView numberRollView = (NumberRollView) findViewById(R.id.selec tion_mode_number);
247 if (mIsSelectionEnabled) {
248 setNavigationButton(NAVIGATION_BUTTON_SELECTION_BACK);
249 setTitle(null);
250
251 getMenu().setGroupVisible(R.id.normal_menu_group, false);
252 getMenu().setGroupVisible(R.id.selection_mode_menu_group, true);
253 // Editing a bookmark action on multiple selected items doesn't make sense. So disable.
254 getMenu().findItem(R.id.selection_mode_edit_menu_id).setVisible(
255 selectedBookmarks.size() == 1);
256 // Partner bookmarks can't move, so if the selection includes a part ner bookmark,
257 // disable the move button.
258 for (BookmarkId bookmark : selectedBookmarks) {
259 if (bookmark.getType() == BookmarkType.PARTNER) {
260 getMenu().findItem(R.id.selection_mode_move_menu_id).setVisi ble(false);
261 break;
262 }
263 }
264
265 setBackgroundColor(getResources().getColor(
266 R.color.enhanced_bookmark_selection_action_bar_background));
267
268 numberRollView.setVisibility(View.VISIBLE);
269 if (!wasSelectionEnabled) numberRollView.setNumber(0, false);
270 numberRollView.setNumber(selectedBookmarks.size(), true);
271 } else {
272 getMenu().setGroupVisible(R.id.normal_menu_group, true);
273 getMenu().setGroupVisible(R.id.selection_mode_menu_group, false);
274 setBackgroundColor(getResources().getColor(R.color.default_primary_c olor));
275
276 numberRollView.setVisibility(View.GONE);
277 numberRollView.setNumber(0, false);
278
279 mDelegate.notifyStateChange(this);
280 }
281 }
282
283 @Override
284 public void onFilterStateSet(String filter) {
285 setTitle(filter);
286 setNavigationButton(NAVIGATION_BUTTON_MENU);
287 getMenu().findItem(R.id.search_menu_id).setVisible(false);
288 getMenu().findItem(R.id.edit_menu_id).setVisible(false);
289 }
290
291 @Override
292 public void onListModeChange(boolean isListModeEnabled) {
293 MenuItem menuItem = getMenu().findItem(R.id.list_toggle_menu_id);
294 menuItem.getIcon().setLevel(isListModeEnabled ? 1 : 0);
295 }
296 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698