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 18StarView::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 25StarView::~StarView() { 26} 27 28void 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 35void StarView::GetAccessibleState(ui::AccessibleViewState* state) { 36 state->name = l10n_util::GetStringUTF16(IDS_ACCNAME_STAR); 37 state->role = ui::AccessibilityTypes::ROLE_PUSHBUTTON; 38} 39 40bool 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 48bool 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 54void StarView::OnMouseReleased(const views::MouseEvent& event) { 55 if (HitTest(event.location())) 56 command_updater_->ExecuteCommand(IDC_BOOKMARK_PAGE); 57} 58 59bool 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 68void StarView::BubbleClosing(Bubble* bubble, bool closed_by_escape) { 69} 70 71bool StarView::CloseOnEscape() { 72 return true; 73} 74 75bool StarView::FadeInOnShow() { 76 return false; 77} 78