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 CHROME_BROWSER_UI_VIEWS_GENERIC_INFO_VIEW_H_ 6 #define CHROME_BROWSER_UI_VIEWS_GENERIC_INFO_VIEW_H_ 7 #pragma once 8 9 #include "base/gtest_prod_util.h" 10 #include "base/memory/scoped_ptr.h" 11 #include "base/string16.h" 12 #include "views/view.h" 13 14 namespace views { 15 class GridLayout; 16 class Label; 17 class Textfield; 18 } 19 20 // GenericInfoView, displays a tabular grid of read-only textual information, 21 // <name, value> pairs. The fixed number of rows must be known at the time of 22 // construction. 23 class GenericInfoView : public views::View { 24 public: 25 // Constructs a info view with |number_of_rows| and populated with 26 // empty strings. 27 explicit GenericInfoView(int number_of_rows); 28 29 // Constructs a info view with |number_of_rows|, and populates 30 // the name column with localized strings having the given 31 // |name_string_ids|. The array of ids should contain |number_of_rows| 32 // values and should remain valid for the life of the view. 33 GenericInfoView(int number_of_rows, const int name_string_ids[]); 34 35 // The following methods should only be called after 36 // the view has been added to a view hierarchy. 37 void SetNameByStringId(int row, int id); 38 void SetName(int row, const string16& name); 39 void SetValue(int row, const string16& value); ClearValues()40 void ClearValues() { 41 const string16 kEmptyString; 42 for (int i = 0; i < number_of_rows_; ++i) 43 SetValue(i, kEmptyString); 44 } 45 46 protected: 47 // views::View override 48 virtual void ViewHierarchyChanged( 49 bool is_add, views::View* parent, views::View* child); 50 51 private: 52 FRIEND_TEST_ALL_PREFIXES(GenericInfoViewTest, GenericInfoView); 53 54 void InitGenericInfoView(); 55 void AddRow(int layout_id, views::GridLayout* layout, 56 views::Label* name, views::Textfield* value); 57 58 const int number_of_rows_; 59 const int* name_string_ids_; 60 scoped_array<views::Label*> name_views_; 61 scoped_array<views::Textfield*> value_views_; 62 63 DISALLOW_COPY_AND_ASSIGN(GenericInfoView); 64 }; 65 66 #endif // CHROME_BROWSER_UI_VIEWS_GENERIC_INFO_VIEW_H_ 67 68