1 // Copyright (c) 2011 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 #include "chrome/browser/ui/views/location_bar/star_view.h" 6 7 #include "base/utf_string_conversions.h" 8 #include "chrome/app/chrome_command_ids.h" 9 #include "chrome/browser/command_updater.h" 10 #include "chrome/browser/ui/view_ids.h" 11 #include "chrome/browser/ui/views/browser_dialogs.h" 12 #include "grit/generated_resources.h" 13 #include "grit/theme_resources.h" 14 #include "ui/base/accessibility/accessible_view_state.h" 15 #include "ui/base/l10n/l10n_util.h" 16 #include "ui/base/resource/resource_bundle.h" 17 18 StarView::StarView(CommandUpdater* command_updater) 19 : command_updater_(command_updater) { 20 SetID(VIEW_ID_STAR_BUTTON); 21 SetToggled(false); 22 set_accessibility_focusable(true); 23 } 24 25 StarView::~StarView() { 26 } 27 28 void StarView::SetToggled(bool on) { 29 SetTooltipText(UTF16ToWide(l10n_util::GetStringUTF16( 30 on ? IDS_TOOLTIP_STARRED : IDS_TOOLTIP_STAR))); 31 SetImage(ResourceBundle::GetSharedInstance().GetBitmapNamed( 32 on ? IDR_STAR_LIT : IDR_STAR)); 33 } 34 35 void StarView::GetAccessibleState(ui::AccessibleViewState* state) { 36 state->name = l10n_util::GetStringUTF16(IDS_ACCNAME_STAR); 37 state->role = ui::AccessibilityTypes::ROLE_PUSHBUTTON; 38 } 39 40 bool StarView::GetTooltipText(const gfx::Point& p, std::wstring* tooltip) { 41 // Don't show tooltip to distract user if BookmarkBubbleView is showing. 42 if (browser::IsBookmarkBubbleViewShowing()) 43 return false; 44 45 return ImageView::GetTooltipText(p, tooltip); 46 } 47 48 bool StarView::OnMousePressed(const views::MouseEvent& event) { 49 // We want to show the bubble on mouse release; that is the standard behavior 50 // for buttons. 51 return true; 52 } 53 54 void StarView::OnMouseReleased(const views::MouseEvent& event) { 55 if (HitTest(event.location())) 56 command_updater_->ExecuteCommand(IDC_BOOKMARK_PAGE); 57 } 58 59 bool StarView::OnKeyPressed(const views::KeyEvent& event) { 60 if (event.key_code() == ui::VKEY_SPACE || 61 event.key_code() == ui::VKEY_RETURN) { 62 command_updater_->ExecuteCommand(IDC_BOOKMARK_PAGE); 63 return true; 64 } 65 return false; 66 } 67 68 void StarView::BubbleClosing(Bubble* bubble, bool closed_by_escape) { 69 } 70 71 bool StarView::CloseOnEscape() { 72 return true; 73 } 74 75 bool StarView::FadeInOnShow() { 76 return false; 77 } 78