Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / ui / views / controls / link.h
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 #ifndef UI_VIEWS_CONTROLS_LINK_H_
6 #define UI_VIEWS_CONTROLS_LINK_H_
7
8 #include <string>
9
10 #include "third_party/skia/include/core/SkColor.h"
11 #include "ui/views/controls/label.h"
12
13 namespace views {
14
15 class LinkListener;
16
17 ////////////////////////////////////////////////////////////////////////////////
18 //
19 // Link class
20 //
21 // A Link is a label subclass that looks like an HTML link. It has a
22 // controller which is notified when a click occurs.
23 //
24 ////////////////////////////////////////////////////////////////////////////////
25 class VIEWS_EXPORT Link : public Label {
26  public:
27   Link();
28   explicit Link(const base::string16& title);
29   ~Link() override;
30
31   static SkColor GetDefaultEnabledColor();
32
33   const LinkListener* listener() { return listener_; }
34   void set_listener(LinkListener* listener) { listener_ = listener; }
35
36   // Label:
37   const char* GetClassName() const override;
38   gfx::NativeCursor GetCursor(const ui::MouseEvent& event) override;
39   bool CanProcessEventsWithinSubtree() const override;
40   bool OnMousePressed(const ui::MouseEvent& event) override;
41   bool OnMouseDragged(const ui::MouseEvent& event) override;
42   void OnMouseReleased(const ui::MouseEvent& event) override;
43   void OnMouseCaptureLost() override;
44   bool OnKeyPressed(const ui::KeyEvent& event) override;
45   void OnGestureEvent(ui::GestureEvent* event) override;
46   bool SkipDefaultKeyEventProcessing(const ui::KeyEvent& event) override;
47   void GetAccessibleState(ui::AXViewState* state) override;
48   void OnEnabledChanged() override;
49   void OnFocus() override;
50   void OnBlur() override;
51   void SetFontList(const gfx::FontList& font_list) override;
52   void SetText(const base::string16& text) override;
53   void SetEnabledColor(SkColor color) override;
54
55   void SetPressedColor(SkColor color);
56   void SetUnderline(bool underline);
57
58   static const char kViewClassName[];
59
60  private:
61   void Init();
62
63   void SetPressed(bool pressed);
64
65   void RecalculateFont();
66
67   LinkListener* listener_;
68
69   // Whether the link should be underlined when enabled.
70   bool underline_;
71
72   // Whether the link is currently pressed.
73   bool pressed_;
74
75   // The color when the link is neither pressed nor disabled.
76   SkColor requested_enabled_color_;
77
78   // The color when the link is pressed.
79   SkColor requested_pressed_color_;
80
81   DISALLOW_COPY_AND_ASSIGN(Link);
82 };
83
84 }  // namespace views
85
86 #endif  // UI_VIEWS_CONTROLS_LINK_H_