panel_window.h revision cedac228d2dd51db4b79ea1e72c7f249408ee061
1// Copyright (c) 2012 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 ASH_SHELL_PANEL_WINDOW_H_
6#define ASH_SHELL_PANEL_WINDOW_H_
7
8#include "base/basictypes.h"
9#include "ui/aura/aura_export.h"
10#include "ui/views/widget/widget.h"
11#include "ui/views/widget/widget_delegate.h"
12
13namespace ash {
14
15class PanelFrameView;
16
17// Example Class for panel windows (Widget::InitParams::TYPE_PANEL).
18// Instances of PanelWindow will get added to the PanelContainer top level
19// window which manages the panel layout through PanelLayoutManager.
20class PanelWindow : public views::WidgetDelegateView {
21 public:
22  explicit PanelWindow(const std::string& name);
23  virtual ~PanelWindow();
24
25  // Creates the widget for the panel window using |params_|.
26  views::Widget* CreateWidget();
27
28  const std::string& name() { return name_; }
29  views::Widget::InitParams& params() { return params_; }
30
31  // Creates a panel window and returns the associated widget.
32  static views::Widget* CreatePanelWindow(const gfx::Rect& rect);
33
34 private:
35  // Overridden from views::View:
36  virtual gfx::Size GetPreferredSize() const OVERRIDE;
37  virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
38
39  // Overridden from views::WidgetDelegate:
40  virtual base::string16 GetWindowTitle() const OVERRIDE;
41  virtual View* GetContentsView() OVERRIDE;
42  virtual bool CanResize() const OVERRIDE;
43  virtual bool CanMaximize() const OVERRIDE;
44  virtual views::NonClientFrameView* CreateNonClientFrameView(
45      views::Widget* widget) OVERRIDE;
46
47  std::string name_;
48  views::Widget::InitParams params_;
49
50  DISALLOW_COPY_AND_ASSIGN(PanelWindow);
51};
52
53}  // namespace ash
54
55#endif  // ASH_SHELL_PANEL_WINDOW_H_
56