Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Side by Side Diff: ui/views/window/dialog_delegate.h

Issue 851853002: It is time. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Trying to reup because the last upload failed. Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/views/window/dialog_client_view_unittest.cc ('k') | ui/views/window/dialog_delegate.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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_WINDOW_DIALOG_DELEGATE_H_
6 #define UI_VIEWS_WINDOW_DIALOG_DELEGATE_H_
7
8 #include "base/compiler_specific.h"
9 #include "base/strings/string16.h"
10 #include "ui/accessibility/ax_enums.h"
11 #include "ui/base/models/dialog_model.h"
12 #include "ui/base/ui_base_types.h"
13 #include "ui/views/widget/widget_delegate.h"
14
15 namespace views {
16
17 class DialogClientView;
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 ui::DialogModel,
30 public WidgetDelegate {
31 public:
32 DialogDelegate();
33 virtual ~DialogDelegate();
34
35 // Same as CreateDialogWidgetWithBounds() with an empty |bounds|.
36 static Widget* CreateDialogWidget(WidgetDelegate* delegate,
37 gfx::NativeWindow context,
38 gfx::NativeView parent);
39
40 // Create a dialog widget with the specified |context| or |parent|.
41 // If |bounds| is not empty, used to initially place the dialog, otherwise
42 // a default location is used.
43 static Widget* CreateDialogWidgetWithBounds(WidgetDelegate* delegate,
44 gfx::NativeWindow context,
45 gfx::NativeView parent,
46 const gfx::Rect& bounds);
47
48 // Override this function to display an extra view adjacent to the buttons.
49 // Overrides may construct the view; this will only be called once per dialog.
50 virtual View* CreateExtraView();
51
52 // Override this function to display an extra view in the titlebar.
53 // Overrides may construct the view; this will only be called once per dialog.
54 // Note: this only works for new style dialogs.
55 virtual View* CreateTitlebarExtraView();
56
57 // Override this function to display a footnote view below the buttons.
58 // Overrides may construct the view; this will only be called once per dialog.
59 virtual View* CreateFootnoteView();
60
61 // For Dialog boxes, if there is a "Cancel" button or no dialog button at all,
62 // this is called when the user presses the "Cancel" button or the Esc key.
63 // It can also be called on a close action if |Close| has not been
64 // overridden. This function should return true if the window can be closed
65 // after it returns, or false if it must remain open.
66 virtual bool Cancel();
67
68 // For Dialog boxes, this is called when the user presses the "OK" button,
69 // or the Enter key. It can also be called on a close action if |Close|
70 // has not been overridden. This function should return true if the window
71 // can be closed after it returns, or false if it must remain open.
72 // If |window_closing| is true, it means that this handler is
73 // being called because the window is being closed (e.g. by Window::Close)
74 // and there is no Cancel handler, so Accept is being called instead.
75 virtual bool Accept(bool window_closing);
76 virtual bool Accept();
77
78 // Called when the user closes the window without selecting an option,
79 // e.g. by pressing the close button on the window or using a window manager
80 // gesture. By default, this calls Accept() if the only button in the dialog
81 // is Accept, Cancel() otherwise. This function should return true if the
82 // window can be closed after it returns, or false if it must remain open.
83 virtual bool Close();
84
85 // Overridden from ui::DialogModel:
86 virtual base::string16 GetDialogLabel() const override;
87 virtual base::string16 GetDialogTitle() const override;
88 virtual int GetDialogButtons() const override;
89 virtual int GetDefaultDialogButton() const override;
90 virtual bool ShouldDefaultButtonBeBlue() const override;
91 virtual base::string16 GetDialogButtonLabel(
92 ui::DialogButton button) const override;
93 virtual bool IsDialogButtonEnabled(ui::DialogButton button) const override;
94
95 // Overridden from WidgetDelegate:
96 virtual View* GetInitiallyFocusedView() override;
97 virtual DialogDelegate* AsDialogDelegate() override;
98 virtual ClientView* CreateClientView(Widget* widget) override;
99 virtual NonClientFrameView* CreateNonClientFrameView(Widget* widget) override;
100
101 // Create a frame view using the new dialog style.
102 static NonClientFrameView* CreateDialogFrameView(Widget* widget);
103
104 // Returns whether this particular dialog should use the new dialog style.
105 virtual bool UseNewStyleForThisDialog() const;
106
107 // Called when the window has been closed.
108 virtual void OnClosed() {}
109
110 // A helper for accessing the DialogClientView object contained by this
111 // delegate's Window.
112 const DialogClientView* GetDialogClientView() const;
113 DialogClientView* GetDialogClientView();
114
115 protected:
116 // Overridden from WidgetDelegate:
117 virtual ui::AXRole GetAccessibleWindowRole() const override;
118
119 private:
120 // A flag indicating whether this dialog supports the new style.
121 bool supports_new_style_;
122 };
123
124 // A DialogDelegate implementation that is-a View. Used to override GetWidget()
125 // to call View's GetWidget() for the common case where a DialogDelegate
126 // implementation is-a View. Note that DialogDelegateView is not owned by
127 // view's hierarchy and is expected to be deleted on DeleteDelegate call.
128 class VIEWS_EXPORT DialogDelegateView : public DialogDelegate,
129 public View {
130 public:
131 DialogDelegateView();
132 virtual ~DialogDelegateView();
133
134 // Overridden from DialogDelegate:
135 virtual void DeleteDelegate() override;
136 virtual Widget* GetWidget() override;
137 virtual const Widget* GetWidget() const override;
138 virtual View* GetContentsView() override;
139
140 private:
141 DISALLOW_COPY_AND_ASSIGN(DialogDelegateView);
142 };
143
144 } // namespace views
145
146 #endif // UI_VIEWS_WINDOW_DIALOG_DELEGATE_H_
OLDNEW
« no previous file with comments | « ui/views/window/dialog_client_view_unittest.cc ('k') | ui/views/window/dialog_delegate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698