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 CHROME_BROWSER_TAB_CONTENTS_SPELLCHECKER_SUBMENU_OBSERVER_H_ 6 #define CHROME_BROWSER_TAB_CONTENTS_SPELLCHECKER_SUBMENU_OBSERVER_H_ 7 8 #include <string> 9 #include <vector> 10 11 #include "base/basictypes.h" 12 #include "base/compiler_specific.h" 13 #include "chrome/browser/tab_contents/render_view_context_menu_observer.h" 14 #include "ui/base/models/simple_menu_model.h" 15 16 class RenderViewContextMenuProxy; 17 18 // A class that implements the 'spell-checker options' submenu. This class 19 // creates the submenu, add it to the parent menu, and handles events. 20 class SpellCheckerSubMenuObserver : public RenderViewContextMenuObserver { 21 public: 22 SpellCheckerSubMenuObserver(RenderViewContextMenuProxy* proxy, 23 ui::SimpleMenuModel::Delegate* delegate, 24 int group); 25 virtual ~SpellCheckerSubMenuObserver(); 26 27 // RenderViewContextMenuObserver implementation. 28 virtual void InitMenu(const content::ContextMenuParams& params) OVERRIDE; 29 virtual bool IsCommandIdSupported(int command_id) OVERRIDE; 30 virtual bool IsCommandIdChecked(int command_id) OVERRIDE; 31 virtual bool IsCommandIdEnabled(int command_id) OVERRIDE; 32 virtual void ExecuteCommand(int command_id) OVERRIDE; 33 34 private: 35 // The interface for adding a submenu to the parent. 36 RenderViewContextMenuProxy* proxy_; 37 38 // The submenu of the 'spell-checker options'. This class adds items to this 39 // submenu and add it to the parent menu. 40 ui::SimpleMenuModel submenu_model_; 41 42 #if !defined(OS_MACOSX) 43 // Hunspell spelling submenu. 44 // The radio items representing languages available for spellchecking. 45 int language_group_; 46 int language_selected_; 47 std::vector<std::string> languages_; 48 #endif // !OS_MACOSX 49 50 DISALLOW_COPY_AND_ASSIGN(SpellCheckerSubMenuObserver); 51 }; 52 53 #endif // CHROME_BROWSER_TAB_CONTENTS_SPELLCHECKER_SUBMENU_OBSERVER_H_ 54