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

Side by Side Diff: chrome/browser/views/bookmark_table_view.h

Issue 1730015: Windows/Views: delete native bookmark manager code. (Closed)
Patch Set: Patch with fixed file perms. Created 10 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
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_VIEWS_BOOKMARK_TABLE_VIEW_H_
6 #define CHROME_BROWSER_VIEWS_BOOKMARK_TABLE_VIEW_H_
7
8 #include "chrome/browser/bookmarks/bookmark_drag_data.h"
9 #include "chrome/browser/bookmarks/bookmark_drop_info.h"
10 #include "views/controls/table/table_view.h"
11
12 class BookmarkModel;
13 class BookmarkNode;
14 class BookmarkTableModel;
15 class OSExchangeData;
16 class PrefService;
17 class Profile;
18
19 // A TableView implementation that shows a BookmarkTableModel.
20 // BookmarkTableView provides drag and drop support as well as showing a
21 // separate set of columns when showing search results.
22 class BookmarkTableView : public views::TableView {
23 public:
24 BookmarkTableView(Profile* profile, BookmarkTableModel* model);
25
26 // Drag and drop methods.
27 virtual bool CanDrop(const OSExchangeData& data);
28 virtual void OnDragEntered(const views::DropTargetEvent& event);
29 virtual int OnDragUpdated(const views::DropTargetEvent& event);
30 virtual void OnDragExited();
31 virtual int OnPerformDrop(const views::DropTargetEvent& event);
32
33 // Sets the parent of the nodes being displayed. For search and recently
34 // found results |parent| is NULL.
35 void set_parent_node(const BookmarkNode* parent) { parent_node_ = parent; }
36
37 // Sets whether the path column should be shown. The path column is shown
38 // for search results and recently bookmarked.
39 void SetShowPathColumn(bool show_path_column);
40
41 // The model as a BookmarkTableModel.
42 BookmarkTableModel* bookmark_table_model() const;
43
44 // Saves the widths of the table columns.
45 void SaveColumnConfiguration();
46
47 protected:
48 // Overriden to draw a drop indicator when dropping between rows.
49 virtual void PostPaint();
50
51 // Overriden to start a drag.
52 virtual LRESULT OnNotify(int w_param, LPNMHDR l_param);
53
54 private:
55 // DropPosition identifies where the drop should occur.
56 struct DropPosition {
57 DropPosition() : index(-1), on(false) {}
58 DropPosition(int index, bool on) : index(index), on(on) {}
59
60 bool equals(const DropPosition& position) const {
61 return index == position.index && on == position.on;
62 }
63
64 // The index into the table model as to where the drop should occur. This
65 // may == the row count of the table.
66 int index;
67
68 // Whether drop is on the item at the specified index. If false, the drop
69 // is at the specified index.
70 bool on;
71 };
72
73 // Information used when we're the drop target of a drag and drop operation.
74 class DropInfo : public BookmarkDropInfo {
75 public:
76 explicit DropInfo(BookmarkTableView* view)
77 : BookmarkDropInfo(view->GetNativeControlHWND(),
78 view->content_offset()),
79 view_(view) {}
80
81 // Overriden to invoke UpdateDropInfo.
82 virtual void Scrolled();
83
84 // The position the drop is to occur at.
85 void set_position(const DropPosition& position) {
86 position_ = position;
87 }
88 const DropPosition& position() { return position_; }
89
90 private:
91 DropPosition position_;
92 BookmarkTableView* view_;
93
94 DISALLOW_COPY_AND_ASSIGN(DropInfo);
95 };
96 friend class DropInfo;
97
98 // Updates drop info. This is invoked both from OnDragUpdated and when we
99 // autoscroll during a drop.
100 int UpdateDropInfo();
101
102 // Starts a drop operation.
103 void BeginDrag();
104
105 // Returns the drop operation for the specified position.
106 int CalculateDropOperation(const DropPosition& position);
107
108 // Performs the drop operation.
109 void OnPerformDropImpl();
110
111 // Sets the position of the drop. If this differs from the current position
112 // UpdateDropIndicator is invoked for old and new values.
113 void SetDropPosition(const DropPosition& position);
114
115 // Invoked from SetDropPosition to update the visual indicator. |turn_on|
116 // indicates whether the indicator is to be turned on or off.
117 void UpdateDropIndicator(const DropPosition& position, bool turn_on);
118
119 // Determines the drop position for the specified location.
120 DropPosition CalculateDropPosition(int y);
121
122 // Returns the BookmarkNode the drop should occur on.
123 const BookmarkNode* GetDropParentAndIndex(const DropPosition& position,
124 int* index);
125
126 // Returns the bounds of drop indicator shown when the drop is to occur
127 // between rows (drop_on is false).
128 RECT GetDropBetweenHighlightRect(int index);
129
130 // Resets the columns. BookmarkTableView shows different sets of columns.
131 // See ShowPathColumn for details.
132 void UpdateColumns();
133
134 Profile* profile_;
135
136 const BookmarkNode* parent_node_;
137
138 scoped_ptr<DropInfo> drop_info_;
139
140 bool show_path_column_;
141
142 DISALLOW_COPY_AND_ASSIGN(BookmarkTableView);
143 };
144
145 #endif // CHROME_BROWSER_VIEWS_BOOKMARK_TABLE_VIEW_H_
OLDNEW
« no previous file with comments | « chrome/browser/views/bookmark_manager_view.cc ('k') | chrome/browser/views/bookmark_table_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698