Home | History | Annotate | Download | only in examples
      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 "ui/views/examples/double_split_view_example.h"
      6 
      7 #include "ui/views/controls/single_split_view.h"
      8 #include "ui/views/layout/grid_layout.h"
      9 
     10 namespace views {
     11 namespace examples {
     12 
     13 namespace {
     14 
     15 // DoubleSplitViews's content, which draws gradient color on background.
     16 class SplittedView : public View {
     17  public:
     18   SplittedView();
     19   virtual ~SplittedView();
     20 
     21   void SetColor(SkColor from, SkColor to);
     22 
     23   // Overridden from View.
     24   virtual gfx::Size GetMinimumSize() OVERRIDE;
     25 
     26  private:
     27   DISALLOW_COPY_AND_ASSIGN(SplittedView);
     28 };
     29 
     30 SplittedView::SplittedView() {
     31   SetColor(SK_ColorRED, SK_ColorGREEN);
     32 }
     33 
     34 SplittedView::~SplittedView() {
     35 }
     36 
     37 void SplittedView::SetColor(SkColor from, SkColor to) {
     38   set_background(Background::CreateVerticalGradientBackground(from, to));
     39 }
     40 
     41 gfx::Size SplittedView::GetMinimumSize() {
     42   return gfx::Size(10, 10);
     43 }
     44 
     45 }  // namespace
     46 
     47 DoubleSplitViewExample::DoubleSplitViewExample()
     48     : ExampleBase("Double Split View") {
     49 }
     50 
     51 DoubleSplitViewExample::~DoubleSplitViewExample() {
     52 }
     53 
     54 void DoubleSplitViewExample::CreateExampleView(View* container) {
     55   SplittedView* splitted_view_1 = new SplittedView();
     56   SplittedView* splitted_view_2 = new SplittedView();
     57   SplittedView* splitted_view_3 = new SplittedView();
     58 
     59   inner_single_split_view_ = new SingleSplitView(
     60       splitted_view_1, splitted_view_2,
     61       SingleSplitView::HORIZONTAL_SPLIT,
     62       NULL);
     63 
     64   outer_single_split_view_ = new SingleSplitView(
     65       inner_single_split_view_, splitted_view_3,
     66       SingleSplitView::HORIZONTAL_SPLIT,
     67       NULL);
     68 
     69   GridLayout* layout = new GridLayout(container);
     70   container->SetLayoutManager(layout);
     71 
     72   // Add scroll view.
     73   ColumnSet* column_set = layout->AddColumnSet(0);
     74   column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1,
     75                         GridLayout::USE_PREF, 0, 0);
     76   layout->StartRow(1, 0);
     77   layout->AddView(outer_single_split_view_);
     78 }
     79 
     80 }  // namespace examples
     81 }  // namespace views
     82