// Copyright (c) 2015 GitHub, Inc. // Use of this source code is governed by the MIT license that can be // found in the LICENSE file. #ifndef ATOM_BROWSER_UI_ATOM_MENU_MODEL_H_ #define ATOM_BROWSER_UI_ATOM_MENU_MODEL_H_ #include #include "base/observer_list.h" #include "ui/base/models/simple_menu_model.h" namespace atom { class AtomMenuModel : public ui::SimpleMenuModel { public: class Delegate : public ui::SimpleMenuModel::Delegate { public: virtual ~Delegate() {} }; class Observer { public: virtual ~Observer() {} // Notifies the menu has been closed. virtual void MenuClosed() {} }; explicit AtomMenuModel(Delegate* delegate); virtual ~AtomMenuModel(); void AddObserver(Observer* obs) { observers_.AddObserver(obs); } void RemoveObserver(Observer* obs) { observers_.RemoveObserver(obs); } void SetRole(int index, const base::string16& role); base::string16 GetRoleAt(int index); // ui::SimpleMenuModel: void MenuClosed() override; private: Delegate* delegate_; // weak ref. std::map roles_; base::ObserverList observers_; DISALLOW_COPY_AND_ASSIGN(AtomMenuModel); }; } // namespace atom #endif // ATOM_BROWSER_UI_ATOM_MENU_MODEL_H_