1// Copyright 2014 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 COMPONENTS_TRANSLATE_CORE_BROWSER_OPTIONS_MENU_MODEL_H_
6#define COMPONENTS_TRANSLATE_CORE_BROWSER_OPTIONS_MENU_MODEL_H_
7
8#include "ui/base/models/simple_menu_model.h"
9
10class TranslateInfoBarDelegate;
11
12// A menu model that builds the contents of the options menu in the translate
13// infobar. This menu has only one level (no submenus).
14class OptionsMenuModel : public ui::SimpleMenuModel,
15                         public ui::SimpleMenuModel::Delegate {
16 public:
17  // Command IDs of the items in this menu; exposed for testing.
18  enum CommandID {
19    ABOUT_TRANSLATE = 0,
20    ALWAYS_TRANSLATE,
21    NEVER_TRANSLATE_LANGUAGE,
22    NEVER_TRANSLATE_SITE,
23    REPORT_BAD_DETECTION
24  };
25
26  explicit OptionsMenuModel(TranslateInfoBarDelegate* translate_delegate);
27  virtual ~OptionsMenuModel();
28
29  // ui::SimpleMenuModel::Delegate implementation:
30  virtual bool IsCommandIdChecked(int command_id) const OVERRIDE;
31  virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE;
32  virtual bool GetAcceleratorForCommandId(
33      int command_id,
34      ui::Accelerator* accelerator) OVERRIDE;
35  virtual void ExecuteCommand(int command_id, int event_flags) OVERRIDE;
36
37 private:
38  TranslateInfoBarDelegate* translate_infobar_delegate_;
39
40  DISALLOW_COPY_AND_ASSIGN(OptionsMenuModel);
41};
42
43#endif  // COMPONENTS_TRANSLATE_CORE_BROWSER_OPTIONS_MENU_MODEL_H_
44