1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#ifndef CHROME_BROWSER_RENDERER_CONTEXT_MENU_SPELLCHECKER_SUBMENU_OBSERVER_H_
6a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#define CHROME_BROWSER_RENDERER_CONTEXT_MENU_SPELLCHECKER_SUBMENU_OBSERVER_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector>
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "chrome/browser/renderer_context_menu/render_view_context_menu_observer.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/models/simple_menu_model.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RenderViewContextMenuProxy;
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A class that implements the 'spell-checker options' submenu. This class
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// creates the submenu, add it to the parent menu, and handles events.
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SpellCheckerSubMenuObserver : public RenderViewContextMenuObserver {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SpellCheckerSubMenuObserver(RenderViewContextMenuProxy* proxy,
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              ui::SimpleMenuModel::Delegate* delegate,
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              int group);
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~SpellCheckerSubMenuObserver();
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // RenderViewContextMenuObserver implementation.
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void InitMenu(const content::ContextMenuParams& params) OVERRIDE;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsCommandIdSupported(int command_id) OVERRIDE;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsCommandIdChecked(int command_id) OVERRIDE;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsCommandIdEnabled(int command_id) OVERRIDE;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ExecuteCommand(int command_id) OVERRIDE;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The interface for adding a submenu to the parent.
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RenderViewContextMenuProxy* proxy_;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The submenu of the 'spell-checker options'. This class adds items to this
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // submenu and add it to the parent menu.
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ui::SimpleMenuModel submenu_model_;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_MACOSX)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Hunspell spelling submenu.
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The radio items representing languages available for spellchecking.
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int language_group_;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int language_selected_;
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::vector<std::string> languages_;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // !OS_MACOSX
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(SpellCheckerSubMenuObserver);
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif  // CHROME_BROWSER_RENDERER_CONTEXT_MENU_SPELLCHECKER_SUBMENU_OBSERVER_H_
54