OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #ifndef CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_EDITOR_BASE_CONTROLLER_H_ | 5 #ifndef CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_EDITOR_BASE_CONTROLLER_H_ |
6 #define CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_EDITOR_BASE_CONTROLLER_H_ | 6 #define CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_EDITOR_BASE_CONTROLLER_H_ |
7 | 7 |
8 #import <Cocoa/Cocoa.h> | 8 #import <Cocoa/Cocoa.h> |
9 | 9 |
10 #include "base/mac/scoped_nsobject.h" | 10 #include "base/mac/scoped_nsobject.h" |
(...skipping 16 matching lines...) Expand all Loading... |
27 // implementation, that function will need to be update. | 27 // implementation, that function will need to be update. |
28 @interface BookmarkEditorBaseController : NSWindowController { | 28 @interface BookmarkEditorBaseController : NSWindowController { |
29 @private | 29 @private |
30 IBOutlet NSButton* newFolderButton_; | 30 IBOutlet NSButton* newFolderButton_; |
31 IBOutlet NSButton* okButton_; // Used for unit testing only. | 31 IBOutlet NSButton* okButton_; // Used for unit testing only. |
32 IBOutlet NSTreeController* folderTreeController_; | 32 IBOutlet NSTreeController* folderTreeController_; |
33 IBOutlet NSOutlineView* folderTreeView_; | 33 IBOutlet NSOutlineView* folderTreeView_; |
34 | 34 |
35 NSWindow* parentWindow_; // weak | 35 NSWindow* parentWindow_; // weak |
36 Profile* profile_; // weak | 36 Profile* profile_; // weak |
37 const BookmarkNode* parentNode_; // weak; owned by the model | 37 const bookmarks::BookmarkNode* parentNode_; // weak; owned by the model |
38 GURL url_; // This and title_ are only used for new urls. | 38 GURL url_; // This and title_ are only used for new urls. |
39 base::string16 title_; | 39 base::string16 title_; |
40 BookmarkEditor::Configuration configuration_; | 40 BookmarkEditor::Configuration configuration_; |
41 NSString* initialName_; | 41 NSString* initialName_; |
42 NSString* displayName_; // Bound to a text field in the dialog. | 42 NSString* displayName_; // Bound to a text field in the dialog. |
43 BOOL creatingNewFolders_; // True while in createNewFolders. | 43 BOOL creatingNewFolders_; // True while in createNewFolders. |
44 // An array of BookmarkFolderInfo where each item describes a folder in the | 44 // An array of BookmarkFolderInfo where each item describes a folder in the |
45 // BookmarkNode structure. | 45 // BookmarkNode structure. |
46 base::scoped_nsobject<NSArray> folderTreeArray_; | 46 base::scoped_nsobject<NSArray> folderTreeArray_; |
47 // Bound to the table view giving a path to the current selections, of which | 47 // Bound to the table view giving a path to the current selections, of which |
48 // there should only ever be one. | 48 // there should only ever be one. |
49 base::scoped_nsobject<NSArray> tableSelectionPaths_; | 49 base::scoped_nsobject<NSArray> tableSelectionPaths_; |
50 // C++ bridge object that observes the BookmarkModel for me. | 50 // C++ bridge object that observes the BookmarkModel for me. |
51 scoped_ptr<BookmarkEditorBaseControllerBridge> observer_; | 51 scoped_ptr<BookmarkEditorBaseControllerBridge> observer_; |
52 } | 52 } |
53 | 53 |
54 @property(nonatomic, copy) NSString* initialName; | 54 @property(nonatomic, copy) NSString* initialName; |
55 @property(nonatomic, copy) NSString* displayName; | 55 @property(nonatomic, copy) NSString* displayName; |
56 @property(nonatomic, retain, readonly) NSArray* folderTreeArray; | 56 @property(nonatomic, retain, readonly) NSArray* folderTreeArray; |
57 @property(nonatomic, copy) NSArray* tableSelectionPaths; | 57 @property(nonatomic, copy) NSArray* tableSelectionPaths; |
58 | 58 |
59 // Designated initializer. Derived classes should call through to this init. | 59 // Designated initializer. Derived classes should call through to this init. |
60 // |url| and |title| are only used for BookmarkNode::Type::NEW_URL. | 60 // |url| and |title| are only used for BookmarkNode::Type::NEW_URL. |
61 - (id)initWithParentWindow:(NSWindow*)parentWindow | 61 - (id)initWithParentWindow:(NSWindow*)parentWindow |
62 nibName:(NSString*)nibName | 62 nibName:(NSString*)nibName |
63 profile:(Profile*)profile | 63 profile:(Profile*)profile |
64 parent:(const BookmarkNode*)parent | 64 parent:(const bookmarks::BookmarkNode*)parent |
65 url:(const GURL&)url | 65 url:(const GURL&)url |
66 title:(const base::string16&)title | 66 title:(const base::string16&)title |
67 configuration:(BookmarkEditor::Configuration)configuration; | 67 configuration:(BookmarkEditor::Configuration)configuration; |
68 | 68 |
69 // Run the bookmark editor as a modal sheet. Does not block. | 69 // Run the bookmark editor as a modal sheet. Does not block. |
70 - (void)runAsModalSheet; | 70 - (void)runAsModalSheet; |
71 | 71 |
72 // Create a new folder at the end of the selected parent folder, give it | 72 // Create a new folder at the end of the selected parent folder, give it |
73 // an untitled name, and put it into editing mode. | 73 // an untitled name, and put it into editing mode. |
74 - (IBAction)newFolder:(id)sender; | 74 - (IBAction)newFolder:(id)sender; |
(...skipping 15 matching lines...) Expand all Loading... |
90 // indicating if the operation should be allowed to continue. | 90 // indicating if the operation should be allowed to continue. |
91 // Note: A derived class should not override the ok: action. | 91 // Note: A derived class should not override the ok: action. |
92 - (IBAction)ok:(id)sender; | 92 - (IBAction)ok:(id)sender; |
93 | 93 |
94 // Methods for use by derived classes only. | 94 // Methods for use by derived classes only. |
95 | 95 |
96 // Determine and returns the rightmost selected/highlighted element (node) | 96 // Determine and returns the rightmost selected/highlighted element (node) |
97 // in the bookmark tree view if the tree view is showing, otherwise returns | 97 // in the bookmark tree view if the tree view is showing, otherwise returns |
98 // the original |parentNode_|. If the tree view is showing but nothing is | 98 // the original |parentNode_|. If the tree view is showing but nothing is |
99 // selected then the root node is returned. | 99 // selected then the root node is returned. |
100 - (const BookmarkNode*)selectedNode; | 100 - (const bookmarks::BookmarkNode*)selectedNode; |
101 | 101 |
102 // Expands the set of BookmarkNodes in |nodes|. | 102 // Expands the set of BookmarkNodes in |nodes|. |
103 - (void)expandNodes:( | 103 - (void)expandNodes:( |
104 const bookmarks::BookmarkExpandedStateTracker::Nodes&)nodes; | 104 const bookmarks::BookmarkExpandedStateTracker::Nodes&)nodes; |
105 | 105 |
106 // Returns the set of expanded BookmarkNodes. | 106 // Returns the set of expanded BookmarkNodes. |
107 - (bookmarks::BookmarkExpandedStateTracker::Nodes)getExpandedNodes; | 107 - (bookmarks::BookmarkExpandedStateTracker::Nodes)getExpandedNodes; |
108 | 108 |
109 // Select/highlight the given node within the browser tree view. If the | 109 // Select/highlight the given node within the browser tree view. If the |
110 // node is nil then select the bookmark bar node. Exposed for unit test. | 110 // node is nil then select the bookmark bar node. Exposed for unit test. |
111 - (void)selectNodeInBrowser:(const BookmarkNode*)node; | 111 - (void)selectNodeInBrowser:(const bookmarks::BookmarkNode*)node; |
112 | 112 |
113 // Notifications called when the BookmarkModel changes out from under me. | 113 // Notifications called when the BookmarkModel changes out from under me. |
114 - (void)nodeRemoved:(const BookmarkNode*)node | 114 - (void)nodeRemoved:(const bookmarks::BookmarkNode*)node |
115 fromParent:(const BookmarkNode*)parent; | 115 fromParent:(const bookmarks::BookmarkNode*)parent; |
116 - (void)modelChangedPreserveSelection:(BOOL)preserve; | 116 - (void)modelChangedPreserveSelection:(BOOL)preserve; |
117 | 117 |
118 // Determines if the ok button should be enabled, can be overridden. | 118 // Determines if the ok button should be enabled, can be overridden. |
119 - (BOOL)okEnabled; | 119 - (BOOL)okEnabled; |
120 | 120 |
121 // Accessors | 121 // Accessors |
122 - (bookmarks::BookmarkModel*)bookmarkModel; | 122 - (bookmarks::BookmarkModel*)bookmarkModel; |
123 - (Profile*)profile; | 123 - (Profile*)profile; |
124 - (const BookmarkNode*)parentNode; | 124 - (const bookmarks::BookmarkNode*)parentNode; |
125 - (const GURL&)url; | 125 - (const GURL&)url; |
126 - (const base::string16&)title; | 126 - (const base::string16&)title; |
127 | 127 |
128 @end | 128 @end |
129 | 129 |
130 // Describes the profile's bookmark folder structure: the folder name, the | 130 // Describes the profile's bookmark folder structure: the folder name, the |
131 // original BookmarkNode pointer (if the folder already exists), a BOOL | 131 // original BookmarkNode pointer (if the folder already exists), a BOOL |
132 // indicating if the folder is new (meaning: created during this session | 132 // indicating if the folder is new (meaning: created during this session |
133 // but not yet committed to the bookmark structure), and an NSArray of | 133 // but not yet committed to the bookmark structure), and an NSArray of |
134 // child folder BookmarkFolderInfo's following this same structure. | 134 // child folder BookmarkFolderInfo's following this same structure. |
135 @interface BookmarkFolderInfo : NSObject { | 135 @interface BookmarkFolderInfo : NSObject { |
136 @private | 136 @private |
137 NSString* folderName_; | 137 NSString* folderName_; |
138 const BookmarkNode* folderNode_; // weak | 138 const bookmarks::BookmarkNode* folderNode_; // weak |
139 NSMutableArray* children_; | 139 NSMutableArray* children_; |
140 BOOL newFolder_; | 140 BOOL newFolder_; |
141 } | 141 } |
142 | 142 |
143 @property(nonatomic, copy) NSString* folderName; | 143 @property(nonatomic, copy) NSString* folderName; |
144 @property(nonatomic, assign) const BookmarkNode* folderNode; | 144 @property(nonatomic, assign) const bookmarks::BookmarkNode* folderNode; |
145 @property(nonatomic, retain) NSMutableArray* children; | 145 @property(nonatomic, retain) NSMutableArray* children; |
146 @property(nonatomic, assign) BOOL newFolder; | 146 @property(nonatomic, assign) BOOL newFolder; |
147 | 147 |
148 // Convenience creator for adding a new folder to the editor's bookmark | 148 // Convenience creator for adding a new folder to the editor's bookmark |
149 // structure. This folder will be added to the bookmark model when the | 149 // structure. This folder will be added to the bookmark model when the |
150 // user accepts the dialog. |folderName| must be provided. | 150 // user accepts the dialog. |folderName| must be provided. |
151 + (id)bookmarkFolderInfoWithFolderName:(NSString*)folderName; | 151 + (id)bookmarkFolderInfoWithFolderName:(NSString*)folderName; |
152 | 152 |
153 // Designated initializer. |folderName| must be provided. For folders which | 153 // Designated initializer. |folderName| must be provided. For folders which |
154 // already exist in the bookmark model, |folderNode| and |children| (if any | 154 // already exist in the bookmark model, |folderNode| and |children| (if any |
155 // children are already attached to this folder) must be provided and | 155 // children are already attached to this folder) must be provided and |
156 // |newFolder| should be NO. For folders which the user has added during | 156 // |newFolder| should be NO. For folders which the user has added during |
157 // this session and which have not been committed yet, |newFolder| should be | 157 // this session and which have not been committed yet, |newFolder| should be |
158 // YES and |folderNode| and |children| should be NULL/nil. | 158 // YES and |folderNode| and |children| should be NULL/nil. |
159 - (id)initWithFolderName:(NSString*)folderName | 159 - (id)initWithFolderName:(NSString*)folderName |
160 folderNode:(const BookmarkNode*)folderNode | 160 folderNode:(const bookmarks::BookmarkNode*)folderNode |
161 children:(NSMutableArray*)children | 161 children:(NSMutableArray*)children |
162 newFolder:(BOOL)newFolder; | 162 newFolder:(BOOL)newFolder; |
163 | 163 |
164 // Convenience creator used during construction of the editor's bookmark | 164 // Convenience creator used during construction of the editor's bookmark |
165 // structure. |folderName| and |folderNode| must be provided. |children| | 165 // structure. |folderName| and |folderNode| must be provided. |children| |
166 // is optional. Private: exposed here for unit testing purposes. | 166 // is optional. Private: exposed here for unit testing purposes. |
167 + (id)bookmarkFolderInfoWithFolderName:(NSString*)folderName | 167 + (id)bookmarkFolderInfoWithFolderName:(NSString*)folderName |
168 folderNode:(const BookmarkNode*)folderNode | 168 folderNode: |
| 169 (const bookmarks::BookmarkNode*)folderNode |
169 children:(NSMutableArray*)children; | 170 children:(NSMutableArray*)children; |
170 | 171 |
171 @end | 172 @end |
172 | 173 |
173 @interface BookmarkEditorBaseController(TestingAPI) | 174 @interface BookmarkEditorBaseController(TestingAPI) |
174 | 175 |
175 @property(nonatomic, readonly) BOOL okButtonEnabled; | 176 @property(nonatomic, readonly) BOOL okButtonEnabled; |
176 | 177 |
177 // Create any newly added folders. New folders are nodes in folderTreeArray | 178 // Create any newly added folders. New folders are nodes in folderTreeArray |
178 // which are marked as being new (i.e. their kFolderTreeNewFolderKey | 179 // which are marked as being new (i.e. their kFolderTreeNewFolderKey |
179 // dictionary item is YES). This is called by -[ok:]. | 180 // dictionary item is YES). This is called by -[ok:]. |
180 - (void)createNewFolders; | 181 - (void)createNewFolders; |
181 | 182 |
182 // Select the given bookmark node within the tree view. | 183 // Select the given bookmark node within the tree view. |
183 - (void)selectTestNodeInBrowser:(const BookmarkNode*)node; | 184 - (void)selectTestNodeInBrowser:(const bookmarks::BookmarkNode*)node; |
184 | 185 |
185 // Return the dictionary for the folder selected in the tree. | 186 // Return the dictionary for the folder selected in the tree. |
186 - (BookmarkFolderInfo*)selectedFolder; | 187 - (BookmarkFolderInfo*)selectedFolder; |
187 | 188 |
188 @end | 189 @end |
189 | 190 |
190 #endif // CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_EDITOR_BASE_CONTROLLER_H_ | 191 #endif // CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_EDITOR_BASE_CONTROLLER_H_ |
OLD | NEW |