context_menu.cc revision 2385ea399aae016c0806a4f9ef3c9cfe3d2a39df
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 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)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell/context_menu.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/launcher/launcher.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/root_window_controller.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/shelf/shelf_types.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/ash_strings.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/l10n/l10n_util.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ash {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace shell {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ContextMenu::ContextMenu(aura::RootWindow* root)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : ui::SimpleMenuModel(NULL),
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      root_window_(root),
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      alignment_menu_(root) {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(root_window_);
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set_delegate(this);
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AddCheckItemWithStringId(MENU_AUTO_HIDE,
242385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch                           IDS_ASH_SHELF_CONTEXT_MENU_AUTO_HIDE);
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AddSubMenuWithStringId(MENU_ALIGNMENT_MENU,
262385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch                         IDS_ASH_SHELF_CONTEXT_MENU_POSITION,
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         &alignment_menu_);
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ContextMenu::~ContextMenu() {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ContextMenu::IsCommandIdChecked(int command_id) const {
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  switch (command_id) {
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case MENU_AUTO_HIDE:
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      return Shell::GetInstance()->GetShelfAutoHideBehavior(root_window_) ==
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    default:
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return false;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ContextMenu::IsCommandIdEnabled(int command_id) const {
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ContextMenu::GetAcceleratorForCommandId(
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int command_id,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ui::Accelerator* accelerator) {
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return false;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void ContextMenu::ExecuteCommand(int command_id, int event_flags) {
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  Shell* shell = Shell::GetInstance();
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  switch (static_cast<MenuItem>(command_id)) {
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case MENU_AUTO_HIDE:
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      shell->SetShelfAutoHideBehavior(
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          shell->GetShelfAutoHideBehavior(root_window_) ==
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)              SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS ?
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                  SHELF_AUTO_HIDE_BEHAVIOR_NEVER :
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                  SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS,
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          root_window_);
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case MENU_ALIGNMENT_MENU:
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace shell
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ash
71