1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 24a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 34a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// found in the LICENSE file. 44a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 54a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#ifndef CHROME_BROWSER_UI_VIEWS_GENERIC_INFO_VIEW_H_ 64a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#define CHROME_BROWSER_UI_VIEWS_GENERIC_INFO_VIEW_H_ 74a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#pragma once 84a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 94a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "base/gtest_prod_util.h" 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_ptr.h" 114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "base/string16.h" 124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "views/view.h" 134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochnamespace views { 154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass GridLayout; 164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass Label; 174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass Textfield; 184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch} 194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// GenericInfoView, displays a tabular grid of read-only textual information, 214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// <name, value> pairs. The fixed number of rows must be known at the time of 224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// construction. 234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass GenericInfoView : public views::View { 244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public: 254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Constructs a info view with |number_of_rows| and populated with 264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // empty strings. 274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch explicit GenericInfoView(int number_of_rows); 284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Constructs a info view with |number_of_rows|, and populates 304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // the name column with localized strings having the given 314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // |name_string_ids|. The array of ids should contain |number_of_rows| 324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // values and should remain valid for the life of the view. 334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch GenericInfoView(int number_of_rows, const int name_string_ids[]); 344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // The following methods should only be called after 364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // the view has been added to a view hierarchy. 374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void SetNameByStringId(int row, int id); 384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void SetName(int row, const string16& name); 394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void SetValue(int row, const string16& value); 404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void ClearValues() { 414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const string16 kEmptyString; 424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch for (int i = 0; i < number_of_rows_; ++i) 434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch SetValue(i, kEmptyString); 444a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch protected: 474a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // views::View override 484a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void ViewHierarchyChanged( 494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch bool is_add, views::View* parent, views::View* child); 504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch private: 524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch FRIEND_TEST_ALL_PREFIXES(GenericInfoViewTest, GenericInfoView); 534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void InitGenericInfoView(); 554a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void AddRow(int layout_id, views::GridLayout* layout, 564a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::Label* name, views::Textfield* value); 574a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const int number_of_rows_; 594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const int* name_string_ids_; 604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch scoped_array<views::Label*> name_views_; 614a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch scoped_array<views::Textfield*> value_views_; 624a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 634a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch DISALLOW_COPY_AND_ASSIGN(GenericInfoView); 644a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}; 654a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 664a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#endif // CHROME_BROWSER_UI_VIEWS_GENERIC_INFO_VIEW_H_ 674a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 68