- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / cocoa / location_bar / star_decoration.mm
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 #import "chrome/browser/ui/cocoa/location_bar/star_decoration.h"
6
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 "grit/generated_resources.h"
11 #include "grit/theme_resources.h"
12 #include "ui/base/l10n/l10n_util_mac.h"
13
14 namespace {
15
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
19 // magnification.
20 const CGFloat kStarPointYOffset = 2.0;
21
22 }  // namespace
23
24 StarDecoration::StarDecoration(CommandUpdater* command_updater)
25     : command_updater_(command_updater) {
26   SetVisible(true);
27   SetStarred(false);
28 }
29
30 StarDecoration::~StarDecoration() {
31 }
32
33 void StarDecoration::SetStarred(bool starred) {
34   starred_ = 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]);
39 }
40
41 NSPoint StarDecoration::GetBubblePointInFrame(NSRect frame) {
42   const NSRect draw_frame = GetDrawRectInFrame(frame);
43   return NSMakePoint(NSMidX(draw_frame),
44                      NSMaxY(draw_frame) - kStarPointYOffset);
45 }
46
47 bool StarDecoration::AcceptsMousePress() {
48   return true;
49 }
50
51 bool StarDecoration::OnMousePressed(NSRect frame) {
52   command_updater_->ExecuteCommand(IDC_BOOKMARK_PAGE);
53   return true;
54 }
55
56 NSString* StarDecoration::GetToolTip() {
57   return tooltip_.get();
58 }