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_TEXT_EXAMPLE_H_
6#define UI_VIEWS_EXAMPLES_TEXT_EXAMPLE_H_
7
8#include "base/macros.h"
9#include "base/memory/scoped_vector.h"
10#include "ui/views/controls/button/button.h"
11#include "ui/views/controls/combobox/combobox_listener.h"
12#include "ui/views/examples/example_base.h"
13
14namespace views {
15class Checkbox;
16class GridLayout;
17
18namespace examples {
19
20class ExampleComboboxModel;
21
22class VIEWS_EXAMPLES_EXPORT TextExample : public ExampleBase,
23                                          public ButtonListener,
24                                          public ComboboxListener {
25 public:
26  TextExample();
27  virtual ~TextExample();
28
29  // ExampleBase:
30  virtual void CreateExampleView(View* container) OVERRIDE;
31
32 private:
33  // Creates and adds a check box to the layout.
34  Checkbox* AddCheckbox(GridLayout* layout, const char* name);
35
36  // Creates and adds a combobox to the layout.
37  Combobox* AddCombobox(GridLayout* layout,
38                        const char* name,
39                        const char** strings,
40                        int count);
41
42  // ButtonListener:
43  virtual void ButtonPressed(Button* button, const ui::Event& event) OVERRIDE;
44
45  // ComboboxListener:
46  virtual void OnPerformAction(Combobox* combobox) OVERRIDE;
47
48  class TextExampleView;
49  // The content of the scroll view.
50  TextExampleView* text_view_;
51
52  // Combo box for horizontal text alignment.
53  Combobox* h_align_cb_;
54
55  // Combo box for text eliding style.
56  Combobox* eliding_cb_;
57
58  // Combo box for ampersand prefix show / hide behavior.
59  Combobox* prefix_cb_;
60
61  // Combo box to choose one of the sample texts.
62  Combobox* text_cb_;
63
64  // Check box to enable/disable multiline text drawing.
65  Checkbox* multiline_checkbox_;
66
67  // Check box to enable/disable character break behavior.
68  Checkbox* break_checkbox_;
69
70  // Check box to enable/disable text halo.
71  Checkbox* halo_checkbox_;
72
73  // Check box to enable/disable bold style.
74  Checkbox* bold_checkbox_;
75
76  // Check box to enable/disable italic style.
77  Checkbox* italic_checkbox_;
78
79  // Check box to enable/disable underline style.
80  Checkbox* underline_checkbox_;
81
82  // We create a model for each of the combobox, so we need to keep them
83  // around until destruction time.
84  ScopedVector<ExampleComboboxModel> example_combobox_model_;
85
86  DISALLOW_COPY_AND_ASSIGN(TextExample);
87};
88
89}  // namespace examples
90}  // namespace views
91
92#endif  // UI_VIEWS_EXAMPLES_TEXT_EXAMPLE_H_
93