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.
5 #ifndef CHROME_BROWSER_UI_COCOA_LOCATION_BAR_BUTTON_DECORATION_H_
6 #define CHROME_BROWSER_UI_COCOA_LOCATION_BAR_BUTTON_DECORATION_H_
8 #import "base/mac/scoped_nsobject.h"
9 #include "chrome/browser/ui/cocoa/location_bar/location_bar_decoration.h"
10 #import "ui/base/cocoa/appkit_utils.h"
12 // |LocationBarDecoration| which looks and acts like a button. It has a
13 // nine-part image as the background, and an icon that is rendered in the center
14 // of the nine-part image.
16 class ButtonDecoration
: public LocationBarDecoration
{
24 // Constructs the ButtonDecoration with the specified background 9-part images
25 // and icons for the three button states. Also takes the maximum number of
26 // pixels of inner horizontal padding to be used between the left/right 9-part
27 // images and the icon.
28 ButtonDecoration(ui::NinePartImageIds normal_image_ids
,
30 ui::NinePartImageIds hover_image_ids
,
32 ui::NinePartImageIds pressed_image_ids
,
34 CGFloat max_inner_padding
);
36 virtual ~ButtonDecoration();
38 void SetButtonState(ButtonState state
);
39 ButtonState
GetButtonState() const;
41 // Changes the icon for the specified button state only.
42 void SetIcon(ButtonState state
, int icon_id
);
44 // Changes the icon for all button states.
45 void SetIcon(int icon_id
);
47 // Implement |LocationBarDecoration|.
48 virtual CGFloat
GetWidthForSpace(CGFloat width
) OVERRIDE
;
49 virtual void DrawInFrame(NSRect frame
, NSView
* control_view
) OVERRIDE
;
50 virtual bool AcceptsMousePress() OVERRIDE
;
51 virtual bool IsDraggable() OVERRIDE
;
52 virtual bool OnMousePressed(NSRect frame
) OVERRIDE
;
53 virtual ButtonDecoration
* AsButtonDecoration() OVERRIDE
;
56 ui::NinePartImageIds normal_image_ids_
;
57 ui::NinePartImageIds hover_image_ids_
;
58 ui::NinePartImageIds pressed_image_ids_
;
63 CGFloat max_inner_padding_
;
65 ui::NinePartImageIds
GetImageIds() const;
66 int GetIconId() const;
68 DISALLOW_COPY_AND_ASSIGN(ButtonDecoration
);
71 #endif // CHROME_BROWSER_UI_COCOA_LOCATION_BAR_BUTTON_DECORATION_H_