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

Side by Side Diff: chrome/android/java_staging/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkAddEditFolderActivity.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.content.Context;
8 import android.content.Intent;
9 import android.os.Bundle;
10 import android.text.Editable;
11 import android.text.TextWatcher;
12 import android.view.View;
13 import android.widget.Button;
14 import android.widget.EditText;
15 import android.widget.ImageButton;
16 import android.widget.TextView;
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.components.bookmarks.BookmarkId;
24
25 import java.util.ArrayList;
26 import java.util.List;
27
28 /**
29 * Activity that allows a user to add or edit a bookmark folder. This activity h as two modes: adding
30 * mode and editing mode. Depending on different modes, it should be started via two static creator
31 * functions.
32 */
33 public class EnhancedBookmarkAddEditFolderActivity extends EnhancedBookmarkActiv ityBase implements
34 View.OnClickListener {
35 static final String INTENT_IS_ADD_MODE = "EnhancedBookmarkAddEditFolderActiv ity.isAddMode";
36 static final String INTENT_BOOKMARK_ID = "EnhancedBookmarkAddEditFolderActiv ity.BookmarkId";
37 static final String
38 INTENT_CREATED_BOOKMARK = "EnhancedBookmarkAddEditFolderActivity.cre atedBookmark";
39 static final int PARENT_FOLDER_REQUEST_CODE = 10;
40
41 private boolean mIsAddMode;
42 private BookmarkId mParentId;
43 private EnhancedBookmarksModel mModel;
44 private TextView mParentTextView;
45 private EditText mFolderTitle;
46 private ImageButton mBackButton;
47 private ImageButton mSaveButton;
48
49 // Add mode member variable
50 private List<BookmarkId> mBookmarksToMove;
51
52 // Edit mode member variables
53 private BookmarkId mFolderId;
54 private Button mDeleteButton;
55
56 private BookmarkModelObserver mBookmarkModelObserver = new BookmarkModelObse rver() {
57 @Override
58 public void bookmarkModelChanged() {
59 if (mIsAddMode) {
60 if (mModel.doesBookmarkExist(mParentId)) updateParent(mParentId) ;
61 else updateParent(mModel.getDefaultFolder());
62 } else {
63 assert mModel.doesBookmarkExist(mFolderId);
64 updateParent(mModel.getBookmarkById(mFolderId).getParentId());
65 }
66 }
67
68 @Override
69 public void bookmarkNodeMoved(BookmarkItem oldParent, int oldIndex, Book markItem newParent,
70 int newIndex) {
71 if (!oldParent.getId().equals(newParent.getId())
72 && mModel.getChildAt(newParent.getId(), newIndex).equals(mFo lderId)) {
73 updateParent(newParent.getId());
74 }
75 }
76
77 @Override
78 public void bookmarkNodeRemoved(BookmarkItem parent, int oldIndex, Bookm arkItem node,
79 boolean isDoingExtensiveChanges) {
80 if (!node.getId().equals(mFolderId)) return;
81 finish();
82 }
83 };
84
85 /**
86 * Starts an edit folder activity. Require the context to fire an intent.
87 */
88 public static void startEditFolderActivity(Context context, BookmarkId idToE dit) {
89 Intent intent = new Intent(context, EnhancedBookmarkAddEditFolderActivit y.class);
90 intent.putExtra(INTENT_IS_ADD_MODE, false);
91 intent.putExtra(INTENT_BOOKMARK_ID, idToEdit.toString());
92 context.startActivity(intent);
93 }
94
95 /**
96 * Starts an add folder activity. This method should only be called by
97 * {@link EnhancedBookmarkFolderSelectActivity}.
98 */
99 public static void startAddFolderActivity(EnhancedBookmarkFolderSelectActivi ty activity,
100 List<BookmarkId> bookmarksToMove) {
101 assert bookmarksToMove.size() > 0;
102 Intent intent = new Intent(activity, EnhancedBookmarkAddEditFolderActivi ty.class);
103 intent.putExtra(INTENT_IS_ADD_MODE, true);
104 ArrayList<String> bookmarkStrings = new ArrayList<>(bookmarksToMove.size ());
105 for (BookmarkId id : bookmarksToMove) {
106 bookmarkStrings.add(id.toString());
107 }
108 intent.putStringArrayListExtra(
109 EnhancedBookmarkFolderSelectActivity.INTENT_BOOKMARKS_TO_MOVE, b ookmarkStrings);
110 activity.startActivityForResult(intent,
111 EnhancedBookmarkFolderSelectActivity.CREATE_FOLDER_REQUEST_CODE) ;
112 }
113
114 @Override
115 public void onCreate(Bundle savedInstanceState) {
116 super.onCreate(savedInstanceState);
117 EnhancedBookmarkUtils.setTaskDescriptionInDocumentMode(this,
118 getString(R.string.enhanced_bookmark_action_bar_edit_folder));
119 mModel = new EnhancedBookmarksModel();
120 mModel.addModelObserver(mBookmarkModelObserver);
121 mIsAddMode = getIntent().getBooleanExtra(INTENT_IS_ADD_MODE, false);
122 if (mIsAddMode) {
123 List<String> stringList = getIntent().getStringArrayListExtra(
124 EnhancedBookmarkFolderSelectActivity.INTENT_BOOKMARKS_TO_MOV E);
125 mBookmarksToMove = new ArrayList<>(stringList.size());
126 for (String string : stringList) {
127 mBookmarksToMove.add(BookmarkId.getBookmarkIdFromString(string)) ;
128 }
129 } else {
130 mFolderId = BookmarkId.getBookmarkIdFromString(
131 getIntent().getStringExtra(INTENT_BOOKMARK_ID));
132 }
133 setContentView(R.layout.eb_add_edit_folder_activity);
134 TextView dialogTitle = (TextView) findViewById(R.id.dialog_title);
135
136 mParentTextView = (TextView) findViewById(R.id.parent_folder);
137 mFolderTitle = (EditText) findViewById(R.id.folder_title);
138 clearErrorWhenNonEmpty(mFolderTitle);
139 mDeleteButton = (Button) findViewById(R.id.delete);
140 mBackButton = (ImageButton) findViewById(R.id.back);
141 mSaveButton = (ImageButton) findViewById(R.id.save);
142
143 mBackButton.setOnClickListener(this);
144 mSaveButton.setOnClickListener(this);
145 mParentTextView.setOnClickListener(this);
146 mDeleteButton.setOnClickListener(this);
147
148 if (mIsAddMode) {
149 mDeleteButton.setVisibility(View.GONE);
150 dialogTitle.setText(R.string.add_folder);
151 updateParent(mModel.getDefaultFolder());
152 } else {
153 // Edit mode
154 dialogTitle.setText(R.string.edit_folder);
155 BookmarkItem bookmarkItem = mModel.getBookmarkById(mFolderId);
156 updateParent(bookmarkItem.getParentId());
157 mFolderTitle.setText(bookmarkItem.getTitle());
158 }
159 mParentTextView.setText(mModel.getBookmarkTitle(mParentId));
160 }
161
162 @Override
163 public void onClick(View v) {
164 if (v == mParentTextView) {
165 if (mIsAddMode) {
166 EnhancedBookmarkFolderSelectActivity.startNewFolderSelectActivit y(this,
167 mBookmarksToMove);
168 } else {
169 EnhancedBookmarkFolderSelectActivity.startFolderSelectActivity(t his, mFolderId);
170 }
171 } else if (v == mSaveButton) {
172 String folderTitle = mFolderTitle.getText().toString();
173
174 if (folderTitle.isEmpty()) {
175 mFolderTitle.setError(getResources().getText(R.string.bookmark_m issing_title));
176 mFolderTitle.requestFocus();
177 return;
178 }
179
180 if (mIsAddMode) {
181 BookmarkId newFolder = mModel.addFolder(mParentId, 0, folderTitl e);
182 Intent intent = new Intent();
183 intent.putExtra(INTENT_CREATED_BOOKMARK, newFolder.toString());
184 setResult(RESULT_OK, intent);
185 } else {
186 mModel.setBookmarkTitle(mFolderId, folderTitle);
187 }
188 finish();
189 } else if (v == mBackButton) {
190 finish();
191 } else if (v == mDeleteButton) {
192 // When deleting, wait till the model has done its job and notify us via model observer,
193 // and then we finish this activity.
194 mModel.deleteBookmarks(mFolderId);
195 }
196 }
197
198 @Override
199 protected void onActivityResult(int requestCode, int resultCode, Intent data ) {
200 super.onActivityResult(requestCode, resultCode, data);
201 assert mIsAddMode;
202 if (requestCode == PARENT_FOLDER_REQUEST_CODE && resultCode == RESULT_OK ) {
203 BookmarkId selectedBookmark = BookmarkId.getBookmarkIdFromString(dat a.getStringExtra(
204 EnhancedBookmarkFolderSelectActivity.INTENT_SELECTED_FOLDER) );
205 updateParent(selectedBookmark);
206 }
207 }
208
209 @Override
210 protected void onDestroy() {
211 super.onDestroy();
212 mModel.removeModelObserver(mBookmarkModelObserver);
213 mModel.destroy();
214 mModel = null;
215 }
216
217 private void updateParent(BookmarkId newParent) {
218 mParentId = newParent;
219 mParentTextView.setText(mModel.getBookmarkTitle(mParentId));
220 }
221
222 /**
223 * Adds a listener to |textView| that will clear the TextView's error once t he user types
224 * something.
225 */
226 private static void clearErrorWhenNonEmpty(final TextView textView) {
227 textView.addTextChangedListener(new TextWatcher() {
228 @Override
229 public void afterTextChanged(Editable s) {
230 }
231
232 @Override
233 public void beforeTextChanged(CharSequence s, int start, int count, int after) {
234 }
235
236 @Override
237 public void onTextChanged(CharSequence s, int start, int before, int count) {
238 if (s.length() != 0) {
239 textView.setError(null);
240 }
241 }
242 });
243 }
244 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698