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. 4 5#ifndef UI_BASE_MODELS_COMBOBOX_MODEL_H_ 6#define UI_BASE_MODELS_COMBOBOX_MODEL_H_ 7 8#include "base/strings/string16.h" 9#include "ui/base/ui_base_export.h" 10 11namespace ui { 12 13class ComboboxModelObserver; 14 15// A data model for a combo box. 16class UI_BASE_EXPORT ComboboxModel { 17 public: 18 // Returns the number of items in the combo box. 19 virtual int GetItemCount() const = 0; 20 21 // Returns the string at the specified index. 22 virtual base::string16 GetItemAt(int index) = 0; 23 24 // Should return true if the item at |index| is a non-selectable separator 25 // item. 26 virtual bool IsItemSeparatorAt(int index); 27 28 // The index of the item that is selected by default (before user 29 // interaction). 30 virtual int GetDefaultIndex() const; 31 32 // Returns true if the item at |index| is enabled. 33 virtual bool IsItemEnabledAt(int index) const; 34 35 // Adds/removes an observer. Override if model supports mutation. 36 virtual void AddObserver(ComboboxModelObserver* observer) {} 37 virtual void RemoveObserver(ComboboxModelObserver* observer) {} 38 39 protected: 40 virtual ~ComboboxModel() {} 41}; 42 43} // namespace ui 44 45#endif // UI_BASE_MODELS_COMBOBOX_MODEL_H_ 46