OLD | NEW |
(Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #ifndef VIEWS_WIDGET_WIDGET_DELEGATE_H_ |
| 6 #define VIEWS_WIDGET_WIDGET_DELEGATE_H_ |
| 7 #pragma once |
| 8 |
| 9 #include <string> |
| 10 |
| 11 #include "base/memory/scoped_ptr.h" |
| 12 #include "ui/base/accessibility/accessibility_types.h" |
| 13 #include "ui/base/ui_base_types.h" |
| 14 #include "views/view.h" |
| 15 |
| 16 class SkBitmap; |
| 17 |
| 18 namespace gfx { |
| 19 class Rect; |
| 20 } |
| 21 |
| 22 namespace views { |
| 23 class BubbleDelegateView; |
| 24 class ClientView; |
| 25 class DialogDelegate; |
| 26 class NonClientFrameView; |
| 27 class View; |
| 28 class Widget; |
| 29 |
| 30 // WidgetDelegate interface |
| 31 // Handles events on Widgets in context-specific ways. |
| 32 class VIEWS_EXPORT WidgetDelegate { |
| 33 public: |
| 34 WidgetDelegate(); |
| 35 |
| 36 // Called whenever the widget's position changes. |
| 37 virtual void OnWidgetMove(); |
| 38 |
| 39 // Called with the display changes (color depth or resolution). |
| 40 virtual void OnDisplayChanged(); |
| 41 |
| 42 // Called when the work area (the desktop area minus task bars, |
| 43 // menu bars, etc.) changes in size. |
| 44 virtual void OnWorkAreaChanged(); |
| 45 |
| 46 // Returns the view that should have the focus when the widget is shown. If |
| 47 // NULL no view is focused. |
| 48 virtual View* GetInitiallyFocusedView(); |
| 49 |
| 50 // Moved from WindowDelegate: ------------------------------------------------ |
| 51 // TODO(beng): sort |
| 52 |
| 53 virtual BubbleDelegateView* AsBubbleDelegate(); |
| 54 virtual DialogDelegate* AsDialogDelegate(); |
| 55 |
| 56 // Returns true if the window can ever be resized. |
| 57 virtual bool CanResize() const; |
| 58 |
| 59 // Returns true if the window can ever be maximized. |
| 60 virtual bool CanMaximize() const; |
| 61 |
| 62 // Returns true if the window can be activated. |
| 63 virtual bool CanActivate() const; |
| 64 |
| 65 // Returns true if the dialog should be displayed modally to the window that |
| 66 // opened it. Only windows with WindowType == DIALOG can be modal. |
| 67 virtual bool IsModal() const; |
| 68 |
| 69 virtual ui::AccessibilityTypes::Role GetAccessibleWindowRole() const; |
| 70 |
| 71 virtual ui::AccessibilityTypes::State GetAccessibleWindowState() const; |
| 72 |
| 73 // Returns the title to be read with screen readers. |
| 74 virtual string16 GetAccessibleWindowTitle() const; |
| 75 |
| 76 // Returns the text to be displayed in the window title. |
| 77 virtual string16 GetWindowTitle() const; |
| 78 |
| 79 // Returns true if the window should show a title in the title bar. |
| 80 virtual bool ShouldShowWindowTitle() const; |
| 81 |
| 82 // Returns true if the window's client view wants a client edge. |
| 83 virtual bool ShouldShowClientEdge() const; |
| 84 |
| 85 // Returns the app icon for the window. On Windows, this is the ICON_BIG used |
| 86 // in Alt-Tab list and Win7's taskbar. |
| 87 virtual SkBitmap GetWindowAppIcon(); |
| 88 |
| 89 // Returns the icon to be displayed in the window. |
| 90 virtual SkBitmap GetWindowIcon(); |
| 91 |
| 92 // Returns true if a window icon should be shown. |
| 93 virtual bool ShouldShowWindowIcon() const; |
| 94 |
| 95 // Execute a command in the window's controller. Returns true if the command |
| 96 // was handled, false if it was not. |
| 97 virtual bool ExecuteWindowsCommand(int command_id); |
| 98 |
| 99 // Returns the window's name identifier. Used to identify this window for |
| 100 // state restoration. |
| 101 virtual std::string GetWindowName() const; |
| 102 |
| 103 // Saves the window's bounds and "show" state. By default this uses the |
| 104 // process' local state keyed by window name (See GetWindowName above). This |
| 105 // behavior can be overridden to provide additional functionality. |
| 106 virtual void SaveWindowPlacement(const gfx::Rect& bounds, |
| 107 ui::WindowShowState show_state); |
| 108 |
| 109 // Retrieves the window's bounds and "show" states. |
| 110 // This behavior can be overridden to provide additional functionality. |
| 111 virtual bool GetSavedWindowPlacement(gfx::Rect* bounds, |
| 112 ui::WindowShowState* show_state) const; |
| 113 |
| 114 // Returns true if the window's size should be restored. If this is false, |
| 115 // only the window's origin is restored and the window is given its |
| 116 // preferred size. |
| 117 // Default is true. |
| 118 virtual bool ShouldRestoreWindowSize() const; |
| 119 |
| 120 // Called when the window closes. The delegate MUST NOT delete itself during |
| 121 // this call, since it can be called afterwards. See DeleteDelegate(). |
| 122 virtual void WindowClosing() {} |
| 123 |
| 124 // Called when the window is destroyed. No events must be sent or received |
| 125 // after this point. The delegate can use this opportunity to delete itself at |
| 126 // this time if necessary. |
| 127 virtual void DeleteDelegate() {} |
| 128 |
| 129 // Called when the user begins/ends to change the bounds of the window. |
| 130 virtual void OnWindowBeginUserBoundsChange() {} |
| 131 virtual void OnWindowEndUserBoundsChange() {} |
| 132 |
| 133 // Returns the Widget associated with this delegate. |
| 134 virtual Widget* GetWidget() = 0; |
| 135 virtual const Widget* GetWidget() const = 0; |
| 136 |
| 137 // Returns the View that is contained within this Widget. |
| 138 virtual View* GetContentsView(); |
| 139 |
| 140 // Called by the Widget to create the Client View used to host the contents |
| 141 // of the widget. |
| 142 virtual ClientView* CreateClientView(Widget* widget); |
| 143 |
| 144 // Called by the Widget to create the NonClient Frame View for this widget. |
| 145 // Return NULL to use the default one. |
| 146 virtual NonClientFrameView* CreateNonClientFrameView(); |
| 147 |
| 148 // Returns true if the window can be notified with the work area change. |
| 149 // Otherwise, the work area change for the top window will be processed by |
| 150 // the default window manager. In some cases, like panel, we would like to |
| 151 // manage the positions by ourselves. |
| 152 virtual bool WillProcessWorkAreaChange() const; |
| 153 |
| 154 protected: |
| 155 virtual ~WidgetDelegate() {} |
| 156 |
| 157 private: |
| 158 View* default_contents_view_; |
| 159 |
| 160 DISALLOW_COPY_AND_ASSIGN(WidgetDelegate); |
| 161 }; |
| 162 |
| 163 // A WidgetDelegate implementation that is-a View. Used to override GetWidget() |
| 164 // to call View's GetWidget() for the common case where a WidgetDelegate |
| 165 // implementation is-a View. |
| 166 class VIEWS_EXPORT WidgetDelegateView : public WidgetDelegate, public View { |
| 167 public: |
| 168 WidgetDelegateView(); |
| 169 virtual ~WidgetDelegateView(); |
| 170 |
| 171 // Overridden from WidgetDelegate: |
| 172 virtual Widget* GetWidget() OVERRIDE; |
| 173 virtual const Widget* GetWidget() const OVERRIDE; |
| 174 |
| 175 private: |
| 176 DISALLOW_COPY_AND_ASSIGN(WidgetDelegateView); |
| 177 }; |
| 178 |
| 179 } // namespace views |
| 180 |
| 181 #endif // VIEWS_WIDGET_WIDGET_DELEGATE_H_ |
OLD | NEW |