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

Side by Side Diff: chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.cc

Issue 1881773002: [Extensions UI] Convert ExtensionMessageBubbles to ToolbarActionsBarBubbles (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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
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 #include "chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.h" 5 #include "chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.h"
6 6
7 #include "chrome/browser/ui/toolbar/toolbar_actions_bar_bubble_delegate.h" 7 #include "chrome/browser/ui/toolbar/toolbar_actions_bar_bubble_delegate.h"
8 #include "chrome/browser/ui/view_ids.h" 8 #include "chrome/browser/ui/view_ids.h"
9 #include "chrome/grit/locale_settings.h" 9 #include "chrome/grit/locale_settings.h"
10 #include "ui/base/resource/resource_bundle.h" 10 #include "ui/base/resource/resource_bundle.h"
11 #include "ui/views/controls/button/label_button.h" 11 #include "ui/views/controls/button/label_button.h"
12 #include "ui/views/controls/label.h" 12 #include "ui/views/controls/label.h"
13 #include "ui/views/controls/link.h"
13 #include "ui/views/layout/grid_layout.h" 14 #include "ui/views/layout/grid_layout.h"
14 #include "ui/views/layout/layout_constants.h" 15 #include "ui/views/layout/layout_constants.h"
15 16
17 namespace {
18
19 const int kListPadding = 10;
20
21 }
22
16 ToolbarActionsBarBubbleViews::ToolbarActionsBarBubbleViews( 23 ToolbarActionsBarBubbleViews::ToolbarActionsBarBubbleViews(
17 views::View* anchor_view, 24 views::View* anchor_view,
18 std::unique_ptr<ToolbarActionsBarBubbleDelegate> delegate) 25 std::unique_ptr<ToolbarActionsBarBubbleDelegate> delegate)
19 : views::BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_RIGHT), 26 : views::BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_RIGHT),
20 anchor_view_(anchor_view), 27 anchor_view_(anchor_view),
21 delegate_(std::move(delegate)), 28 delegate_(std::move(delegate)),
22 heading_label_(nullptr), 29 heading_label_(nullptr),
23 content_label_(nullptr), 30 content_label_(nullptr),
31 item_list_(nullptr),
32 learn_more_button_(nullptr),
24 dismiss_button_(nullptr), 33 dismiss_button_(nullptr),
25 action_button_(nullptr), 34 action_button_(nullptr),
26 acknowledged_(false) { 35 acknowledged_(false) {
27 set_close_on_deactivate(delegate_->ShouldCloseOnDeactivate()); 36 set_close_on_deactivate(delegate_->ShouldCloseOnDeactivate());
28 } 37 }
29 38
30 ToolbarActionsBarBubbleViews::~ToolbarActionsBarBubbleViews() {} 39 ToolbarActionsBarBubbleViews::~ToolbarActionsBarBubbleViews() {}
31 40
32 void ToolbarActionsBarBubbleViews::Show() { 41 void ToolbarActionsBarBubbleViews::Show() {
33 delegate_->OnBubbleShown(); 42 delegate_->OnBubbleShown();
34 GetWidget()->Show(); 43 GetWidget()->Show();
35 } 44 }
36 45
37 void ToolbarActionsBarBubbleViews::Init() { 46 void ToolbarActionsBarBubbleViews::Init() {
38 views::GridLayout* layout = new views::GridLayout(this); 47 views::GridLayout* layout = new views::GridLayout(this);
39 layout->SetInsets(views::kPanelVertMargin, views::kPanelHorizMargin, 48 layout->SetInsets(views::kPanelVertMargin, views::kPanelHorizMargin,
40 views::kPanelVertMargin, views::kPanelHorizMargin); 49 views::kPanelVertMargin, views::kPanelHorizMargin);
41 SetLayoutManager(layout); 50 SetLayoutManager(layout);
42 51
43 enum ColumnSetId { 52 enum ColumnSetId {
44 HEADER_AND_BODY_COLUMN_SET = 0, 53 HEADER_AND_BODY_COLUMN_SET = 0,
54 LIST_COLUMN_SET,
45 BUTTON_STRIP_COLUMN_SET, 55 BUTTON_STRIP_COLUMN_SET,
46 }; 56 };
47 57
48 views::ColumnSet* header_and_body_cs = 58 views::ColumnSet* header_and_body_cs =
49 layout->AddColumnSet(HEADER_AND_BODY_COLUMN_SET); 59 layout->AddColumnSet(HEADER_AND_BODY_COLUMN_SET);
50 header_and_body_cs->AddColumn(views::GridLayout::TRAILING, 60 header_and_body_cs->AddColumn(views::GridLayout::LEADING,
51 views::GridLayout::LEADING, 1, 61 views::GridLayout::LEADING, 1,
52 views::GridLayout::USE_PREF, 0, 0); 62 views::GridLayout::USE_PREF, 0, 0);
53 views::ColumnSet* buttons_cs = layout->AddColumnSet(BUTTON_STRIP_COLUMN_SET); 63 views::ColumnSet* buttons_cs = layout->AddColumnSet(BUTTON_STRIP_COLUMN_SET);
64 buttons_cs->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER,
65 0, views::GridLayout::USE_PREF, 0, 0);
54 buttons_cs->AddPaddingColumn(1, 0); 66 buttons_cs->AddPaddingColumn(1, 0);
55 buttons_cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::LEADING, 67 buttons_cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER,
56 0, views::GridLayout::USE_PREF, 0, 0); 68 0, views::GridLayout::USE_PREF, 0, 0);
57 buttons_cs->AddPaddingColumn(0, views::kRelatedButtonHSpacing); 69 buttons_cs->AddPaddingColumn(0, views::kRelatedButtonHSpacing);
58 buttons_cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::LEADING, 70 buttons_cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER,
59 0, views::GridLayout::USE_PREF, 0, 0); 71 0, views::GridLayout::USE_PREF, 0, 0);
60 72
61 // Add a header. 73 // Add a header.
62 layout->StartRow(0, HEADER_AND_BODY_COLUMN_SET); 74 layout->StartRow(0, HEADER_AND_BODY_COLUMN_SET);
63 heading_label_ = new views::Label(delegate_->GetHeadingText()); 75 heading_label_ = new views::Label(delegate_->GetHeadingText());
64 heading_label_->SetFontList( 76 heading_label_->SetFontList(
65 ui::ResourceBundle::GetSharedInstance().GetFontList( 77 ui::ResourceBundle::GetSharedInstance().GetFontList(
66 ui::ResourceBundle::MediumFont)); 78 ui::ResourceBundle::MediumFont));
67 heading_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT); 79 heading_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
68 layout->AddView(heading_label_); 80 layout->AddView(heading_label_);
69 layout->AddPaddingRow(0, views::kLabelToControlVerticalSpacing); 81 layout->AddPaddingRow(0, views::kLabelToControlVerticalSpacing);
70 int width = views::Widget::GetLocalizedContentsWidth( 82 int width = views::Widget::GetLocalizedContentsWidth(
71 IDS_EXTENSION_TOOLBAR_REDESIGN_NOTIFICATION_BUBBLE_WIDTH_CHARS); 83 IDS_EXTENSION_TOOLBAR_REDESIGN_NOTIFICATION_BUBBLE_WIDTH_CHARS);
72 84
73 // Add the content string. 85 // Add the content string.
74 layout->StartRow(0, HEADER_AND_BODY_COLUMN_SET); 86 layout->StartRow(0, HEADER_AND_BODY_COLUMN_SET);
75 content_label_ = new views::Label( 87 content_label_ = new views::Label(
76 delegate_->GetBodyText(anchor_view_->id() == VIEW_ID_BROWSER_ACTION)); 88 delegate_->GetBodyText(anchor_view_->id() == VIEW_ID_BROWSER_ACTION));
77 content_label_->SetMultiLine(true); 89 content_label_->SetMultiLine(true);
78 content_label_->SizeToFit(width); 90 content_label_->SizeToFit(width);
79 content_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT); 91 content_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
80 layout->AddView(content_label_); 92 layout->AddView(content_label_);
93
94 base::string16 item_list = delegate_->GetItemListText();
95 if (!item_list.empty()) {
Evan Stade 2016/04/12 00:56:58 if https://codereview.chromium.org/1877143002/ lan
96 views::ColumnSet* list_cs = layout->AddColumnSet(LIST_COLUMN_SET);
97 list_cs->AddPaddingColumn(0, kListPadding);
98 list_cs->AddColumn(views::GridLayout::LEADING,
99 views::GridLayout::CENTER,
100 0,
101 views::GridLayout::USE_PREF,
102 0, 0);
103
104 layout->StartRowWithPadding(0, LIST_COLUMN_SET, 0, 0);
105 item_list_ = new views::Label(item_list);
106 item_list_->SetMultiLine(true);
107 item_list_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
108 item_list_->SizeToFit(width);
109 layout->AddView(item_list_);
110 }
111
81 layout->AddPaddingRow(0, views::kLabelToControlVerticalSpacing); 112 layout->AddPaddingRow(0, views::kLabelToControlVerticalSpacing);
82 113
83 layout->StartRow(0, BUTTON_STRIP_COLUMN_SET); 114 layout->StartRow(0, BUTTON_STRIP_COLUMN_SET);
115 base::string16 learn_more_text = delegate_->GetLearnMoreButtonText();
116 if (!learn_more_text.empty()) {
117 learn_more_button_ = new views::Link(learn_more_text);
118 learn_more_button_->set_listener(this);
119 layout->AddView(learn_more_button_);
120 } else {
121 layout->SkipColumns(1);
122 }
123
84 base::string16 dismiss_button_text = delegate_->GetDismissButtonText(); 124 base::string16 dismiss_button_text = delegate_->GetDismissButtonText();
85 if (!dismiss_button_text.empty()) { 125 if (!dismiss_button_text.empty()) {
86 dismiss_button_ = new views::LabelButton(this, dismiss_button_text); 126 dismiss_button_ = new views::LabelButton(this, dismiss_button_text);
87 dismiss_button_->SetStyle(views::Button::STYLE_BUTTON); 127 dismiss_button_->SetStyle(views::Button::STYLE_BUTTON);
88 layout->AddView(dismiss_button_, 1, 1, views::GridLayout::TRAILING, 128 layout->AddView(dismiss_button_, 1, 1, views::GridLayout::TRAILING,
89 views::GridLayout::FILL); 129 views::GridLayout::FILL);
90 } else { 130 } else {
91 layout->SkipColumns(1); 131 layout->SkipColumns(1);
92 } 132 }
93 133
(...skipping 11 matching lines...) Expand all
105 close_reason() == CloseReason::DEACTIVATION 145 close_reason() == CloseReason::DEACTIVATION
106 ? ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_DEACTIVATION 146 ? ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_DEACTIVATION
107 : ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_USER_ACTION; 147 : ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_USER_ACTION;
108 delegate_->OnBubbleClosed(close_action); 148 delegate_->OnBubbleClosed(close_action);
109 acknowledged_ = true; 149 acknowledged_ = true;
110 } 150 }
111 } 151 }
112 152
113 void ToolbarActionsBarBubbleViews::ButtonPressed(views::Button* sender, 153 void ToolbarActionsBarBubbleViews::ButtonPressed(views::Button* sender,
114 const ui::Event& event) { 154 const ui::Event& event) {
115 delegate_->OnBubbleClosed(ToolbarActionsBarBubbleDelegate::CLOSE_EXECUTE); 155 if (sender == action_button_) {
156 delegate_->OnBubbleClosed(ToolbarActionsBarBubbleDelegate::CLOSE_EXECUTE);
157 } else {
158 DCHECK_EQ(dismiss_button_, sender);
159 delegate_->OnBubbleClosed(
160 ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_USER_ACTION);
161 }
116 acknowledged_ = true; 162 acknowledged_ = true;
117 GetWidget()->Close(); 163 GetWidget()->Close();
118 } 164 }
165
166 void ToolbarActionsBarBubbleViews::LinkClicked(views::Link* link,
167 int event_flags) {
168 delegate_->OnBubbleClosed(ToolbarActionsBarBubbleDelegate::CLOSE_LEARN_MORE);
169 acknowledged_ = true;
170 GetWidget()->Close();
171 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698