- add sources.
[platform/framework/web/crosswalk.git] / src / ui / views / controls / button / button.cc
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
10 namespace views {
11
12 ////////////////////////////////////////////////////////////////////////////////
13 // Button, public:
14
15 Button::~Button() {
16 }
17
18 void 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
25 void Button::SetAccessibleName(const string16& name) {
26   accessible_name_ = name;
27 }
28
29 ////////////////////////////////////////////////////////////////////////////////
30 // Button, View overrides:
31
32 bool 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
40 void Button::GetAccessibleState(ui::AccessibleViewState* state) {
41   state->role = ui::AccessibilityTypes::ROLE_PUSHBUTTON;
42   state->name = accessible_name_;
43 }
44
45 ////////////////////////////////////////////////////////////////////////////////
46 // Button, protected:
47
48 Button::Button(ButtonListener* listener)
49     : listener_(listener),
50       tag_(-1) {
51   set_accessibility_focusable(true);
52 }
53
54 void 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