summaryrefslogtreecommitdiffstats
path: root/chrome/browser/cocoa/bookmark_menu_bridge.h
diff options
context:
space:
mode:
authorjrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-18 00:57:49 +0000
committerjrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-18 00:57:49 +0000
commit44b2c885548d647611d908309dfdf6306eac7ed8 (patch)
treec46fd5199ac07df770ca9b01a0b73dc594b6d63d /chrome/browser/cocoa/bookmark_menu_bridge.h
parent9eef357377e89bffd2d5ff9fad9de0c94d8cc934 (diff)
downloadchromium_src-44b2c885548d647611d908309dfdf6306eac7ed8.zip
chromium_src-44b2c885548d647611d908309dfdf6306eac7ed8.tar.gz
chromium_src-44b2c885548d647611d908309dfdf6306eac7ed8.tar.bz2
Mac bookmark work.
- The bookmark menu is populated dynamically with bookmarks, including subfolders --> submenus. E.g. star something --> shows up in menu. Menu items are disabled but always present and current. - Always Show Bookmarks" menu now live; reads from / writes to preference, and shows correct "toggle state". - Bookmark bar on each tab, present if requested. (Currently an empty box). - Random stuff; e.g. bookmark prefs init moved to a x-plat location. This CL does not contain Cole's views. Bried english description of the nib file changes: - add a new view for the bookmark bar in the tab; hook it up to the controller - Many tag sets (e.g. View-->Always Show Bookmarks Bar now 40009) - Remove dummy bookmark menu items Review URL: http://codereview.chromium.org/46078 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11936 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cocoa/bookmark_menu_bridge.h')
-rw-r--r--chrome/browser/cocoa/bookmark_menu_bridge.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/chrome/browser/cocoa/bookmark_menu_bridge.h b/chrome/browser/cocoa/bookmark_menu_bridge.h
new file mode 100644
index 0000000..81ff98fc
--- /dev/null
+++ b/chrome/browser/cocoa/bookmark_menu_bridge.h
@@ -0,0 +1,56 @@
+// Copyright (c) 2009 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.
+
+// C++ controller for the bookmark menu. When bookmarks are changed,
+// this class takes care of updating Cocoa bookmark menus. This is
+// not named BookmarkMenuController to help avoid confusion between
+// languages. This class needs to be C++, not ObjC, since it derives
+// from BookmarkModelObserver.
+
+#ifndef CHROME_BROWSER_COCOA_BOOKMARK_MENU_BRIDGE_H_
+#define CHROME_BROWSER_COCOA_BOOKMARK_MENU_BRIDGE_H_
+
+#include "chrome/browser/bookmarks/bookmark_model.h"
+
+
+class Browser;
+@class NSMenu;
+
+class BookmarkMenuBridge : public BookmarkModelObserver {
+ public:
+ BookmarkMenuBridge(Browser* browser);
+ ~BookmarkMenuBridge();
+
+ // Overridden from BookmarkModelObserver
+ virtual void Loaded(BookmarkModel* model);
+ virtual void BookmarkNodeMoved(BookmarkModel* model,
+ BookmarkNode* old_parent,
+ int old_index,
+ BookmarkNode* new_parent,
+ int new_index);
+ virtual void BookmarkNodeAdded(BookmarkModel* model,
+ BookmarkNode* parent,
+ int index);
+ virtual void BookmarkNodeChanged(BookmarkModel* model,
+ BookmarkNode* node);
+ virtual void BookmarkNodeFavIconLoaded(BookmarkModel* model,
+ BookmarkNode* node);
+ virtual void BookmarkNodeChildrenReordered(BookmarkModel* model,
+ BookmarkNode* node);
+
+ protected:
+ // Clear all bookmarks from the given bookmark menu.
+ void ClearBookmarkMenu(NSMenu* menu);
+
+ // Helper for recursively adding items to our bookmark menu
+ // All children of |node| will be added to |menu|.
+ // TODO(jrg): add a counter to enforce maximum nodes added
+ void AddNodeToMenu(BookmarkNode* node, NSMenu* menu);
+
+ private:
+ friend class BookmarkMenuBridgeTest;
+ Browser* browser_;
+};
+
+#endif // CHROME_BROWSER_COCOA_BOOKMARK_MENU_BRIDGE_H_