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 #import "chrome/browser/ui/cocoa/location_bar/star_decoration.h"
7 #include "chrome/app/chrome_command_ids.h"
8 #include "chrome/browser/command_updater.h"
9 #import "chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.h"
10 #include "chrome/grit/generated_resources.h"
11 #include "grit/theme_resources.h"
12 #include "ui/base/l10n/l10n_util_mac.h"
16 // The info-bubble point should look like it points to the point
17 // between the star's lower tips. The popup should be where the
18 // Omnibox popup ends up (2px below field). Determined via Pixie.app
20 const CGFloat kStarPointYOffset = 2.0;
24 StarDecoration::StarDecoration(CommandUpdater* command_updater)
25 : command_updater_(command_updater) {
30 StarDecoration::~StarDecoration() {
33 void StarDecoration::SetStarred(bool starred) {
35 const int image_id = starred ? IDR_STAR_LIT : IDR_STAR;
36 const int tip_id = starred ? IDS_TOOLTIP_STARRED : IDS_TOOLTIP_STAR;
37 SetImage(OmniboxViewMac::ImageForResource(image_id));
38 tooltip_.reset([l10n_util::GetNSStringWithFixup(tip_id) retain]);
41 NSPoint StarDecoration::GetBubblePointInFrame(NSRect frame) {
42 const NSRect draw_frame = GetDrawRectInFrame(frame);
43 return NSMakePoint(NSMidX(draw_frame),
44 NSMaxY(draw_frame) - kStarPointYOffset);
47 bool StarDecoration::AcceptsMousePress() {
51 bool StarDecoration::OnMousePressed(NSRect frame, NSPoint location) {
52 command_updater_->ExecuteCommand(IDC_BOOKMARK_PAGE);
56 NSString* StarDecoration::GetToolTip() {
57 return tooltip_.get();