48 lines
		
	
	
	
		
			1.1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			48 lines
		
	
	
	
		
			1.1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | // 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 "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); } | ||
|  | 
 | ||
|  |   // ui::SimpleMenuModel:
 | ||
|  |   void MenuClosed() override; | ||
|  | 
 | ||
|  |  private: | ||
|  |   Delegate* delegate_;  // weak ref.
 | ||
|  | 
 | ||
|  |   ObserverList<Observer> observers_; | ||
|  | 
 | ||
|  |   DISALLOW_COPY_AND_ASSIGN(AtomMenuModel); | ||
|  | }; | ||
|  | 
 | ||
|  | }  // namespace atom
 | ||
|  | 
 | ||
|  | #endif  // ATOM_BROWSER_UI_ATOM_MENU_MODEL_H_
 |