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_EXAMPLES_TEXTFIELD_EXAMPLE_H_
6#define UI_VIEWS_EXAMPLES_TEXTFIELD_EXAMPLE_H_
7
8#include <string>
9
10#include "base/macros.h"
11#include "ui/views/controls/button/button.h"
12#include "ui/views/controls/textfield/textfield_controller.h"
13#include "ui/views/examples/example_base.h"
14
15namespace views {
16
17class LabelButton;
18
19namespace examples {
20
21// TextfieldExample mimics login screen.
22class VIEWS_EXAMPLES_EXPORT TextfieldExample : public ExampleBase,
23                                               public TextfieldController,
24                                               public ButtonListener {
25 public:
26  TextfieldExample();
27  virtual ~TextfieldExample();
28
29  // ExampleBase:
30  virtual void CreateExampleView(View* container) OVERRIDE;
31
32 private:
33  // TextfieldController:
34  virtual void ContentsChanged(Textfield* sender,
35                               const base::string16& new_contents) OVERRIDE;
36  virtual bool HandleKeyEvent(Textfield* sender,
37                              const ui::KeyEvent& key_event) OVERRIDE;
38  virtual bool HandleMouseEvent(Textfield* sender,
39                                const ui::MouseEvent& mouse_event) OVERRIDE;
40
41  // ButtonListener:
42  virtual void ButtonPressed(Button* sender, const ui::Event& event) OVERRIDE;
43
44  // Textfields for name and password.
45  Textfield* name_;
46  Textfield* password_;
47  Textfield* read_only_;
48
49  // Various buttons to control textfield.
50  LabelButton* show_password_;
51  LabelButton* clear_all_;
52  LabelButton* append_;
53  LabelButton* set_;
54  LabelButton* set_style_;
55
56  DISALLOW_COPY_AND_ASSIGN(TextfieldExample);
57};
58
59}  // namespace examples
60}  // namespace views
61
62#endif  // UI_VIEWS_EXAMPLES_TEXTFIELD_EXAMPLE_H_
63