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/root_window_controller.h"
85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ash/shelf/shelf.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)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ash {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace shell {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)ContextMenu::ContextMenu(aura::Window* root)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : ui::SimpleMenuModel(NULL),
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      root_window_(root),
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      alignment_menu_(root) {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(root_window_);
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set_delegate(this);
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AddCheckItemWithStringId(MENU_AUTO_HIDE,
232385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch                           IDS_ASH_SHELF_CONTEXT_MENU_AUTO_HIDE);
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AddSubMenuWithStringId(MENU_ALIGNMENT_MENU,
252385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch                         IDS_ASH_SHELF_CONTEXT_MENU_POSITION,
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         &alignment_menu_);
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ContextMenu::~ContextMenu() {
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ContextMenu::IsCommandIdChecked(int command_id) const {
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  switch (command_id) {
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case MENU_AUTO_HIDE:
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      return Shell::GetInstance()->GetShelfAutoHideBehavior(root_window_) ==
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    default:
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return false;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ContextMenu::IsCommandIdEnabled(int command_id) const {
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ContextMenu::GetAcceleratorForCommandId(
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int command_id,
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ui::Accelerator* accelerator) {
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return false;
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void ContextMenu::ExecuteCommand(int command_id, int event_flags) {
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  Shell* shell = Shell::GetInstance();
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  switch (static_cast<MenuItem>(command_id)) {
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case MENU_AUTO_HIDE:
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      shell->SetShelfAutoHideBehavior(
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          shell->GetShelfAutoHideBehavior(root_window_) ==
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)              SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS ?
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                  SHELF_AUTO_HIDE_BEHAVIOR_NEVER :
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                  SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS,
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          root_window_);
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case MENU_ALIGNMENT_MENU:
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      break;
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace shell
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ash
70