// Copyright (c) 2012 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_UI_COCOA_BOOKMARKS_BOOKMARK_BUTTON_CELL_H_ #define CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BUTTON_CELL_H_ #import "chrome/browser/ui/cocoa/gradient_button_cell.h" @class BookmarkContextMenuCocoaController; class BookmarkNode; // A button cell that handles drawing/highlighting of buttons in the // bookmark bar. This cell forwards mouseEntered/mouseExited events // to its control view so that pseudo-menu operations // (e.g. hover-over to open) can be implemented. @interface BookmarkButtonCell : GradientButtonCell<NSMenuDelegate> { @private // Controller for showing the context menu. Weak, owned by // BookmarkBarController. BookmarkContextMenuCocoaController* menuController_; BOOL empty_; // is this an "empty" button placeholder button cell? // Starting index of bookmarkFolder children that we care to use. int startingChildIndex_; // Should we draw the folder arrow as needed? Not used for the bar // itself but used on the folder windows. BOOL drawFolderArrow_; // Arrow for folders base::scoped_nsobject<NSImage> arrowImage_; // Text color for title. base::scoped_nsobject<NSColor> textColor_; } @property(nonatomic, readwrite, assign) const BookmarkNode* bookmarkNode; @property(nonatomic, readwrite, assign) int startingChildIndex; @property(nonatomic, readwrite, assign) BOOL drawFolderArrow; // Create a button cell which draws with a theme. + (id)buttonCellForNode:(const BookmarkNode*)node text:(NSString*)text image:(NSImage*)image menuController:(BookmarkContextMenuCocoaController*)menuController; // Create a button cell not attached to any node which draws with a theme. + (id)buttonCellWithText:(NSString*)text image:(NSImage*)image menuController:(BookmarkContextMenuCocoaController*)menuController; // Initialize a button cell which draws with a theme. // Designated initializer. - (id)initForNode:(const BookmarkNode*)node text:(NSString*)text image:(NSImage*)image menuController:(BookmarkContextMenuCocoaController*)menuController; // Initialize a button cell not attached to any node which draws with a theme. - (id)initWithText:(NSString*)text image:(NSImage*)image menuController:(BookmarkContextMenuCocoaController*)menuController; // A button cell is considered empty if it is expected to be attached to a node // and this node is NULL. If the button was created with // buttonCellForContextMenu then no node is expected and empty is always NO. - (BOOL)empty; - (void)setEmpty:(BOOL)empty; // |-setBookmarkCellText:image:| is used to set the text and image of // a BookmarkButtonCell, and align the image to the left (NSImageLeft) // if there is text in the title, and centered (NSImageCenter) if // there is not. If |title| is nil, do not reset the title. - (void)setBookmarkCellText:(NSString*)title image:(NSImage*)image; // Set the color of text in this cell. - (void)setTextColor:(NSColor*)color; - (BOOL)isFolderButtonCell; @end #endif // CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BUTTON_CELL_H_