Index: views/controls/combobox/combobox.h |
=================================================================== |
--- views/controls/combobox/combobox.h (revision 0) |
+++ views/controls/combobox/combobox.h (revision 0) |
@@ -0,0 +1,89 @@ |
+// Copyright (c) 2006-2008 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 VIEWS_CONTROLS_COMBOBOX_COMBOBOX_H_ |
+#define VIEWS_CONTROLS_COMBOBOX_COMBOBOX_H_ |
+ |
+#include "views/view.h" |
+ |
+namespace views { |
+ |
+class NativeComboboxWrapper; |
+ |
+// A non-editable combo-box. |
+class Combobox : public View { |
+ public: |
+ // The combobox's class name. |
+ static const char kViewClassName[]; |
+ |
+ class Model { |
+ public: |
+ // Return the number of items in the combo box. |
+ virtual int GetItemCount(Combobox* source) = 0; |
+ |
+ // Return the string that should be used to represent a given item. |
+ virtual std::wstring GetItemAt(Combobox* source, int index) = 0; |
+ }; |
+ |
+ class Listener { |
+ public: |
+ // This is invoked once the selected item changed. |
+ virtual void ItemChanged(Combobox* combo_box, |
+ int prev_index, |
+ int new_index) = 0; |
+ }; |
+ |
+ // |model| is not owned by the combo box. |
+ explicit Combobox(Model* model); |
+ virtual ~Combobox(); |
+ |
+ // Register |listener| for item change events. |
+ void set_listener(Listener* listener) { |
+ listener_ = listener; |
+ } |
+ |
+ // Inform the combo box that its model changed. |
+ void ModelChanged(); |
+ |
+ // Gets/Sets the selected item. |
+ int selected_item() const { return selected_item_; }; |
+ void SetSelectedItem(int index); |
+ |
+ // Called when the combo box's selection is changed by the user. |
+ void SelectionChanged(); |
+ |
+ // Accessor for |model_|. |
+ Model* model() const { return model_; } |
+ |
+ // Overridden from View: |
+ virtual gfx::Size GetPreferredSize(); |
+ virtual void Layout(); |
+ virtual void SetEnabled(bool enabled); |
+ virtual bool OverrideAccelerator(const Accelerator& accelerator); |
+ |
+ protected: |
+ virtual void Focus(); |
+ virtual void ViewHierarchyChanged(bool is_add, View* parent, |
+ View* child); |
+ virtual std::string GetClassName() const; |
+ |
+ private: |
+ // The object that actually implements the native combobox. |
+ NativeComboboxWrapper* native_wrapper_; |
+ |
+ // Our model. |
+ Model* model_; |
+ |
+ // Item change listener. |
+ Listener* listener_; |
+ |
+ // The current selection. |
+ int selected_item_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(Combobox); |
+}; |
+ |
+} // namespace views |
+ |
+#endif // VIEWS_CONTROLS_COMBOBOX_COMBOBOX_H_ |