- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / cocoa / bookmarks / bookmark_button_cell.h
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
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BUTTON_CELL_H_
6 #define CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BUTTON_CELL_H_
7
8 #import "chrome/browser/ui/cocoa/gradient_button_cell.h"
9
10 @class BookmarkContextMenuCocoaController;
11 class BookmarkNode;
12
13 // A button cell that handles drawing/highlighting of buttons in the
14 // bookmark bar.  This cell forwards mouseEntered/mouseExited events
15 // to its control view so that pseudo-menu operations
16 // (e.g. hover-over to open) can be implemented.
17 @interface BookmarkButtonCell : GradientButtonCell<NSMenuDelegate> {
18  @private
19   // Controller for showing the context menu. Weak, owned by
20   // BookmarkBarController.
21   BookmarkContextMenuCocoaController* menuController_;
22
23   BOOL empty_;  // is this an "empty" button placeholder button cell?
24
25   // Starting index of bookmarkFolder children that we care to use.
26   int startingChildIndex_;
27
28   // Should we draw the folder arrow as needed?  Not used for the bar
29   // itself but used on the folder windows.
30   BOOL drawFolderArrow_;
31
32   // Arrow for folders
33   base::scoped_nsobject<NSImage> arrowImage_;
34
35   // Text color for title.
36   base::scoped_nsobject<NSColor> textColor_;
37 }
38
39 @property(nonatomic, readwrite, assign) const BookmarkNode* bookmarkNode;
40 @property(nonatomic, readwrite, assign) int startingChildIndex;
41 @property(nonatomic, readwrite, assign) BOOL drawFolderArrow;
42
43 // Create a button cell which draws with a theme.
44 + (id)buttonCellForNode:(const BookmarkNode*)node
45                    text:(NSString*)text
46                   image:(NSImage*)image
47          menuController:(BookmarkContextMenuCocoaController*)menuController;
48
49 // Create a button cell not attached to any node which draws with a theme.
50 + (id)buttonCellWithText:(NSString*)text
51                    image:(NSImage*)image
52           menuController:(BookmarkContextMenuCocoaController*)menuController;
53
54 // Initialize a button cell which draws with a theme.
55 // Designated initializer.
56 - (id)initForNode:(const BookmarkNode*)node
57              text:(NSString*)text
58             image:(NSImage*)image
59    menuController:(BookmarkContextMenuCocoaController*)menuController;
60
61 // Initialize a button cell not attached to any node which draws with a theme.
62 - (id)initWithText:(NSString*)text
63              image:(NSImage*)image
64     menuController:(BookmarkContextMenuCocoaController*)menuController;
65
66 // A button cell is considered empty if it is expected to be attached to a node
67 // and this node is NULL. If the button was created with
68 // buttonCellForContextMenu then no node is expected and empty is always NO.
69 - (BOOL)empty;
70 - (void)setEmpty:(BOOL)empty;
71
72 // |-setBookmarkCellText:image:| is used to set the text and image of
73 // a BookmarkButtonCell, and align the image to the left (NSImageLeft)
74 // if there is text in the title, and centered (NSImageCenter) if
75 // there is not.  If |title| is nil, do not reset the title.
76 - (void)setBookmarkCellText:(NSString*)title
77                       image:(NSImage*)image;
78
79 // Set the color of text in this cell.
80 - (void)setTextColor:(NSColor*)color;
81
82 - (BOOL)isFolderButtonCell;
83
84 @end
85
86 #endif  // CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BUTTON_CELL_H_