Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / ash / shell / panel_window.cc
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 #include "ash/shell/panel_window.h"
6
7 #include "ash/screen_util.h"
8 #include "ash/shell.h"
9 #include "ash/wm/panels/panel_frame_view.h"
10 #include "base/strings/utf_string_conversions.h"
11 #include "ui/aura/window.h"
12 #include "ui/aura/window_event_dispatcher.h"
13 #include "ui/gfx/canvas.h"
14 #include "ui/views/widget/widget.h"
15
16 namespace {
17 const int kMinWidth = 100;
18 const int kMinHeight = 100;
19 const int kDefaultWidth = 200;
20 const int kDefaultHeight = 300;
21 }
22
23 namespace ash {
24
25 // static
26 views::Widget* PanelWindow::CreatePanelWindow(const gfx::Rect& rect) {
27   PanelWindow* panel_window = new PanelWindow("Example Panel Window");
28   panel_window->params().bounds = rect;
29   panel_window->params().context = Shell::GetPrimaryRootWindow();
30   return panel_window->CreateWidget();
31 }
32
33 PanelWindow::PanelWindow(const std::string& name)
34     : name_(name),
35       params_(views::Widget::InitParams::TYPE_PANEL) {
36   params_.delegate = this;
37 }
38
39 PanelWindow::~PanelWindow() {
40 }
41
42 views::Widget* PanelWindow::CreateWidget() {
43   views::Widget* widget = new views::Widget;
44
45   if (params().bounds.width() == 0)
46     params().bounds.set_width(kDefaultWidth);
47   if (params().bounds.height() == 0)
48     params().bounds.set_height(kDefaultHeight);
49   params().bounds = ScreenUtil::ConvertRectToScreen(
50       Shell::GetTargetRootWindow(),
51       params().bounds);
52
53   widget->Init(params());
54   widget->GetNativeView()->SetName(name_);
55   widget->Show();
56
57   return widget;
58 }
59
60 gfx::Size PanelWindow::GetPreferredSize() const {
61   return gfx::Size(kMinWidth, kMinHeight);
62 }
63
64 void PanelWindow::OnPaint(gfx::Canvas* canvas) {
65   canvas->FillRect(GetLocalBounds(), SK_ColorGREEN);
66 }
67
68 base::string16 PanelWindow::GetWindowTitle() const {
69   return base::ASCIIToUTF16(name_);
70 }
71
72 views::View* PanelWindow::GetContentsView() {
73   return this;
74 }
75
76 bool PanelWindow::CanResize() const {
77   return true;
78 }
79
80 bool PanelWindow::CanMaximize() const {
81   return false;
82 }
83
84 bool PanelWindow::CanMinimize() const {
85   return false;
86 }
87
88 views::NonClientFrameView* PanelWindow::CreateNonClientFrameView(
89     views::Widget* widget) {
90   return new PanelFrameView(widget, PanelFrameView::FRAME_NONE);
91 }
92
93 }  // namespace ash