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 UI_OAK_OAK_WINDOW_H_ 6#define UI_OAK_OAK_WINDOW_H_ 7 8#include "ui/oak/oak_tree_model.h" 9#include "ui/views/controls/tree/tree_view_controller.h" 10#include "ui/views/widget/widget_delegate.h" 11 12namespace views { 13class TableView; 14} 15 16namespace oak { 17namespace internal { 18 19class OakTreeModel; 20class OakDetailsModel; 21 22class OakWindow : public views::WidgetDelegateView, 23 public views::TreeViewController { 24 public: 25 OakWindow(); 26 virtual ~OakWindow(); 27 28 static views::Widget* instance; 29 30 // Overridden from views::WidgetDelegateView: 31 virtual bool CanResize() const OVERRIDE; 32 virtual bool CanMaximize() const OVERRIDE; 33 virtual base::string16 GetWindowTitle() const OVERRIDE; 34 virtual views::View* GetContentsView() OVERRIDE; 35 virtual gfx::ImageSkia GetWindowIcon() OVERRIDE; 36 virtual bool ShouldShowWindowIcon() const OVERRIDE; 37 virtual void DeleteDelegate() OVERRIDE; 38 39 private: 40 // Overridden from views::View: 41 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; 42 virtual void ViewHierarchyChanged( 43 const ViewHierarchyChangedDetails& details) OVERRIDE; 44 virtual void Layout() OVERRIDE; 45 46 // Overridden from views::TreeViewController: 47 virtual void OnTreeViewSelectionChanged(views::TreeView* tree) OVERRIDE; 48 49 void Init(); 50 51 scoped_ptr<views::TreeView> tree_; 52 scoped_ptr<TreeOfWindows> tree_model_; 53 views::View* tree_container_; 54 55 gfx::Rect separator_rect_; 56 57 scoped_ptr<views::TableView> details_; 58 scoped_ptr<OakDetailsModel> details_model_; 59 views::View* details_container_; 60 61 DISALLOW_COPY_AND_ASSIGN(OakWindow); 62}; 63 64} // namespace internal 65} // namespace oak 66 67#endif // UI_OAK_OAK_WINDOW_H_ 68