summaryrefslogtreecommitdiffstats
path: root/views/window/window.h
diff options
context:
space:
mode:
Diffstat (limited to 'views/window/window.h')
-rw-r--r--views/window/window.h135
1 files changed, 135 insertions, 0 deletions
diff --git a/views/window/window.h b/views/window/window.h
new file mode 100644
index 0000000..17a2ff5
--- /dev/null
+++ b/views/window/window.h
@@ -0,0 +1,135 @@
+// Copyright (c) 2009 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_H_
+#define VIEWS_WINDOW_WINDOW_H_
+
+#include "base/gfx/native_widget_types.h"
+
+namespace gfx {
+class Rect;
+class Size;
+}
+
+namespace views {
+
+class ClientView;
+class NonClientFrameView;
+class NonClientView;
+class WindowDelegate;
+
+// An interface implemented by an object that provides a top level window.
+class Window {
+ public:
+ virtual ~Window() {}
+
+ // Creates an instance of an object implementing this interface.
+ static Window* CreateChromeWindow(gfx::NativeWindow parent,
+ const gfx::Rect& bounds,
+ WindowDelegate* window_delegate);
+
+ // Returns the preferred size of the contents view of this window based on
+ // its localized size data. The width in cols is held in a localized string
+ // resource identified by |col_resource_id|, the height in the same fashion.
+ // TODO(beng): This should eventually live somewhere else, probably closer to
+ // ClientView.
+ static int GetLocalizedContentsWidth(int col_resource_id);
+ static int GetLocalizedContentsHeight(int row_resource_id);
+ static gfx::Size GetLocalizedContentsSize(int col_resource_id,
+ int row_resource_id);
+
+ // Closes all windows that aren't identified as "app windows" via
+ // IsAppWindow. Called during application shutdown when the last "app window"
+ // is closed.
+ static void CloseAllSecondaryWindows();
+
+ // Retrieves the window's bounds, including its frame.
+ virtual gfx::Rect GetBounds() const = 0;
+
+ // Retrieves the restored bounds for the window.
+ virtual gfx::Rect GetNormalBounds() const = 0;
+
+ // Sizes and/or places the window to the specified bounds, size or position.
+ virtual void SetBounds(const gfx::Rect& bounds) = 0;
+
+ // As above, except the window is inserted after |other_window| in the window
+ // Z-order. If this window is not yet visible, other_window's monitor is used
+ // as the constraining rectangle, rather than this window's monitor.
+ virtual void SetBounds(const gfx::Rect& bounds,
+ gfx::NativeWindow other_window) = 0;
+
+ // Makes the window visible.
+ virtual void Show() = 0;
+
+ // Activate the window, assuming it already exists and is visible.
+ virtual void Activate() = 0;
+
+ // Closes the window, ultimately destroying it. This isn't immediate (it
+ // occurs after a return to the message loop. Implementors must also make sure
+ // that invoking Close multiple times doesn't cause bad things to happen,
+ // since it can happen.
+ virtual void Close() = 0;
+
+ // Maximizes/minimizes/restores the window.
+ virtual void Maximize() = 0;
+ virtual void Minimize() = 0;
+ virtual void Restore() = 0;
+
+ // Whether or not the window is currently active.
+ virtual bool IsActive() const = 0;
+
+ // Whether or not the window is currently visible.
+ virtual bool IsVisible() const = 0;
+
+ // Whether or not the window is maximized or minimized.
+ virtual bool IsMaximized() const = 0;
+ virtual bool IsMinimized() const = 0;
+
+ // Accessors for fullscreen state.
+ virtual void SetFullscreen(bool fullscreen) = 0;
+ virtual bool IsFullscreen() const = 0;
+
+ // Returns true if the Window is considered to be an "app window" - i.e.
+ // any window which when it is the last of its type closed causes the
+ // application to exit.
+ virtual bool IsAppWindow() const { return false; }
+
+ // Toggles the enable state for the Close button (and the Close menu item in
+ // the system menu).
+ virtual void EnableClose(bool enable) = 0;
+
+ // Prevents the window from being rendered as deactivated the next time it is.
+ // This state is reset automatically as soon as the window becomes activated
+ // again. There is no ability to control the state through this API as this
+ // leads to sync problems.
+ virtual void DisableInactiveRendering() = 0;
+
+ // Tell the window to update its title from the delegate.
+ virtual void UpdateWindowTitle() = 0;
+
+ // Tell the window to update its icon from the delegate.
+ virtual void UpdateWindowIcon() = 0;
+
+ // Creates an appropriate NonClientFrameView for this window.
+ virtual NonClientFrameView* CreateFrameViewForWindow() = 0;
+
+ // Updates the frame after an event caused it to be changed.
+ virtual void UpdateFrameAfterFrameChange() = 0;
+
+ // Retrieves the Window's delegate.
+ virtual WindowDelegate* GetDelegate() const = 0;
+
+ // Retrieves the Window's non-client view.
+ virtual NonClientView* GetNonClientView() const = 0;
+
+ // Retrieves the Window's client view.
+ virtual ClientView* GetClientView() const = 0;
+
+ // Retrieves the Window's native window handle.
+ virtual gfx::NativeWindow GetNativeWindow() const = 0;
+};
+
+} // namespace views
+
+#endif // #ifndef VIEWS_WINDOW_WINDOW_H_