| // Copyright (c) 2006-2008 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. |
| |
| #ifndef CHROME_BROWSER_BOOKMARKS_BOOKMARK_TABLE_MODEL_H_ |
| #define CHROME_BROWSER_BOOKMARKS_BOOKMARK_TABLE_MODEL_H_ |
| |
| #include "chrome/browser/bookmarks/bookmark_model.h" |
| #include "chrome/views/table_view.h" |
| |
| // BookmarkTableModel provides a view of the BookmarkModel as a TableModel. |
| // Three variations are provided: |
| // . Recently created bookmarks. |
| // . The children of a particular folder. |
| // . All bookmarks matching the specified text. |
| class BookmarkTableModel : public views::TableModel, |
| public BookmarkModelObserver { |
| public: |
| // Methods for creating the various BookmarkTableModels. Ownership passes |
| // to the caller. |
| static BookmarkTableModel* CreateRecentlyBookmarkedModel( |
| BookmarkModel* model); |
| static BookmarkTableModel* CreateBookmarkTableModelForFolder( |
| BookmarkModel* model, BookmarkNode* node); |
| static BookmarkTableModel* CreateSearchTableModel( |
| BookmarkModel* model, |
| const std::wstring& text); |
| |
| explicit BookmarkTableModel(BookmarkModel* model); |
| virtual ~BookmarkTableModel(); |
| |
| // TableModel methods. |
| virtual std::wstring GetText(int row, int column_id); |
| virtual SkBitmap GetIcon(int row); |
| virtual void SetObserver(views::TableModelObserver* observer) { |
| observer_ = observer; |
| } |
| |
| // BookmarkModelObserver methods. |
| virtual void Loaded(BookmarkModel* model) {} |
| virtual void BookmarkModelBeingDeleted(BookmarkModel* model); |
| |
| // Returns the index of the specified node, or -1 if the node isn't in the |
| // model. |
| virtual int IndexOfNode(BookmarkNode* node); |
| |
| // Returns the BookmarkNode at the specified index. |
| virtual BookmarkNode* GetNodeForRow(int row) = 0; |
| |
| // Returns the underlying BookmarkModel. |
| BookmarkModel* model() const { return model_; } |
| |
| protected: |
| views::TableModelObserver* observer() const { return observer_; } |
| |
| private: |
| // Builds the path shown in the path column for the specified node. |
| void BuildPath(BookmarkNode* node, std::wstring* path); |
| |
| BookmarkModel* model_; |
| views::TableModelObserver* observer_; |
| |
| DISALLOW_COPY_AND_ASSIGN(BookmarkTableModel); |
| }; |
| |
| #endif // CHROME_BROWSER_BOOKMARKS_BOOKMARK_TABLE_MODEL_H_ |