- add sources.
[platform/framework/web/crosswalk.git] / src / ui / views / widget / widget_delegate.cc
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 #include "ui/views/widget/widget_delegate.h"
6
7 #include "base/strings/utf_string_conversions.h"
8 #include "ui/gfx/image/image_skia.h"
9 #include "ui/views/bubble/bubble_delegate.h"
10 #include "ui/views/view.h"
11 #include "ui/views/views_delegate.h"
12 #include "ui/views/widget/widget.h"
13 #include "ui/views/window/client_view.h"
14
15 namespace views {
16
17 ////////////////////////////////////////////////////////////////////////////////
18 // WidgetDelegate:
19
20 WidgetDelegate::WidgetDelegate() : default_contents_view_(NULL) {
21 }
22
23 void WidgetDelegate::OnWidgetMove() {
24 }
25
26 void WidgetDelegate::OnDisplayChanged() {
27 }
28
29 void WidgetDelegate::OnWorkAreaChanged() {
30 }
31
32 View* WidgetDelegate::GetInitiallyFocusedView() {
33   return NULL;
34 }
35
36 BubbleDelegateView* WidgetDelegate::AsBubbleDelegate() {
37   return NULL;
38 }
39
40 DialogDelegate* WidgetDelegate::AsDialogDelegate() {
41   return NULL;
42 }
43
44 bool WidgetDelegate::CanResize() const {
45   return false;
46 }
47
48 bool WidgetDelegate::CanMaximize() const {
49   return false;
50 }
51
52 bool WidgetDelegate::CanActivate() const {
53   return true;
54 }
55
56 ui::ModalType WidgetDelegate::GetModalType() const {
57   return ui::MODAL_TYPE_NONE;
58 }
59
60 ui::AccessibilityTypes::Role WidgetDelegate::GetAccessibleWindowRole() const {
61   return ui::AccessibilityTypes::ROLE_WINDOW;
62 }
63
64 string16 WidgetDelegate::GetAccessibleWindowTitle() const {
65   return GetWindowTitle();
66 }
67
68 string16 WidgetDelegate::GetWindowTitle() const {
69   return string16();
70 }
71
72 bool WidgetDelegate::ShouldShowWindowTitle() const {
73   return true;
74 }
75
76 bool WidgetDelegate::ShouldShowCloseButton() const {
77   return true;
78 }
79
80 bool WidgetDelegate::ShouldHandleSystemCommands() const {
81   const Widget* widget = GetWidget();
82   if (!widget)
83     return false;
84
85   return widget->non_client_view() != NULL;
86 }
87
88 gfx::ImageSkia WidgetDelegate::GetWindowAppIcon() {
89   // Use the window icon as app icon by default.
90   return GetWindowIcon();
91 }
92
93 // Returns the icon to be displayed in the window.
94 gfx::ImageSkia WidgetDelegate::GetWindowIcon() {
95   return gfx::ImageSkia();
96 }
97
98 bool WidgetDelegate::ShouldShowWindowIcon() const {
99   return false;
100 }
101
102 bool WidgetDelegate::ExecuteWindowsCommand(int command_id) {
103   return false;
104 }
105
106 std::string WidgetDelegate::GetWindowName() const {
107   return std::string();
108 }
109
110 void WidgetDelegate::SaveWindowPlacement(const gfx::Rect& bounds,
111                                          ui::WindowShowState show_state) {
112   std::string window_name = GetWindowName();
113   if (!ViewsDelegate::views_delegate || window_name.empty())
114     return;
115
116   ViewsDelegate::views_delegate->SaveWindowPlacement(
117       GetWidget(), window_name, bounds, show_state);
118 }
119
120 bool WidgetDelegate::GetSavedWindowPlacement(
121     const Widget* widget,
122     gfx::Rect* bounds,
123     ui::WindowShowState* show_state) const {
124   std::string window_name = GetWindowName();
125   if (!ViewsDelegate::views_delegate || window_name.empty())
126     return false;
127
128   return ViewsDelegate::views_delegate->GetSavedWindowPlacement(
129       widget, window_name, bounds, show_state);
130 }
131
132 bool WidgetDelegate::ShouldRestoreWindowSize() const {
133   return true;
134 }
135
136 View* WidgetDelegate::GetContentsView() {
137   if (!default_contents_view_)
138     default_contents_view_ = new View;
139   return default_contents_view_;
140 }
141
142 ClientView* WidgetDelegate::CreateClientView(Widget* widget) {
143   return new ClientView(widget, GetContentsView());
144 }
145
146 NonClientFrameView* WidgetDelegate::CreateNonClientFrameView(Widget* widget) {
147   return NULL;
148 }
149
150 View* WidgetDelegate::CreateOverlayView() {
151   return NULL;
152 }
153
154 bool WidgetDelegate::WillProcessWorkAreaChange() const {
155   return false;
156 }
157
158 bool WidgetDelegate::WidgetHasHitTestMask() const {
159   return false;
160 }
161
162 void WidgetDelegate::GetWidgetHitTestMask(gfx::Path* mask) const {
163   DCHECK(mask);
164 }
165
166 bool WidgetDelegate::ShouldAdvanceFocusToTopLevelWidget() const {
167   return false;
168 }
169
170 bool WidgetDelegate::ShouldDescendIntoChildForEventHandling(
171     gfx::NativeView child,
172     const gfx::Point& location) {
173   return true;
174 }
175
176 ////////////////////////////////////////////////////////////////////////////////
177 // WidgetDelegateView:
178
179 WidgetDelegateView::WidgetDelegateView() {
180   // A WidgetDelegate should be deleted on DeleteDelegate.
181   set_owned_by_client();
182 }
183
184 WidgetDelegateView::~WidgetDelegateView() {
185 }
186
187 void WidgetDelegateView::DeleteDelegate() {
188   delete this;
189 }
190
191 Widget* WidgetDelegateView::GetWidget() {
192   return View::GetWidget();
193 }
194
195 const Widget* WidgetDelegateView::GetWidget() const {
196   return View::GetWidget();
197 }
198
199 }  // namespace views