// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_UI_VIEWS_GENERIC_INFO_VIEW_H_ #define CHROME_BROWSER_UI_VIEWS_GENERIC_INFO_VIEW_H_ #pragma once #include "base/gtest_prod_util.h" #include "base/memory/scoped_ptr.h" #include "base/string16.h" #include "views/view.h" namespace views { class GridLayout; class Label; class Textfield; } // GenericInfoView, displays a tabular grid of read-only textual information, // pairs. The fixed number of rows must be known at the time of // construction. class GenericInfoView : public views::View { public: // Constructs a info view with |number_of_rows| and populated with // empty strings. explicit GenericInfoView(int number_of_rows); // Constructs a info view with |number_of_rows|, and populates // the name column with localized strings having the given // |name_string_ids|. The array of ids should contain |number_of_rows| // values and should remain valid for the life of the view. GenericInfoView(int number_of_rows, const int name_string_ids[]); // The following methods should only be called after // the view has been added to a view hierarchy. void SetNameByStringId(int row, int id); void SetName(int row, const string16& name); void SetValue(int row, const string16& value); void ClearValues() { const string16 kEmptyString; for (int i = 0; i < number_of_rows_; ++i) SetValue(i, kEmptyString); } protected: // views::View override virtual void ViewHierarchyChanged( bool is_add, views::View* parent, views::View* child); private: FRIEND_TEST_ALL_PREFIXES(GenericInfoViewTest, GenericInfoView); void InitGenericInfoView(); void AddRow(int layout_id, views::GridLayout* layout, views::Label* name, views::Textfield* value); const int number_of_rows_; const int* name_string_ids_; scoped_array name_views_; scoped_array value_views_; DISALLOW_COPY_AND_ASSIGN(GenericInfoView); }; #endif // CHROME_BROWSER_UI_VIEWS_GENERIC_INFO_VIEW_H_