1 // Copyright (c) 2011 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_VIEWS_LAYOUT_LAYOUT_MANAGER_H_ 6 #define UI_VIEWS_LAYOUT_LAYOUT_MANAGER_H_ 7 8 #include "ui/views/views_export.h" 9 10 namespace gfx { 11 class Size; 12 } 13 14 namespace views { 15 16 class View; 17 18 ///////////////////////////////////////////////////////////////////////////// 19 // 20 // LayoutManager interface 21 // 22 // The LayoutManager interface provides methods to handle the sizing of 23 // the children of a View according to implementation-specific heuristics. 24 // 25 ///////////////////////////////////////////////////////////////////////////// 26 class VIEWS_EXPORT LayoutManager { 27 public: 28 virtual ~LayoutManager(); 29 30 // Notification that this LayoutManager has been installed on a particular 31 // host. 32 virtual void Installed(View* host); 33 34 // Notification that this LayoutManager has been uninstalled on a particular 35 // host. 36 virtual void Uninstalled(View* host); 37 38 // Lay out the children of |host| according to implementation-specific 39 // heuristics. The graphics used during painting is provided to allow for 40 // string sizing. 41 virtual void Layout(View* host) = 0; 42 43 // Return the preferred size which is the size required to give each 44 // children their respective preferred size. 45 virtual gfx::Size GetPreferredSize(View* host) = 0; 46 47 // Returns the preferred height for the specified width. The default 48 // implementation returns the value from GetPreferredSize. 49 virtual int GetPreferredHeightForWidth(View* host, int width); 50 51 // Notification that a view has been added. 52 virtual void ViewAdded(View* host, View* view); 53 54 // Notification that a view has been removed. 55 virtual void ViewRemoved(View* host, View* view); 56 }; 57 58 } // namespace views 59 60 #endif // UI_VIEWS_LAYOUT_LAYOUT_MANAGER_H_ 61