panel_window.h revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
1a4b44dd9d30929a35c44d85102e5241ee847b2f2Ted Kremenek// Copyright (c) 2012 The Chromium Authors. All rights reserved.
28588896b4779a617e5d257423ef6178431c8bda3Ted Kremenek// Use of this source code is governed by a BSD-style license that can be
38588896b4779a617e5d257423ef6178431c8bda3Ted Kremenek// found in the LICENSE file.
48588896b4779a617e5d257423ef6178431c8bda3Ted Kremenek
58588896b4779a617e5d257423ef6178431c8bda3Ted Kremenek#ifndef ASH_SHELL_PANEL_WINDOW_H_
68588896b4779a617e5d257423ef6178431c8bda3Ted Kremenek#define ASH_SHELL_PANEL_WINDOW_H_
78588896b4779a617e5d257423ef6178431c8bda3Ted Kremenek
88588896b4779a617e5d257423ef6178431c8bda3Ted Kremenek#include "base/basictypes.h"
98588896b4779a617e5d257423ef6178431c8bda3Ted Kremenek#include "ui/aura/aura_export.h"
10a4b44dd9d30929a35c44d85102e5241ee847b2f2Ted Kremenek#include "ui/views/widget/widget.h"
118588896b4779a617e5d257423ef6178431c8bda3Ted Kremenek#include "ui/views/widget/widget_delegate.h"
128588896b4779a617e5d257423ef6178431c8bda3Ted Kremenek
138588896b4779a617e5d257423ef6178431c8bda3Ted Kremeneknamespace ash {
148588896b4779a617e5d257423ef6178431c8bda3Ted Kremenek
15b09f6e15c59b89d5820db8ef40598eb1d1323c1fEli Friedmanclass PanelFrameView;
1610e286aa8d39fb51a21412850265d9dae74613eeChris Lattner
178588896b4779a617e5d257423ef6178431c8bda3Ted Kremenek// Example Class for panel windows (Widget::InitParams::TYPE_PANEL).
1810e286aa8d39fb51a21412850265d9dae74613eeChris Lattner// Instances of PanelWindow will get added to the PanelContainer top level
198588896b4779a617e5d257423ef6178431c8bda3Ted Kremenek// window which manages the panel layout through PanelLayoutManager.
2010e286aa8d39fb51a21412850265d9dae74613eeChris Lattnerclass PanelWindow : public views::WidgetDelegateView {
218588896b4779a617e5d257423ef6178431c8bda3Ted Kremenek public:
228588896b4779a617e5d257423ef6178431c8bda3Ted Kremenek  explicit PanelWindow(const std::string& name);
23df5a237b69b5ca74dcbcf9e6306b0f86476f6b32Daniel Dunbar  virtual ~PanelWindow();
24df5a237b69b5ca74dcbcf9e6306b0f86476f6b32Daniel Dunbar
25651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  // Creates the widget for the panel window using |params_|.
26fbfd180495e7800975c6d9bdc6d24e706ef70e34Michael J. Spencer  views::Widget* CreateWidget();
278588896b4779a617e5d257423ef6178431c8bda3Ted Kremenek
286bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines  const std::string& name() { return name_; }
2903013fa9a0bf1ef4b907f5fec006c8f4000fdd21Michael J. Spencer  views::Widget::InitParams& params() { return params_; }
3055fc873017f10f6f566b182b70f6fc22aefa3464Chandler Carruth
318588896b4779a617e5d257423ef6178431c8bda3Ted Kremenek  // Creates a panel window and returns the associated widget.
32ea684e699ea84e61711e279f5fa7a1b9f3d46bc2Cedric Venet  static views::Widget* CreatePanelWindow(const gfx::Rect& rect);
33ea684e699ea84e61711e279f5fa7a1b9f3d46bc2Cedric Venet
34ea684e699ea84e61711e279f5fa7a1b9f3d46bc2Cedric Venet private:
35ea684e699ea84e61711e279f5fa7a1b9f3d46bc2Cedric Venet  // Overridden from views::View:
36ea684e699ea84e61711e279f5fa7a1b9f3d46bc2Cedric Venet  virtual gfx::Size GetPreferredSize() OVERRIDE;
378588896b4779a617e5d257423ef6178431c8bda3Ted Kremenek  virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
38f0e1f796bc3fc464331badbd40b1888f91566c38Ted Kremenek
39f0e1f796bc3fc464331badbd40b1888f91566c38Ted Kremenek  // Overridden from views::WidgetDelegate:
40f0e1f796bc3fc464331badbd40b1888f91566c38Ted Kremenek  virtual base::string16 GetWindowTitle() const OVERRIDE;
41f0e1f796bc3fc464331badbd40b1888f91566c38Ted Kremenek  virtual View* GetContentsView() OVERRIDE;
42f0e1f796bc3fc464331badbd40b1888f91566c38Ted Kremenek  virtual bool CanResize() const OVERRIDE;
436bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines  virtual bool CanMaximize() const OVERRIDE;
446bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines  virtual views::NonClientFrameView* CreateNonClientFrameView(
45be29533f573f0f3d72401d2ed3b1fb627a97aafeTed Kremenek      views::Widget* widget) OVERRIDE;
46bd21828179a61bd0954b082825cfb8a93345f602Benjamin Kramer
471eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump  std::string name_;
48be29533f573f0f3d72401d2ed3b1fb627a97aafeTed Kremenek  views::Widget::InitParams params_;
491eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
50a4b44dd9d30929a35c44d85102e5241ee847b2f2Ted Kremenek  DISALLOW_COPY_AND_ASSIGN(PanelWindow);
51be29533f573f0f3d72401d2ed3b1fb627a97aafeTed Kremenek};
52a4b44dd9d30929a35c44d85102e5241ee847b2f2Ted Kremenek
53277faca30c9f8f72b79f55695cbe3395ec246e7cTed Kremenek}  // namespace ash
541eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump
551eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump#endif  // ASH_SHELL_PANEL_WINDOW_H_
56be29533f573f0f3d72401d2ed3b1fb627a97aafeTed Kremenek