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 "ui/views/controls/button/button.h"
6
7#include "base/strings/utf_string_conversions.h"
8#include "ui/base/accessibility/accessible_view_state.h"
9
10namespace views {
11
12////////////////////////////////////////////////////////////////////////////////
13// Button, public:
14
15Button::~Button() {
16}
17
18void Button::SetTooltipText(const string16& tooltip_text) {
19  tooltip_text_ = tooltip_text;
20  if (accessible_name_.empty())
21    accessible_name_ = tooltip_text_;
22  TooltipTextChanged();
23}
24
25void Button::SetAccessibleName(const string16& name) {
26  accessible_name_ = name;
27}
28
29////////////////////////////////////////////////////////////////////////////////
30// Button, View overrides:
31
32bool Button::GetTooltipText(const gfx::Point& p, string16* tooltip) const {
33  if (tooltip_text_.empty())
34    return false;
35
36  *tooltip = tooltip_text_;
37  return true;
38}
39
40void Button::GetAccessibleState(ui::AccessibleViewState* state) {
41  state->role = ui::AccessibilityTypes::ROLE_PUSHBUTTON;
42  state->name = accessible_name_;
43}
44
45////////////////////////////////////////////////////////////////////////////////
46// Button, protected:
47
48Button::Button(ButtonListener* listener)
49    : listener_(listener),
50      tag_(-1) {
51  SetAccessibilityFocusable(true);
52}
53
54void Button::NotifyClick(const ui::Event& event) {
55  // We can be called when there is no listener, in cases like double clicks on
56  // menu buttons etc.
57  if (listener_)
58    listener_->ButtonPressed(this, event);
59}
60
61}  // namespace views
62