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

Unified Diff: chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc

Issue 2908963002: Use buttons from DialogClientView in BookmakBubbleView. (Closed)
Patch Set: AddPaddingRow Created 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
index a7dbcb94ef37b1f75736afaf4322e1374364fe7a..6c0ece303ba1d69315cf66d1bb8e43178e0c3a14 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
@@ -31,6 +31,7 @@
#include "ui/views/layout/fill_layout.h"
#include "ui/views/layout/grid_layout.h"
#include "ui/views/widget/widget.h"
+#include "ui/views/window/dialog_client_view.h"
#if defined(OS_WIN)
#include "chrome/browser/sync/profile_sync_service_factory.h"
@@ -42,8 +43,6 @@
using base::UserMetricsAction;
using bookmarks::BookmarkModel;
using bookmarks::BookmarkNode;
-using views::ColumnSet;
-using views::GridLayout;
namespace {
@@ -128,8 +127,17 @@ BookmarkBubbleView::~BookmarkBubbleView() {
// ui::DialogModel -------------------------------------------------------------
int BookmarkBubbleView::GetDialogButtons() const {
- // TODO(tapted): DialogClientView should manage the buttons.
- return ui::DIALOG_BUTTON_NONE;
+ // TODO(tapted): DialogClientView should manage the ios promo buttons too.
+ return is_showing_ios_promotion_
+ ? ui::DIALOG_BUTTON_NONE
+ : (ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL);
+}
+
+base::string16 BookmarkBubbleView::GetDialogButtonLabel(
+ ui::DialogButton button) const {
+ return l10n_util::GetStringUTF16((button == ui::DIALOG_BUTTON_OK)
+ ? IDS_DONE
+ : IDS_BOOKMARK_BUBBLE_REMOVE_BOOKMARK);
}
// views::WidgetDelegate -------------------------------------------------------
@@ -178,6 +186,19 @@ void BookmarkBubbleView::WindowClosing() {
// views::DialogDelegate -------------------------------------------------------
+views::View* BookmarkBubbleView::CreateExtraView() {
+ edit_button_ = views::MdTextButton::CreateSecondaryUiButton(
+ this, l10n_util::GetStringUTF16(IDS_BOOKMARK_BUBBLE_OPTIONS));
+ edit_button_->AddAccelerator(ui::Accelerator(ui::VKEY_E, ui::EF_ALT_DOWN));
+ return edit_button_;
+}
+
+bool BookmarkBubbleView::GetExtraViewPadding(int* padding) {
+ *padding = ChromeLayoutProvider::Get()->GetDistanceMetric(
+ DISTANCE_UNRELATED_CONTROL_HORIZONTAL_LARGE);
+ return true;
+}
+
views::View* BookmarkBubbleView::CreateFootnoteView() {
#if defined(OS_WIN)
if (!is_showing_ios_promotion_ &&
@@ -198,29 +219,41 @@ views::View* BookmarkBubbleView::CreateFootnoteView() {
return footnote_view_;
}
-// views::View -----------------------------------------------------------------
-
-const char* BookmarkBubbleView::GetClassName() const {
- return "BookmarkBubbleView";
+bool BookmarkBubbleView::Cancel() {
+ base::RecordAction(UserMetricsAction("BookmarkBubble_Unstar"));
+ // Set this so we remove the bookmark after the window closes.
+ remove_bookmark_ = true;
+ apply_edits_ = false;
+ return true;
}
-bool BookmarkBubbleView::AcceleratorPressed(
- const ui::Accelerator& accelerator) {
- ui::KeyboardCode key_code = accelerator.key_code();
- if (key_code == ui::VKEY_RETURN) {
- HandleButtonPressed(save_button_);
- return true;
- }
- if (key_code == ui::VKEY_E && accelerator.IsAltDown()) {
- HandleButtonPressed(edit_button_);
- return true;
- }
- if (key_code == ui::VKEY_R && accelerator.IsAltDown()) {
- HandleButtonPressed(remove_button_);
- return true;
+bool BookmarkBubbleView::Accept() {
+#if defined(OS_WIN)
+ using desktop_ios_promotion::PromotionEntryPoint;
+ if (IsIOSPromotionEligible(PromotionEntryPoint::BOOKMARKS_BUBBLE)) {
+ ShowIOSPromotion(PromotionEntryPoint::BOOKMARKS_BUBBLE);
+ return false;
}
+#endif
+ return true;
+}
+
+bool BookmarkBubbleView::Close() {
+ // Allow closing when activation lost. Default would call Accept().
+ return true;
+}
+
+void BookmarkBubbleView::UpdateButton(views::LabelButton* button,
+ ui::DialogButton type) {
+ LocationBarBubbleDelegateView::UpdateButton(button, type);
+ if (type == ui::DIALOG_BUTTON_CANCEL)
+ button->AddAccelerator(ui::Accelerator(ui::VKEY_R, ui::EF_ALT_DOWN));
+}
- return LocationBarBubbleDelegateView::AcceleratorPressed(accelerator);
+// views::View -----------------------------------------------------------------
+
+const char* BookmarkBubbleView::GetClassName() const {
+ return "BookmarkBubbleView";
}
void BookmarkBubbleView::GetAccessibleNodeData(ui::AXNodeData* node_data) {
@@ -234,7 +267,8 @@ void BookmarkBubbleView::GetAccessibleNodeData(ui::AXNodeData* node_data) {
void BookmarkBubbleView::ButtonPressed(views::Button* sender,
const ui::Event& event) {
- HandleButtonPressed(sender);
+ base::RecordAction(UserMetricsAction("BookmarkBubble_Edit"));
+ ShowEditor();
}
// views::ComboboxListener -----------------------------------------------------
@@ -258,82 +292,54 @@ void BookmarkBubbleView::OnIOSPromotionFootnoteLinkClicked() {
// views::BubbleDialogDelegateView ---------------------------------------------
void BookmarkBubbleView::Init() {
- remove_button_ = views::MdTextButton::CreateSecondaryUiButton(
- this, l10n_util::GetStringUTF16(IDS_BOOKMARK_BUBBLE_REMOVE_BOOKMARK));
-
- edit_button_ = views::MdTextButton::CreateSecondaryUiButton(
- this, l10n_util::GetStringUTF16(IDS_BOOKMARK_BUBBLE_OPTIONS));
+ using views::GridLayout;
- save_button_ = views::MdTextButton::CreateSecondaryUiButton(
- this, l10n_util::GetStringUTF16(IDS_DONE));
- save_button_->SetIsDefault(true);
-
- views::Label* combobox_label = new views::Label(
- l10n_util::GetStringUTF16(IDS_BOOKMARK_BUBBLE_FOLDER_TEXT));
-
- parent_combobox_ = new UnsizedCombobox(&parent_model_);
- parent_combobox_->set_listener(this);
- parent_combobox_->SetAccessibleName(
- l10n_util::GetStringUTF16(IDS_BOOKMARK_AX_BUBBLE_FOLDER_TEXT));
-
- SetLayoutManager(new views::FillLayout);
+ SetLayoutManager(new views::FillLayout());
bookmark_contents_view_ = new views::View();
GridLayout* layout = new GridLayout(bookmark_contents_view_);
bookmark_contents_view_->SetLayoutManager(layout);
- // This column set is used for the labels and textfields as well as the
- // buttons at the bottom.
- const int cs_id = 0;
- ColumnSet* cs = layout->AddColumnSet(cs_id);
+ // This column set is used for the labels and textfields.
+ constexpr int kColumnId = 0;
+ constexpr float kFixed = 0.f;
+ constexpr float kStretchy = 1.f;
+ views::ColumnSet* cs = layout->AddColumnSet(kColumnId);
ChromeLayoutProvider* provider = ChromeLayoutProvider::Get();
- cs->AddColumn(provider->GetControlLabelGridAlignment(), GridLayout::CENTER, 0,
+ cs->AddColumn(provider->GetControlLabelGridAlignment(), GridLayout::CENTER,
+ kFixed, GridLayout::USE_PREF, 0, 0);
+ cs->AddPaddingColumn(kFixed, provider->GetDistanceMetric(
+ DISTANCE_UNRELATED_CONTROL_HORIZONTAL));
+ cs->AddColumn(GridLayout::FILL, GridLayout::CENTER, kStretchy,
GridLayout::USE_PREF, 0, 0);
- cs->AddPaddingColumn(
- 0, provider->GetDistanceMetric(DISTANCE_UNRELATED_CONTROL_HORIZONTAL));
-
- cs->AddColumn(GridLayout::FILL, GridLayout::CENTER, 0, GridLayout::USE_PREF,
- 0, 0);
- cs->AddPaddingColumn(1, provider->GetDistanceMetric(
- DISTANCE_UNRELATED_CONTROL_HORIZONTAL_LARGE));
- cs->AddColumn(GridLayout::LEADING, GridLayout::TRAILING, 0,
- GridLayout::USE_PREF, 0, 0);
- cs->AddPaddingColumn(0, provider->GetDistanceMetric(
- views::DISTANCE_RELATED_BUTTON_HORIZONTAL));
- cs->AddColumn(GridLayout::LEADING, GridLayout::TRAILING, 0,
- GridLayout::USE_PREF, 0, 0);
-
- layout->StartRow(0, cs_id);
+ layout->StartRow(kFixed, kColumnId);
views::Label* label = new views::Label(
- l10n_util::GetStringUTF16(IDS_BOOKMARK_BUBBLE_TITLE_TEXT));
+ l10n_util::GetStringUTF16(IDS_BOOKMARK_BUBBLE_NAME_LABEL));
layout->AddView(label);
+
name_field_ = new views::Textfield();
name_field_->SetText(GetBookmarkName());
name_field_->SetAccessibleName(
- l10n_util::GetStringUTF16(IDS_BOOKMARK_AX_BUBBLE_TITLE_TEXT));
-
- layout->AddView(name_field_, 5, 1);
-
- layout->AddPaddingRow(
- 0, provider->GetInsetsMetric(views::INSETS_DIALOG_CONTENTS).top());
+ l10n_util::GetStringUTF16(IDS_BOOKMARK_AX_BUBBLE_NAME_LABEL));
+ layout->AddView(name_field_);
- layout->StartRow(0, cs_id);
+ layout->StartRowWithPadding(
+ kFixed, kColumnId, kFixed,
+ provider->GetDistanceMetric(views::DISTANCE_RELATED_CONTROL_VERTICAL));
+ views::Label* combobox_label = new views::Label(
+ l10n_util::GetStringUTF16(IDS_BOOKMARK_BUBBLE_FOLDER_LABEL));
layout->AddView(combobox_label);
- layout->AddView(parent_combobox_, 5, 1);
-
- layout->AddPaddingRow(
- 0, provider->GetDistanceMetric(views::DISTANCE_RELATED_CONTROL_VERTICAL));
- layout->StartRow(0, cs_id);
- layout->SkipColumns(2);
- layout->AddView(remove_button_);
- layout->AddView(edit_button_);
- layout->AddView(save_button_);
+ parent_combobox_ = new UnsizedCombobox(&parent_model_);
+ parent_combobox_->set_listener(this);
+ parent_combobox_->SetAccessibleName(
+ l10n_util::GetStringUTF16(IDS_BOOKMARK_AX_BUBBLE_FOLDER_LABEL));
+ layout->AddView(parent_combobox_);
- AddAccelerator(ui::Accelerator(ui::VKEY_RETURN, ui::EF_NONE));
- AddAccelerator(ui::Accelerator(ui::VKEY_E, ui::EF_ALT_DOWN));
- AddAccelerator(ui::Accelerator(ui::VKEY_R, ui::EF_ALT_DOWN));
+ layout->AddPaddingRow(
+ kFixed,
+ provider->GetInsetsMetric(views::INSETS_DIALOG_CONTENTS).bottom());
AddChildView(bookmark_contents_view_);
}
@@ -355,17 +361,7 @@ BookmarkBubbleView::BookmarkBubbleView(
newly_bookmarked_(newly_bookmarked),
parent_model_(BookmarkModelFactory::GetForBrowserContext(profile_),
BookmarkModelFactory::GetForBrowserContext(profile_)
- ->GetMostRecentlyAddedUserNodeForURL(url)),
- remove_button_(nullptr),
- edit_button_(nullptr),
- save_button_(nullptr),
- name_field_(nullptr),
- parent_combobox_(nullptr),
- ios_promo_view_(nullptr),
- footnote_view_(nullptr),
- remove_bookmark_(false),
- apply_edits_(true),
- is_showing_ios_promotion_(false) {
+ ->GetMostRecentlyAddedUserNodeForURL(url)) {
chrome::RecordDialogCreation(chrome::DialogIdentifier::BOOKMARK);
}
@@ -381,32 +377,6 @@ base::string16 BookmarkBubbleView::GetBookmarkName() {
return base::string16();
}
-void BookmarkBubbleView::HandleButtonPressed(views::Button* sender) {
- if (sender == remove_button_) {
- base::RecordAction(UserMetricsAction("BookmarkBubble_Unstar"));
- // Set this so we remove the bookmark after the window closes.
- remove_bookmark_ = true;
- apply_edits_ = false;
- GetWidget()->Close();
- } else if (sender == edit_button_) {
- base::RecordAction(UserMetricsAction("BookmarkBubble_Edit"));
- ShowEditor();
- } else {
- DCHECK_EQ(save_button_, sender);
-#if defined(OS_WIN)
- if (IsIOSPromotionEligible(
- desktop_ios_promotion::PromotionEntryPoint::BOOKMARKS_BUBBLE)) {
- ShowIOSPromotion(
- desktop_ios_promotion::PromotionEntryPoint::BOOKMARKS_BUBBLE);
- } else {
- GetWidget()->Close();
- }
-#else
- GetWidget()->Close();
-#endif
- }
-}
-
void BookmarkBubbleView::ShowEditor() {
const BookmarkNode* node =
BookmarkModelFactory::GetForBrowserContext(profile_)
@@ -457,6 +427,7 @@ bool BookmarkBubbleView::IsIOSPromotionEligible(
void BookmarkBubbleView::ShowIOSPromotion(
desktop_ios_promotion::PromotionEntryPoint entry_point) {
DCHECK(!is_showing_ios_promotion_);
+ edit_button_->SetVisible(false);
// Hide the contents, but don't delete. Its child views are accessed in the
// destructor if there are edits to apply.
bookmark_contents_view_->SetVisible(false);
@@ -467,7 +438,7 @@ void BookmarkBubbleView::ShowIOSPromotion(
AddChildView(ios_promo_view_);
GetWidget()->UpdateWindowIcon();
GetWidget()->UpdateWindowTitle();
- // Resize the bubble so it has the same width as the parent bubble.
- ios_promo_view_->UpdateBubbleHeight();
+ GetDialogClientView()->UpdateDialogButtons();
+ SizeToContents();
}
#endif

Powered by Google App Engine
This is Rietveld 408576698