OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef VIEWS_WINDOW_DIALOG_DELEGATE_H_ | 5 #ifndef VIEWS_WINDOW_DIALOG_DELEGATE_H_ |
6 #define VIEWS_WINDOW_DIALOG_DELEGATE_H_ | 6 #define VIEWS_WINDOW_DIALOG_DELEGATE_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include "base/string16.h" | 9 #include "ui/views/window/dialog_delegate.h" |
10 #include "ui/base/accessibility/accessibility_types.h" | 10 // TODO(tfarina): remove this file once all includes have been updated. |
11 #include "ui/base/ui_base_types.h" | |
12 #include "views/widget/widget_delegate.h" | |
13 #include "views/window/dialog_client_view.h" | |
14 | |
15 namespace views { | |
16 | |
17 class View; | |
18 | |
19 /////////////////////////////////////////////////////////////////////////////// | |
20 // | |
21 // DialogDelegate | |
22 // | |
23 // DialogDelegate is an interface implemented by objects that wish to show a | |
24 // dialog box Window. The window that is displayed uses this interface to | |
25 // determine how it should be displayed and notify the delegate object of | |
26 // certain events. | |
27 // | |
28 /////////////////////////////////////////////////////////////////////////////// | |
29 class VIEWS_EXPORT DialogDelegate : public WidgetDelegate { | |
30 public: | |
31 virtual DialogDelegate* AsDialogDelegate(); | |
32 | |
33 // Returns a mask specifying which of the available DialogButtons are visible | |
34 // for the dialog. Note: If an OK button is provided, you should provide a | |
35 // CANCEL button. A dialog box with just an OK button is frowned upon and | |
36 // considered a very special case, so if you're planning on including one, | |
37 // you should reconsider, or beng says there will be stabbings. | |
38 // | |
39 // To use the extra button you need to override GetDialogButtons() | |
40 virtual int GetDialogButtons() const; | |
41 | |
42 // Returns the default dialog button. This should not be a mask as only | |
43 // one button should ever be the default button. Return | |
44 // ui::DIALOG_BUTTON_NONE if there is no default. Default | |
45 // behavior is to return ui::DIALOG_BUTTON_OK or | |
46 // ui::DIALOG_BUTTON_CANCEL (in that order) if they are | |
47 // present, ui::DIALOG_BUTTON_NONE otherwise. | |
48 virtual int GetDefaultDialogButton() const; | |
49 | |
50 // Returns the label of the specified dialog button. | |
51 virtual string16 GetDialogButtonLabel(ui::DialogButton button) const; | |
52 | |
53 // Returns whether the specified dialog button is enabled. | |
54 virtual bool IsDialogButtonEnabled(ui::DialogButton button) const; | |
55 | |
56 // Returns whether the specified dialog button is visible. | |
57 virtual bool IsDialogButtonVisible(ui::DialogButton button) const; | |
58 | |
59 // Returns whether accelerators are enabled on the button. This is invoked | |
60 // when an accelerator is pressed, not at construction time. This | |
61 // returns true. | |
62 virtual bool AreAcceleratorsEnabled(ui::DialogButton button); | |
63 | |
64 // Override this function if with a view which will be shown in the same | |
65 // row as the OK and CANCEL buttons but flush to the left and extending | |
66 // up to the buttons. | |
67 virtual View* GetExtraView(); | |
68 | |
69 // Returns whether the height of the extra view should be at least as tall as | |
70 // the buttons. The default (false) is to give the extra view it's preferred | |
71 // height. By returning true the height becomes | |
72 // max(extra_view preferred height, buttons preferred height). | |
73 virtual bool GetSizeExtraViewHeightToButtons(); | |
74 | |
75 // For Dialog boxes, if there is a "Cancel" button, this is called when the | |
76 // user presses the "Cancel" button or the Close button on the window or | |
77 // in the system menu, or presses the Esc key. This function should return | |
78 // true if the window can be closed after it returns, or false if it must | |
79 // remain open. | |
80 virtual bool Cancel(); | |
81 | |
82 // For Dialog boxes, this is called when the user presses the "OK" button, | |
83 // or the Enter key. Can also be called on Esc key or close button | |
84 // presses if there is no "Cancel" button. This function should return | |
85 // true if the window can be closed after it returns, or false if it must | |
86 // remain open. If |window_closing| is true, it means that this handler is | |
87 // being called because the window is being closed (e.g. by Window::Close) | |
88 // and there is no Cancel handler, so Accept is being called instead. | |
89 virtual bool Accept(bool window_closing); | |
90 virtual bool Accept(); | |
91 | |
92 // Overridden from WindowDelegate: | |
93 virtual View* GetInitiallyFocusedView() OVERRIDE; | |
94 virtual ClientView* CreateClientView(Widget* widget) OVERRIDE; | |
95 | |
96 // Called when the window has been closed. | |
97 virtual void OnClose() {} | |
98 | |
99 // A helper for accessing the DialogClientView object contained by this | |
100 // delegate's Window. | |
101 const DialogClientView* GetDialogClientView() const; | |
102 DialogClientView* GetDialogClientView(); | |
103 | |
104 protected: | |
105 // Overridden from WindowDelegate: | |
106 virtual ui::AccessibilityTypes::Role GetAccessibleWindowRole() const OVERRIDE; | |
107 }; | |
108 | |
109 // A DialogDelegate implementation that is-a View. Used to override GetWidget() | |
110 // to call View's GetWidget() for the common case where a DialogDelegate | |
111 // implementation is-a View. | |
112 class VIEWS_EXPORT DialogDelegateView : public DialogDelegate, | |
113 public View { | |
114 public: | |
115 DialogDelegateView(); | |
116 virtual ~DialogDelegateView(); | |
117 | |
118 // Overridden from DialogDelegate: | |
119 virtual Widget* GetWidget() OVERRIDE; | |
120 virtual const Widget* GetWidget() const OVERRIDE; | |
121 | |
122 private: | |
123 DISALLOW_COPY_AND_ASSIGN(DialogDelegateView); | |
124 }; | |
125 | |
126 } // namespace views | |
127 | 11 |
128 #endif // VIEWS_WINDOW_DIALOG_DELEGATE_H_ | 12 #endif // VIEWS_WINDOW_DIALOG_DELEGATE_H_ |
OLD | NEW |