Chromium Code Reviews| Index: ui/oak/oak_window.cc |
| =================================================================== |
| --- ui/oak/oak_window.cc (revision 0) |
| +++ ui/oak/oak_window.cc (revision 0) |
| @@ -0,0 +1,156 @@ |
| +// Copyright (c) 2012 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. |
| + |
| +#include "ui/oak/oak_window.h" |
| + |
| +#include "base/utf_string_conversions.h" |
| +#include "grit/ui_resources.h" |
| +#include "ui/aura/root_window.h" |
| +#include "ui/base/resource/resource_bundle.h" |
| +#include "ui/gfx/canvas.h" |
| +#include "ui/gfx/image/image.h" |
| +#include "ui/views/controls/tree/tree_view.h" |
| +#include "ui/views/layout/layout_constants.h" |
| +#include "ui/views/widget/widget.h" |
| + |
| +namespace oak { |
| +namespace internal { |
| +namespace { |
| + |
| +const SkColor kBorderColor = SkColorSetRGB(0xCC, 0xCC, 0xCC); |
| + |
| +class DetailsView : public views::View { |
| + public: |
| + DetailsView() {} |
| + virtual ~DetailsView() {} |
| + |
| + // Overridden from views::View: |
| + virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE { |
| + canvas->GetSkCanvas()->drawColor(SK_ColorYELLOW); |
|
tfarina
2012/03/10 14:42:46
nit: canvas->sk_canvas()->drawColor(..);
|
| + } |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(DetailsView); |
| +}; |
| + |
| +} // namespace |
| + |
| +// static |
| +views::Widget* OakWindow::instance_ = NULL; |
| + |
| +//////////////////////////////////////////////////////////////////////////////// |
| +// OakWindow, public: |
| + |
| +OakWindow::OakWindow() : tree_(NULL), tree_container_(NULL), details_(NULL) { |
| +} |
| + |
| +OakWindow::~OakWindow() { |
| + // The tree needs to be destroyed before the model. |
| + tree_.reset(); |
| +} |
| + |
| +//////////////////////////////////////////////////////////////////////////////// |
| +// OakWindow, views::WidgetDelegateView implementation: |
| + |
| +bool OakWindow::CanResize() const { |
| + return true; |
| +} |
| + |
| +bool OakWindow::CanMaximize() const { |
| + return true; |
| +} |
| + |
| +string16 OakWindow::GetWindowTitle() const { |
| + return ASCIIToUTF16("Oak"); |
| +} |
| + |
| +views::View* OakWindow::GetContentsView() { |
| + return this; |
| +} |
| + |
| +SkBitmap OakWindow::GetWindowIcon() { |
| + ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
| + return *rb.GetImageNamed(IDR_OAK).ToSkBitmap(); |
| +} |
| + |
| +bool OakWindow::ShouldShowWindowIcon() const { |
| + return true; |
| +} |
| + |
| +void OakWindow::DeleteDelegate() { |
| + instance_ = NULL; |
| +} |
| + |
| +//////////////////////////////////////////////////////////////////////////////// |
| +// OakWindow, views::View overrides: |
| + |
| +void OakWindow::OnPaint(gfx::Canvas* canvas) { |
| + canvas->GetSkCanvas()->drawColor(SK_ColorWHITE); |
|
tfarina
2012/03/10 14:42:46
nit: canvas->sk_canvas()->drawColor(...);
|
| + canvas->FillRect(separator_rect_, kBorderColor); |
| +} |
| + |
| +void OakWindow::ViewHierarchyChanged(bool is_add, |
| + views::View* parent, |
| + views::View* child) { |
| + if (is_add && child == this) |
| + Init(); |
| +} |
| + |
| +void OakWindow::Layout() { |
| + gfx::Rect content_bounds = GetLocalBounds(); |
| + content_bounds.Inset(views::kPanelHorizMargin, views::kPanelVertMargin); |
| + |
| + int tree_height = |
| + (content_bounds.height() / 2) - views::kUnrelatedControlVerticalSpacing; |
| + gfx::Rect tree_bounds = content_bounds; |
| + tree_bounds.set_height(tree_height); |
| + tree_container_->SetBoundsRect(tree_bounds); |
| + |
| + separator_rect_ = content_bounds; |
| + separator_rect_.set_y( |
| + tree_bounds.bottom() + views::kRelatedControlVerticalSpacing); |
| + separator_rect_.set_height(1); |
| + |
| + gfx::Rect details_bounds = content_bounds; |
| + details_bounds.set_y( |
| + separator_rect_.bottom() + views::kRelatedControlVerticalSpacing); |
| + details_bounds.set_height(content_bounds.bottom() - details_bounds.y()); |
| + details_->SetBoundsRect(details_bounds); |
| +} |
| + |
| +//////////////////////////////////////////////////////////////////////////////// |
| +// OakWindow, views::TreeViewController implementation: |
| + |
| +void OakWindow::OnTreeViewSelectionChanged(views::TreeView* tree) { |
| + NOTIMPLEMENTED(); |
| +} |
| + |
| +//////////////////////////////////////////////////////////////////////////////// |
| +// OakWindow, private: |
| + |
| +void OakWindow::Init() { |
| + tree_model_.reset( |
| + GenerateModel(GetWidget()->GetNativeView()->GetRootWindow())); |
| + tree_.reset(new views::TreeView); |
| + tree_->set_parent_owned(false); |
| + tree_->SetController(this); |
| + tree_->SetModel(tree_model_.get()); |
| + tree_container_ = tree_->CreateParentIfNecessary(); |
| + AddChildView(tree_container_); |
| + details_ = new DetailsView; |
| + AddChildView(details_); |
| +} |
| + |
| +} // namespace internal |
| + |
| +void ShowOakWindow() { |
| + if (!internal::OakWindow::instance_) { |
| + internal::OakWindow::instance_ = |
| + views::Widget::CreateWindowWithBounds(new internal::OakWindow, |
| + gfx::Rect(10, 10, 500, 500)); |
| + } |
| + internal::OakWindow::instance_->Show(); |
| +} |
| + |
| +} // namespace oak |
| Property changes on: ui\oak\oak_window.cc |
| ___________________________________________________________________ |
| Added: svn:eol-style |
| + LF |