blob: a5144d0721cbb2816717cb920b853e2b51b5f06e [file] [log] [blame]
// Copyright (c) 2010 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_WINDOW_WINDOW_DELEGATE_H_
#define VIEWS_WINDOW_WINDOW_DELEGATE_H_
#include <string>
#include "base/scoped_ptr.h"
#include "views/accessibility/accessibility_types.h"
class SkBitmap;
namespace gfx {
class Rect;
}
namespace views {
class ClientView;
class DialogDelegate;
class View;
class Window;
///////////////////////////////////////////////////////////////////////////////
//
// WindowDelegate
//
// WindowDelegate is an interface implemented by objects that wish to show a
// Window. The window that is displayed uses this interface to determine how
// it should be displayed and notify the delegate object of certain events.
//
///////////////////////////////////////////////////////////////////////////////
class WindowDelegate {
public:
WindowDelegate();
virtual ~WindowDelegate();
virtual DialogDelegate* AsDialogDelegate() { return NULL; }
// Returns true if the window can ever be resized.
virtual bool CanResize() const {
return false;
}
// Returns true if the window can ever be maximized.
virtual bool CanMaximize() const {
return false;
}
// 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 {
return false;
}
virtual AccessibilityTypes::Role accessible_role() const {
return AccessibilityTypes::ROLE_WINDOW;
}
virtual AccessibilityTypes::State accessible_state() const {
return 0;
}
// Returns the text to be displayed in the window title.
virtual std::wstring GetWindowTitle() const {
return L"";
}
// Returns the view that should have the focus when the dialog is opened. If
// NULL no view is focused.
virtual View* GetInitiallyFocusedView() { return NULL; }
// Returns true if the window should show a title in the title bar.
virtual bool ShouldShowWindowTitle() const {
return true;
}
// Returns true if the window's client view wants a client edge.
virtual bool ShouldShowClientEdge() const {
return true;
}
// 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 {
return false;
}
// 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) { return false; }
// Returns the window's name identifier. Used to identify this window for
// state restoration.
virtual std::wstring GetWindowName() const {
return std::wstring();
}
// Saves the window's bounds and maximized states. 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, bool maximized);
// Retrieves the window's bounds and maximized states.
// This behavior can be overridden to provide additional functionality.
virtual bool GetSavedWindowBounds(gfx::Rect* bounds) const;
virtual bool GetSavedMaximizedState(bool* maximized) const;
// Called when the window closes.
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() { }
// Returns the View that is contained within this Window.
virtual View* GetContentsView() {
return NULL;
}
// Called by the Window to create the Client View used to host the contents
// of the window.
virtual ClientView* CreateClientView(Window* window);
Window* window() const { return window_; }
private:
friend class WindowGtk;
friend class WindowWin;
// The Window this delegate is bound to. Weak reference.
Window* window_;
};
} // namespace views
#endif // VIEWS_WINDOW_WINDOW_DELEGATE_H_