Index: chrome/android/java_staging/src/org/chromium/chrome/browser/bookmark/EditBookmarkHelper.java |
diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/bookmark/EditBookmarkHelper.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/bookmark/EditBookmarkHelper.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0a9cba203eec3aa0b196d8555503a2f11040f884 |
--- /dev/null |
+++ b/chrome/android/java_staging/src/org/chromium/chrome/browser/bookmark/EditBookmarkHelper.java |
@@ -0,0 +1,113 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+package org.chromium.chrome.browser.bookmark; |
+ |
+import android.app.Activity; |
+import android.app.AlertDialog; |
+import android.content.Context; |
+import android.content.DialogInterface; |
+import android.content.Intent; |
+import android.text.Editable; |
+import android.text.TextUtils; |
+import android.text.TextWatcher; |
+import android.view.LayoutInflater; |
+import android.view.View; |
+import android.widget.EditText; |
+import android.widget.TextView; |
+ |
+import com.google.android.apps.chrome.R; |
+ |
+import org.chromium.chrome.browser.profiles.Profile; |
+import org.chromium.ui.UiUtils; |
+ |
+/** |
+ * A helper for editing bookmarks. |
+*/ |
+public class EditBookmarkHelper { |
+ /** |
+ * Opens the standard "edit bookmark" dialog. |
+ * @param bookmarkId ID of the bookmark to be edited |
+ * @param isFolder True if it is a folder |
+ */ |
+ public static void editBookmark(Context context, long bookmarkId, boolean isFolder) { |
+ Intent intent = new Intent(context, ManageBookmarkActivity.class); |
+ if (!(context instanceof Activity)) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
+ intent.putExtra(ManageBookmarkActivity.BOOKMARK_INTENT_IS_FOLDER, isFolder); |
+ intent.putExtra(ManageBookmarkActivity.BOOKMARK_INTENT_ID, bookmarkId); |
+ context.startActivity(intent); |
+ } |
+ |
+ /** |
+ * Opens an "edit bookmark" dialog for a partner bookmark. |
+ * @param bookmarkId ID of the bookmark to be edited |
+ * @param oldTitle Old title of the bookmark |
+ * @param isFolder True if it is a folder |
+ */ |
+ public static void editPartnerBookmark(Context context, final Profile profile, |
+ final long bookmarkId, String oldTitle, boolean isFolder) { |
+ // TODO(aruslan): http://crbug.com/313853 |
+ View view = ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)) |
+ .inflate(R.layout.single_line_edit_dialog, null); |
+ AlertDialog.Builder builder = new AlertDialog.Builder(context) |
+ .setTitle(isFolder ? R.string.edit_folder : R.string.edit_bookmark) |
+ .setNegativeButton(R.string.cancel, |
+ new DialogInterface.OnClickListener() { |
+ @Override |
+ public void onClick(DialogInterface dialog, int id) { |
+ dialog.dismiss(); |
+ } |
+ }); |
+ final AlertDialog dialog = builder.create(); |
+ |
+ // On click of "Save", changes are committed. |
+ // Default title is the title of the bookmark. |
+ // OK button is disabled if the title text is empty. |
+ TextView titleLabel = (TextView) view.findViewById(R.id.title); |
+ final EditText input = (EditText) view.findViewById(R.id.text); |
+ titleLabel.setText(R.string.bookmark_name); |
+ input.setText(oldTitle); |
+ input.setSelection(0, oldTitle.length()); |
+ input.requestFocus(); |
+ input.post(new Runnable() { |
+ @Override |
+ public void run() { |
+ UiUtils.showKeyboard(input); |
+ } |
+ }); |
+ input.addTextChangedListener(new TextWatcher() { |
+ @Override |
+ public void onTextChanged(CharSequence s, int start, int before, int count) { |
+ } |
+ |
+ @Override |
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) { |
+ } |
+ |
+ @Override |
+ public void afterTextChanged(Editable editableText) { |
+ if (TextUtils.isEmpty(editableText)) { |
+ dialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(false); |
+ } else { |
+ dialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(true); |
+ } |
+ } |
+ }); |
+ dialog.setView(view); |
+ dialog.setButton(DialogInterface.BUTTON_POSITIVE, |
+ context.getResources().getString(R.string.save), |
+ new DialogInterface.OnClickListener() { |
+ @Override |
+ public void onClick(DialogInterface dialog, int id) { |
+ String newTitle = input.getText().toString(); |
+ nativeSetPartnerBookmarkTitle(profile, bookmarkId, newTitle); |
+ } |
+ }); |
+ dialog.show(); |
+ } |
+ |
+ // JNI |
+ private static native void nativeSetPartnerBookmarkTitle( |
+ Profile profile, long partnerBookmarkId, String newTitle); |
+} |