Index: views/widget/widget_delegate.h |
diff --git a/views/widget/widget_delegate.h b/views/widget/widget_delegate.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..854c70b1b71d6ab018833640285b336e1ff228dd |
--- /dev/null |
+++ b/views/widget/widget_delegate.h |
@@ -0,0 +1,181 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef VIEWS_WIDGET_WIDGET_DELEGATE_H_ |
+#define VIEWS_WIDGET_WIDGET_DELEGATE_H_ |
+#pragma once |
+ |
+#include <string> |
+ |
+#include "base/memory/scoped_ptr.h" |
+#include "ui/base/accessibility/accessibility_types.h" |
+#include "ui/base/ui_base_types.h" |
+#include "views/view.h" |
+ |
+class SkBitmap; |
+ |
+namespace gfx { |
+class Rect; |
+} |
+ |
+namespace views { |
+class BubbleDelegateView; |
+class ClientView; |
+class DialogDelegate; |
+class NonClientFrameView; |
+class View; |
+class Widget; |
+ |
+// WidgetDelegate interface |
+// Handles events on Widgets in context-specific ways. |
+class VIEWS_EXPORT WidgetDelegate { |
+ public: |
+ WidgetDelegate(); |
+ |
+ // Called whenever the widget's position changes. |
+ virtual void OnWidgetMove(); |
+ |
+ // Called with the display changes (color depth or resolution). |
+ virtual void OnDisplayChanged(); |
+ |
+ // Called when the work area (the desktop area minus task bars, |
+ // menu bars, etc.) changes in size. |
+ virtual void OnWorkAreaChanged(); |
+ |
+ // Returns the view that should have the focus when the widget is shown. If |
+ // NULL no view is focused. |
+ virtual View* GetInitiallyFocusedView(); |
+ |
+ // Moved from WindowDelegate: ------------------------------------------------ |
+ // TODO(beng): sort |
+ |
+ virtual BubbleDelegateView* AsBubbleDelegate(); |
+ virtual DialogDelegate* AsDialogDelegate(); |
+ |
+ // Returns true if the window can ever be resized. |
+ virtual bool CanResize() const; |
+ |
+ // Returns true if the window can ever be maximized. |
+ virtual bool CanMaximize() const; |
+ |
+ // Returns true if the window can be activated. |
+ virtual bool CanActivate() const; |
+ |
+ // Returns true if the dialog should be displayed modally to the window that |
+ // opened it. Only windows with WindowType == DIALOG can be modal. |
+ virtual bool IsModal() const; |
+ |
+ virtual ui::AccessibilityTypes::Role GetAccessibleWindowRole() const; |
+ |
+ virtual ui::AccessibilityTypes::State GetAccessibleWindowState() const; |
+ |
+ // Returns the title to be read with screen readers. |
+ virtual string16 GetAccessibleWindowTitle() const; |
+ |
+ // Returns the text to be displayed in the window title. |
+ virtual string16 GetWindowTitle() const; |
+ |
+ // Returns true if the window should show a title in the title bar. |
+ virtual bool ShouldShowWindowTitle() const; |
+ |
+ // Returns true if the window's client view wants a client edge. |
+ virtual bool ShouldShowClientEdge() const; |
+ |
+ // Returns the app icon for the window. On Windows, this is the ICON_BIG used |
+ // in Alt-Tab list and Win7's taskbar. |
+ virtual SkBitmap GetWindowAppIcon(); |
+ |
+ // Returns the icon to be displayed in the window. |
+ virtual SkBitmap GetWindowIcon(); |
+ |
+ // Returns true if a window icon should be shown. |
+ virtual bool ShouldShowWindowIcon() const; |
+ |
+ // Execute a command in the window's controller. Returns true if the command |
+ // was handled, false if it was not. |
+ virtual bool ExecuteWindowsCommand(int command_id); |
+ |
+ // Returns the window's name identifier. Used to identify this window for |
+ // state restoration. |
+ virtual std::string GetWindowName() const; |
+ |
+ // Saves the window's bounds and "show" state. By default this uses the |
+ // process' local state keyed by window name (See GetWindowName above). This |
+ // behavior can be overridden to provide additional functionality. |
+ virtual void SaveWindowPlacement(const gfx::Rect& bounds, |
+ ui::WindowShowState show_state); |
+ |
+ // Retrieves the window's bounds and "show" states. |
+ // This behavior can be overridden to provide additional functionality. |
+ virtual bool GetSavedWindowPlacement(gfx::Rect* bounds, |
+ ui::WindowShowState* show_state) const; |
+ |
+ // Returns true if the window's size should be restored. If this is false, |
+ // only the window's origin is restored and the window is given its |
+ // preferred size. |
+ // Default is true. |
+ virtual bool ShouldRestoreWindowSize() const; |
+ |
+ // Called when the window closes. The delegate MUST NOT delete itself during |
+ // this call, since it can be called afterwards. See DeleteDelegate(). |
+ virtual void WindowClosing() {} |
+ |
+ // Called when the window is destroyed. No events must be sent or received |
+ // after this point. The delegate can use this opportunity to delete itself at |
+ // this time if necessary. |
+ virtual void DeleteDelegate() {} |
+ |
+ // Called when the user begins/ends to change the bounds of the window. |
+ virtual void OnWindowBeginUserBoundsChange() {} |
+ virtual void OnWindowEndUserBoundsChange() {} |
+ |
+ // Returns the Widget associated with this delegate. |
+ virtual Widget* GetWidget() = 0; |
+ virtual const Widget* GetWidget() const = 0; |
+ |
+ // Returns the View that is contained within this Widget. |
+ virtual View* GetContentsView(); |
+ |
+ // Called by the Widget to create the Client View used to host the contents |
+ // of the widget. |
+ virtual ClientView* CreateClientView(Widget* widget); |
+ |
+ // Called by the Widget to create the NonClient Frame View for this widget. |
+ // Return NULL to use the default one. |
+ virtual NonClientFrameView* CreateNonClientFrameView(); |
+ |
+ // Returns true if the window can be notified with the work area change. |
+ // Otherwise, the work area change for the top window will be processed by |
+ // the default window manager. In some cases, like panel, we would like to |
+ // manage the positions by ourselves. |
+ virtual bool WillProcessWorkAreaChange() const; |
+ |
+ protected: |
+ virtual ~WidgetDelegate() {} |
+ |
+ private: |
+ View* default_contents_view_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(WidgetDelegate); |
+}; |
+ |
+// A WidgetDelegate implementation that is-a View. Used to override GetWidget() |
+// to call View's GetWidget() for the common case where a WidgetDelegate |
+// implementation is-a View. |
+class VIEWS_EXPORT WidgetDelegateView : public WidgetDelegate, public View { |
+ public: |
+ WidgetDelegateView(); |
+ virtual ~WidgetDelegateView(); |
+ |
+ // Overridden from WidgetDelegate: |
+ virtual Widget* GetWidget() OVERRIDE; |
+ virtual const Widget* GetWidget() const OVERRIDE; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(WidgetDelegateView); |
+}; |
+ |
+} // namespace views |
+ |
+#endif // VIEWS_WIDGET_WIDGET_DELEGATE_H_ |