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

Side by Side Diff: views/window/dialog_client_view.h

Issue 8552005: views: Move views/window/ to ui/views/window directory. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « views/window/custom_frame_view.cc ('k') | views/window/dialog_client_view.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_CLIENT_VIEW_H_ 5 #ifndef VIEWS_WINDOW_DIALOG_CLIENT_VIEW_H_
6 #define VIEWS_WINDOW_DIALOG_CLIENT_VIEW_H_ 6 #define VIEWS_WINDOW_DIALOG_CLIENT_VIEW_H_
7 #pragma once 7 #pragma once
8 8
9 #include "ui/gfx/font.h" 9 #include "ui/views/window/dialog_client_view.h"
10 #include "views/focus/focus_manager.h" 10 // TODO(tfarina): remove this file once all includes have been updated.
11 #include "views/controls/button/button.h"
12 #include "views/window/client_view.h"
13 11
14 namespace views { 12 #endif // VIEWS_WINDOW_DIALOG_CLIENT_VIEW_H_
15
16 class DialogDelegate;
17 class NativeTextButton;
18 class Widget;
19 namespace internal {
20 class RootView;
21 }
22
23 ///////////////////////////////////////////////////////////////////////////////
24 // DialogClientView
25 //
26 // This ClientView subclass provides the content of a typical dialog box,
27 // including a strip of buttons at the bottom right of the window, default
28 // accelerator handlers for accept and cancel, and the ability for the
29 // embedded contents view to provide extra UI to be shown in the row of
30 // buttons.
31 //
32 // DialogClientView also provides the ability to set an arbitrary view that is
33 // positioned beneath the buttons.
34 //
35 class VIEWS_EXPORT DialogClientView : public ClientView,
36 public ButtonListener,
37 public FocusChangeListener {
38 public:
39 DialogClientView(Widget* widget, View* contents_view);
40 virtual ~DialogClientView();
41
42 // Adds the dialog buttons required by the supplied DialogDelegate to the
43 // view.
44 void ShowDialogButtons();
45
46 // Updates the enabled state and label of the buttons required by the
47 // supplied DialogDelegate
48 void UpdateDialogButtons();
49
50 // Accept the changes made in the window that contains this ClientView.
51 void AcceptWindow();
52
53 // Cancel the changes made in the window that contains this ClientView.
54 void CancelWindow();
55
56 // Accessors in case the user wishes to adjust these buttons.
57 NativeTextButton* ok_button() const { return ok_button_; }
58 NativeTextButton* cancel_button() const { return cancel_button_; }
59
60 // Sets the view that is positioned along the bottom of the buttons. The
61 // bottom view is positioned beneath the buttons at the full width of the
62 // dialog. If there is an existing bottom view it is removed and deleted.
63 void SetBottomView(View* bottom_view);
64
65 // Overridden from View:
66 virtual void NativeViewHierarchyChanged(
67 bool attached,
68 gfx::NativeView native_view,
69 internal::RootView* root_view) OVERRIDE;
70
71 // Overridden from ClientView:
72 virtual bool CanClose() OVERRIDE;
73 virtual void WidgetClosing() OVERRIDE;
74 virtual int NonClientHitTest(const gfx::Point& point) OVERRIDE;
75 virtual DialogClientView* AsDialogClientView() OVERRIDE;
76 virtual const DialogClientView* AsDialogClientView() const OVERRIDE;
77
78 // FocusChangeListener implementation:
79 virtual void OnWillChangeFocus(View* focused_before,
80 View* focused_now) OVERRIDE;
81 virtual void OnDidChangeFocus(View* focused_before,
82 View* focused_now) OVERRIDE;
83
84 protected:
85 // View overrides:
86 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
87 virtual void PaintChildren(gfx::Canvas* canvas) OVERRIDE;
88 virtual void Layout() OVERRIDE;
89 virtual void ViewHierarchyChanged(bool is_add, View* parent,
90 View* child) OVERRIDE;
91 virtual gfx::Size GetPreferredSize() OVERRIDE;
92 virtual bool AcceleratorPressed(const Accelerator& accelerator) OVERRIDE;
93
94 // ButtonListener implementation:
95 virtual void ButtonPressed(Button* sender,
96 const views::Event& event) OVERRIDE;
97
98 private:
99 // Paint the size box in the bottom right corner of the window if it is
100 // resizable.
101 void PaintSizeBox(gfx::Canvas* canvas);
102
103 // Returns the width of the specified dialog button using the correct font.
104 int GetButtonWidth(int button) const;
105 int GetButtonsHeight() const;
106
107 // Position and size various sub-views.
108 void LayoutDialogButtons();
109 void LayoutContentsView();
110
111 // Makes the specified button the default button.
112 void SetDefaultButton(NativeTextButton* button);
113
114 bool has_dialog_buttons() const { return ok_button_ || cancel_button_; }
115
116 // Create and add the extra view, if supplied by the delegate.
117 void CreateExtraView();
118
119 // Returns the DialogDelegate for the window.
120 DialogDelegate* GetDialogDelegate() const;
121
122 // Closes the widget.
123 void Close();
124
125 // Updates focus listener.
126 void UpdateFocusListener();
127
128 static void InitClass();
129
130 // The dialog buttons.
131 NativeTextButton* ok_button_;
132 NativeTextButton* cancel_button_;
133
134 // The button that is currently the default button if any.
135 NativeTextButton* default_button_;
136
137 // The button-level extra view, NULL unless the dialog delegate supplies one.
138 View* extra_view_;
139
140 // See description of DialogDelegate::GetSizeExtraViewHeightToButtons for
141 // details on this.
142 bool size_extra_view_height_to_buttons_;
143
144 // The layout rect of the size box, when visible.
145 gfx::Rect size_box_bounds_;
146
147 // True if we've notified the delegate the window is closing and the delegate
148 // allosed the close. In some situations it's possible to get two closes (see
149 // http://crbug.com/71940). This is used to avoid notifying the delegate
150 // twice, which can have bad consequences.
151 bool notified_delegate_;
152
153 // true if focus listener is added.
154 bool listening_to_focus_;
155
156 // When ancestor gets changed focus manager gets changed as well.
157 FocusManager* saved_focus_manager_;
158
159 // View positioned along the bottom, beneath the buttons.
160 View* bottom_view_;
161
162 // Static resource initialization
163 static gfx::Font* dialog_button_font_;
164
165 DISALLOW_COPY_AND_ASSIGN(DialogClientView);
166 };
167
168 } // namespace views
169
170 #endif // #ifndef VIEWS_WINDOW_DIALOG_CLIENT_VIEW_H_
OLDNEW
« no previous file with comments | « views/window/custom_frame_view.cc ('k') | views/window/dialog_client_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698