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

Side by Side Diff: chrome/browser/bookmark_bar_context_menu_controller.cc

Issue 1912: Renames BoomarkBarModel to BookmarkModel. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 years, 3 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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/bookmark_bar_context_menu_controller.h" 5 #include "chrome/browser/bookmark_bar_context_menu_controller.h"
6 6
7 #include "chrome/browser/bookmarks/bookmark_bar_model.h" 7 #include "chrome/browser/bookmarks/bookmark_model.h"
8 #include "chrome/browser/browser.h" 8 #include "chrome/browser/browser.h"
9 #include "chrome/browser/browser_list.h" 9 #include "chrome/browser/browser_list.h"
10 #include "chrome/browser/page_navigator.h" 10 #include "chrome/browser/page_navigator.h"
11 #include "chrome/browser/profile.h" 11 #include "chrome/browser/profile.h"
12 #include "chrome/browser/tab_contents.h" 12 #include "chrome/browser/tab_contents.h"
13 #include "chrome/browser/user_metrics.h" 13 #include "chrome/browser/user_metrics.h"
14 #include "chrome/browser/views/bookmark_editor_view.h" 14 #include "chrome/browser/views/bookmark_editor_view.h"
15 #include "chrome/browser/views/input_window.h" 15 #include "chrome/browser/views/input_window.h"
16 #include "chrome/common/pref_names.h" 16 #include "chrome/common/pref_names.h"
17 #include "chrome/common/pref_service.h" 17 #include "chrome/common/pref_service.h"
18 #include "chrome/views/view_container.h" 18 #include "chrome/views/view_container.h"
19 #include "chrome/views/window.h" 19 #include "chrome/views/window.h"
20 20
21 #include "generated_resources.h" 21 #include "generated_resources.h"
22 22
23 namespace { 23 namespace {
24 24
25 // Returns true if the specified node is of type URL, or has a descendant 25 // Returns true if the specified node is of type URL, or has a descendant
26 // of type URL. 26 // of type URL.
27 bool NodeHasURLs(BookmarkBarNode* node) { 27 bool NodeHasURLs(BookmarkNode* node) {
28 if (node->GetType() == history::StarredEntry::URL) 28 if (node->GetType() == history::StarredEntry::URL)
29 return true; 29 return true;
30 30
31 for (int i = 0; i < node->GetChildCount(); ++i) { 31 for (int i = 0; i < node->GetChildCount(); ++i) {
32 if (NodeHasURLs(node->GetChild(i))) 32 if (NodeHasURLs(node->GetChild(i)))
33 return true; 33 return true;
34 } 34 }
35 return false; 35 return false;
36 } 36 }
37 37
38 // Opens a tab/window for node and recursively opens all descendants. 38 // Opens a tab/window for node and recursively opens all descendants.
39 // If open_first_in_new_window is true, the first opened node is opened 39 // If open_first_in_new_window is true, the first opened node is opened
40 // in a new window. navigator indicates the PageNavigator to use for 40 // in a new window. navigator indicates the PageNavigator to use for
41 // new tabs. It is reset if open_first_in_new_window is true. 41 // new tabs. It is reset if open_first_in_new_window is true.
42 // opened_url is set to true the first time a new tab is opened. 42 // opened_url is set to true the first time a new tab is opened.
43 void OpenAll(BookmarkBarNode* node, 43 void OpenAll(BookmarkNode* node,
44 bool open_first_in_new_window, 44 bool open_first_in_new_window,
45 PageNavigator** navigator, 45 PageNavigator** navigator,
46 bool* opened_url) { 46 bool* opened_url) {
47 if (node->GetType() == history::StarredEntry::URL) { 47 if (node->GetType() == history::StarredEntry::URL) {
48 WindowOpenDisposition disposition; 48 WindowOpenDisposition disposition;
49 if (*opened_url) 49 if (*opened_url)
50 disposition = NEW_BACKGROUND_TAB; 50 disposition = NEW_BACKGROUND_TAB;
51 else if (open_first_in_new_window) 51 else if (open_first_in_new_window)
52 disposition = NEW_WINDOW; 52 disposition = NEW_WINDOW;
53 else // Open in current window. 53 else // Open in current window.
(...skipping 28 matching lines...) Expand all
82 82
83 // EditFolderController manages the editing and/or creation of a folder. If the 83 // EditFolderController manages the editing and/or creation of a folder. If the
84 // user presses ok, the name change is committed to the database. 84 // user presses ok, the name change is committed to the database.
85 // 85 //
86 // EditFolderController deletes itself when the window is closed. 86 // EditFolderController deletes itself when the window is closed.
87 // 87 //
88 class EditFolderController : public InputWindowDelegate, 88 class EditFolderController : public InputWindowDelegate,
89 public BookmarkBarView::ModelChangedListener { 89 public BookmarkBarView::ModelChangedListener {
90 public: 90 public:
91 EditFolderController(BookmarkBarView* view, 91 EditFolderController(BookmarkBarView* view,
92 BookmarkBarNode* node, 92 BookmarkNode* node,
93 int visual_order, 93 int visual_order,
94 bool is_new) 94 bool is_new)
95 : view_(view), 95 : view_(view),
96 node_(node), 96 node_(node),
97 visual_order_(visual_order), 97 visual_order_(visual_order),
98 is_new_(is_new) { 98 is_new_(is_new) {
99 DCHECK(is_new_ || node); 99 DCHECK(is_new_ || node);
100 window_ = CreateInputWindow(view->GetViewContainer()->GetHWND(), this); 100 window_ = CreateInputWindow(view->GetViewContainer()->GetHWND(), this);
101 view_->SetModelChangedListener(this); 101 view_->SetModelChangedListener(this);
102 } 102 }
(...skipping 16 matching lines...) Expand all
119 return l10n_util::GetString(IDS_BOOMARK_EDITOR_NEW_FOLDER_NAME); 119 return l10n_util::GetString(IDS_BOOMARK_EDITOR_NEW_FOLDER_NAME);
120 return node_->GetTitle(); 120 return node_->GetTitle();
121 } 121 }
122 122
123 virtual bool IsValid(const std::wstring& text) { 123 virtual bool IsValid(const std::wstring& text) {
124 return !text.empty(); 124 return !text.empty();
125 } 125 }
126 126
127 virtual void InputAccepted(const std::wstring& text) { 127 virtual void InputAccepted(const std::wstring& text) {
128 view_->ClearModelChangedListenerIfEquals(this); 128 view_->ClearModelChangedListenerIfEquals(this);
129 BookmarkBarModel* model = view_->GetProfile()->GetBookmarkBarModel(); 129 BookmarkModel* model = view_->GetProfile()->GetBookmarkModel();
130 if (is_new_) 130 if (is_new_)
131 model->AddGroup(node_, visual_order_, text); 131 model->AddGroup(node_, visual_order_, text);
132 else 132 else
133 model->SetTitle(node_, text); 133 model->SetTitle(node_, text);
134 } 134 }
135 135
136 virtual void InputCanceled() { 136 virtual void InputCanceled() {
137 view_->ClearModelChangedListenerIfEquals(this); 137 view_->ClearModelChangedListenerIfEquals(this);
138 } 138 }
139 139
140 virtual void WindowClosing() { 140 virtual void WindowClosing() {
141 view_->ClearModelChangedListenerIfEquals(this); 141 view_->ClearModelChangedListenerIfEquals(this);
142 delete this; 142 delete this;
143 } 143 }
144 144
145 virtual std::wstring GetWindowTitle() const { 145 virtual std::wstring GetWindowTitle() const {
146 return is_new_ ? 146 return is_new_ ?
147 l10n_util::GetString(IDS_BOOMARK_FOLDER_EDITOR_WINDOW_TITLE_NEW) : 147 l10n_util::GetString(IDS_BOOMARK_FOLDER_EDITOR_WINDOW_TITLE_NEW) :
148 l10n_util::GetString(IDS_BOOMARK_FOLDER_EDITOR_WINDOW_TITLE); 148 l10n_util::GetString(IDS_BOOMARK_FOLDER_EDITOR_WINDOW_TITLE);
149 } 149 }
150 150
151 virtual ChromeViews::View* GetContentsView() { 151 virtual ChromeViews::View* GetContentsView() {
152 return view_; 152 return view_;
153 } 153 }
154 154
155 BookmarkBarView* view_; 155 BookmarkBarView* view_;
156 156
157 // If is_new is true, this is the parent to create the new node under. 157 // If is_new is true, this is the parent to create the new node under.
158 // Otherwise this is the node to change the title of. 158 // Otherwise this is the node to change the title of.
159 BookmarkBarNode* node_; 159 BookmarkNode* node_;
160 160
161 int visual_order_; 161 int visual_order_;
162 bool is_new_; 162 bool is_new_;
163 ChromeViews::Window* window_; 163 ChromeViews::Window* window_;
164 164
165 DISALLOW_EVIL_CONSTRUCTORS(EditFolderController); 165 DISALLOW_EVIL_CONSTRUCTORS(EditFolderController);
166 }; 166 };
167 167
168 } // namespace 168 } // namespace
169 169
170 // BookmarkBarContextMenuController ------------------------------------------- 170 // BookmarkBarContextMenuController -------------------------------------------
171 171
172 const int BookmarkBarContextMenuController::always_show_command_id = 1; 172 const int BookmarkBarContextMenuController::always_show_command_id = 1;
173 const int BookmarkBarContextMenuController::open_bookmark_id = 2; 173 const int BookmarkBarContextMenuController::open_bookmark_id = 2;
174 const int BookmarkBarContextMenuController::open_bookmark_in_new_window_id = 3; 174 const int BookmarkBarContextMenuController::open_bookmark_in_new_window_id = 3;
175 const int BookmarkBarContextMenuController::open_bookmark_in_new_tab_id = 4; 175 const int BookmarkBarContextMenuController::open_bookmark_in_new_tab_id = 4;
176 const int BookmarkBarContextMenuController::open_all_bookmarks_id = 5; 176 const int BookmarkBarContextMenuController::open_all_bookmarks_id = 5;
177 const int 177 const int
178 BookmarkBarContextMenuController::open_all_bookmarks_in_new_window_id = 6; 178 BookmarkBarContextMenuController::open_all_bookmarks_in_new_window_id = 6;
179 const int BookmarkBarContextMenuController::edit_bookmark_id = 7; 179 const int BookmarkBarContextMenuController::edit_bookmark_id = 7;
180 const int BookmarkBarContextMenuController::delete_bookmark_id = 8; 180 const int BookmarkBarContextMenuController::delete_bookmark_id = 8;
181 const int BookmarkBarContextMenuController::add_bookmark_id = 9; 181 const int BookmarkBarContextMenuController::add_bookmark_id = 9;
182 const int BookmarkBarContextMenuController::new_folder_id = 10; 182 const int BookmarkBarContextMenuController::new_folder_id = 10;
183 183
184 BookmarkBarContextMenuController::BookmarkBarContextMenuController( 184 BookmarkBarContextMenuController::BookmarkBarContextMenuController(
185 BookmarkBarView* view, 185 BookmarkBarView* view,
186 BookmarkBarNode* node) 186 BookmarkNode* node)
187 : view_(view), 187 : view_(view),
188 node_(node), 188 node_(node),
189 menu_(this) { 189 menu_(this) {
190 if (node->GetType() == history::StarredEntry::URL) { 190 if (node->GetType() == history::StarredEntry::URL) {
191 menu_.AppendMenuItemWithLabel( 191 menu_.AppendMenuItemWithLabel(
192 open_bookmark_id, 192 open_bookmark_id,
193 l10n_util::GetString(IDS_BOOMARK_BAR_OPEN)); 193 l10n_util::GetString(IDS_BOOMARK_BAR_OPEN));
194 menu_.AppendMenuItemWithLabel( 194 menu_.AppendMenuItemWithLabel(
195 open_bookmark_in_new_tab_id, 195 open_bookmark_in_new_tab_id,
196 l10n_util::GetString(IDS_BOOMARK_BAR_OPEN_IN_NEW_TAB)); 196 l10n_util::GetString(IDS_BOOMARK_BAR_OPEN_IN_NEW_TAB));
197 menu_.AppendMenuItemWithLabel( 197 menu_.AppendMenuItemWithLabel(
198 open_bookmark_in_new_window_id, 198 open_bookmark_in_new_window_id,
199 l10n_util::GetString(IDS_BOOMARK_BAR_OPEN_IN_NEW_WINDOW)); 199 l10n_util::GetString(IDS_BOOMARK_BAR_OPEN_IN_NEW_WINDOW));
200 } else { 200 } else {
201 menu_.AppendMenuItemWithLabel( 201 menu_.AppendMenuItemWithLabel(
202 open_all_bookmarks_id, 202 open_all_bookmarks_id,
203 l10n_util::GetString(IDS_BOOMARK_BAR_OPEN_ALL)); 203 l10n_util::GetString(IDS_BOOMARK_BAR_OPEN_ALL));
204 menu_.AppendMenuItemWithLabel( 204 menu_.AppendMenuItemWithLabel(
205 open_all_bookmarks_in_new_window_id, 205 open_all_bookmarks_in_new_window_id,
206 l10n_util::GetString(IDS_BOOMARK_BAR_OPEN_ALL_NEW_WINDOW)); 206 l10n_util::GetString(IDS_BOOMARK_BAR_OPEN_ALL_NEW_WINDOW));
207 } 207 }
208 menu_.AppendSeparator(); 208 menu_.AppendSeparator();
209 209
210 if (node->GetParent() != 210 if (node->GetParent() !=
211 view->GetProfile()->GetBookmarkBarModel()->root_node()) { 211 view->GetProfile()->GetBookmarkModel()->root_node()) {
212 menu_.AppendMenuItemWithLabel(edit_bookmark_id, 212 menu_.AppendMenuItemWithLabel(edit_bookmark_id,
213 l10n_util::GetString(IDS_BOOKMARK_BAR_EDIT)); 213 l10n_util::GetString(IDS_BOOKMARK_BAR_EDIT));
214 menu_.AppendMenuItemWithLabel( 214 menu_.AppendMenuItemWithLabel(
215 delete_bookmark_id, 215 delete_bookmark_id,
216 l10n_util::GetString(IDS_BOOKMARK_BAR_REMOVE)); 216 l10n_util::GetString(IDS_BOOKMARK_BAR_REMOVE));
217 } 217 }
218 218
219 menu_.AppendMenuItemWithLabel( 219 menu_.AppendMenuItemWithLabel(
220 add_bookmark_id, 220 add_bookmark_id,
221 l10n_util::GetString(IDS_BOOMARK_BAR_ADD_NEW_BOOKMARK)); 221 l10n_util::GetString(IDS_BOOMARK_BAR_ADD_NEW_BOOKMARK));
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 case open_all_bookmarks_id: 277 case open_all_bookmarks_id:
278 case open_all_bookmarks_in_new_window_id: { 278 case open_all_bookmarks_in_new_window_id: {
279 if (id == open_all_bookmarks_id) { 279 if (id == open_all_bookmarks_id) {
280 UserMetrics::RecordAction(L"BookmarkBar_ContextMenu_OpenAll", 280 UserMetrics::RecordAction(L"BookmarkBar_ContextMenu_OpenAll",
281 profile); 281 profile);
282 } else { 282 } else {
283 UserMetrics::RecordAction( 283 UserMetrics::RecordAction(
284 L"BookmarkBar_ContextMenu_OpenAllInNewWindow", profile); 284 L"BookmarkBar_ContextMenu_OpenAllInNewWindow", profile);
285 } 285 }
286 286
287 BookmarkBarNode* node = node_; 287 BookmarkNode* node = node_;
288 PageNavigator* navigator = view_->GetPageNavigator(); 288 PageNavigator* navigator = view_->GetPageNavigator();
289 bool opened_url = false; 289 bool opened_url = false;
290 OpenAll(node, (id == open_all_bookmarks_in_new_window_id), &navigator, 290 OpenAll(node, (id == open_all_bookmarks_in_new_window_id), &navigator,
291 &opened_url); 291 &opened_url);
292 break; 292 break;
293 } 293 }
294 294
295 case edit_bookmark_id: 295 case edit_bookmark_id:
296 UserMetrics::RecordAction(L"BookmarkBar_ContextMenu_Edit", profile); 296 UserMetrics::RecordAction(L"BookmarkBar_ContextMenu_Edit", profile);
297 297
(...skipping 23 matching lines...) Expand all
321 BookmarkEditorView::Show(view_->GetViewContainer()->GetHWND(), 321 BookmarkEditorView::Show(view_->GetViewContainer()->GetHWND(),
322 view_->GetProfile(), GURL(), std::wstring()); 322 view_->GetProfile(), GURL(), std::wstring());
323 break; 323 break;
324 } 324 }
325 325
326 case new_folder_id: { 326 case new_folder_id: {
327 UserMetrics::RecordAction(L"BookmarkBar_ContextMenu_NewFolder", 327 UserMetrics::RecordAction(L"BookmarkBar_ContextMenu_NewFolder",
328 profile); 328 profile);
329 329
330 int visual_order; 330 int visual_order;
331 BookmarkBarNode* parent = 331 BookmarkNode* parent =
332 GetParentAndVisualOrderForNewNode(&visual_order); 332 GetParentAndVisualOrderForNewNode(&visual_order);
333 GetParentAndVisualOrderForNewNode(&visual_order); 333 GetParentAndVisualOrderForNewNode(&visual_order);
334 // Controller deletes itself when done. 334 // Controller deletes itself when done.
335 EditFolderController* controller = 335 EditFolderController* controller =
336 new EditFolderController(view_, parent, visual_order, true); 336 new EditFolderController(view_, parent, visual_order, true);
337 controller->Show(); 337 controller->Show();
338 break; 338 break;
339 } 339 }
340 340
341 case always_show_command_id: 341 case always_show_command_id:
(...skipping 12 matching lines...) Expand all
354 354
355 bool BookmarkBarContextMenuController::IsCommandEnabled(int id) const { 355 bool BookmarkBarContextMenuController::IsCommandEnabled(int id) const {
356 if (id == open_all_bookmarks_id || id == open_all_bookmarks_in_new_window_id) 356 if (id == open_all_bookmarks_id || id == open_all_bookmarks_in_new_window_id)
357 return NodeHasURLs(node_); 357 return NodeHasURLs(node_);
358 358
359 return true; 359 return true;
360 } 360 }
361 361
362 // Returns the parent node and visual_order to use when adding new 362 // Returns the parent node and visual_order to use when adding new
363 // bookmarks/folders. 363 // bookmarks/folders.
364 BookmarkBarNode* BookmarkBarContextMenuController:: 364 BookmarkNode* BookmarkBarContextMenuController::
365 GetParentAndVisualOrderForNewNode(int* visual_order) { 365 GetParentAndVisualOrderForNewNode(int* visual_order) {
366 if (node_->GetType() != history::StarredEntry::URL) { 366 if (node_->GetType() != history::StarredEntry::URL) {
367 // Adding to a group always adds to the end. 367 // Adding to a group always adds to the end.
368 *visual_order = node_->GetChildCount(); 368 *visual_order = node_->GetChildCount();
369 return node_; 369 return node_;
370 } else { 370 } else {
371 DCHECK(node_->GetParent()); 371 DCHECK(node_->GetParent());
372 *visual_order = node_->GetParent()->IndexOfChild(node_) + 1; 372 *visual_order = node_->GetParent()->IndexOfChild(node_) + 1;
373 return node_->GetParent(); 373 return node_->GetParent();
374 } 374 }
375 } 375 }
376 376
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698