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.
5 #ifndef UI_VIEWS_LAYOUT_BOX_LAYOUT_H_
6 #define UI_VIEWS_LAYOUT_BOX_LAYOUT_H_
8 #include "base/basictypes.h"
9 #include "base/compiler_specific.h"
10 #include "ui/gfx/insets.h"
11 #include "ui/views/layout/layout_manager.h"
21 // A Layout manager that arranges child views vertically or horizontally in a
22 // side-by-side fashion with spacing around and between the child views. The
23 // child views are always sized according to their preferred size. If the
24 // host's bounds provide insufficient space, child views will be clamped.
25 // Excess space will not be distributed.
26 class VIEWS_EXPORT BoxLayout : public LayoutManager {
33 // Use |inside_border_horizontal_spacing| and
34 // |inside_border_vertical_spacing| to add additional space between the child
35 // view area and the host view border. |between_child_spacing| controls the
36 // space in between child views.
37 BoxLayout(Orientation orientation,
38 int inside_border_horizontal_spacing,
39 int inside_border_vertical_spacing,
40 int between_child_spacing);
43 void set_spread_blank_space(bool spread) {
44 spread_blank_space_ = spread;
47 // Overridden from views::LayoutManager:
48 virtual void Layout(View* host) OVERRIDE;
49 virtual gfx::Size GetPreferredSize(View* host) OVERRIDE;
50 virtual int GetPreferredHeightForWidth(View* host, int width) OVERRIDE;
53 // The preferred size for the dialog given the width of the child area.
54 gfx::Size GetPreferredSizeForChildWidth(View* host, int child_area_width);
56 // The amount of space the layout requires in addition to any space for the
58 gfx::Size NonChildSize(View* host);
60 const Orientation orientation_;
62 // Spacing between child views and host view border.
63 gfx::Insets inside_border_insets_;
65 // Spacing to put in between child views.
66 const int between_child_spacing_;
68 // Whether the available extra space should be distributed among the child
70 bool spread_blank_space_;
72 DISALLOW_IMPLICIT_CONSTRUCTORS(BoxLayout);
77 #endif // UI_VIEWS_LAYOUT_BOX_LAYOUT_H_