1// Copyright 2013 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#include "ash/shelf/shelf_alignment_menu.h" 6 7#include "ash/metrics/user_metrics_recorder.h" 8#include "ash/shelf/shelf_layout_manager.h" 9#include "ash/shelf/shelf_types.h" 10#include "ash/shell.h" 11#include "grit/ash_strings.h" 12#include "ui/aura/window.h" 13 14namespace ash { 15 16ShelfAlignmentMenu::ShelfAlignmentMenu(aura::Window* root) 17 : ui::SimpleMenuModel(NULL), 18 root_window_(root) { 19 DCHECK(root_window_); 20 int align_group_id = 1; 21 set_delegate(this); 22 AddRadioItemWithStringId(MENU_ALIGN_LEFT, 23 IDS_ASH_SHELF_CONTEXT_MENU_ALIGN_LEFT, 24 align_group_id); 25 AddRadioItemWithStringId(MENU_ALIGN_BOTTOM, 26 IDS_ASH_SHELF_CONTEXT_MENU_ALIGN_BOTTOM, 27 align_group_id); 28 AddRadioItemWithStringId(MENU_ALIGN_RIGHT, 29 IDS_ASH_SHELF_CONTEXT_MENU_ALIGN_RIGHT, 30 align_group_id); 31} 32 33ShelfAlignmentMenu::~ShelfAlignmentMenu() {} 34 35bool ShelfAlignmentMenu::IsCommandIdChecked(int command_id) const { 36 return ShelfLayoutManager::ForShelf(root_window_) 37 ->SelectValueForShelfAlignment(MENU_ALIGN_BOTTOM == command_id, 38 MENU_ALIGN_LEFT == command_id, 39 MENU_ALIGN_RIGHT == command_id, 40 false); 41} 42 43bool ShelfAlignmentMenu::IsCommandIdEnabled(int command_id) const { 44 return true; 45} 46 47bool ShelfAlignmentMenu::GetAcceleratorForCommandId( 48 int command_id, 49 ui::Accelerator* accelerator) { 50 return false; 51} 52 53void ShelfAlignmentMenu::ExecuteCommand(int command_id, int event_flags) { 54 switch (static_cast<MenuItem>(command_id)) { 55 case MENU_ALIGN_LEFT: 56 Shell::GetInstance()->metrics()-> 57 RecordUserMetricsAction(UMA_SHELF_ALIGNMENT_SET_LEFT); 58 Shell::GetInstance()->SetShelfAlignment(SHELF_ALIGNMENT_LEFT, 59 root_window_); 60 break; 61 case MENU_ALIGN_BOTTOM: 62 Shell::GetInstance()->metrics()-> 63 RecordUserMetricsAction(UMA_SHELF_ALIGNMENT_SET_BOTTOM); 64 Shell::GetInstance()->SetShelfAlignment(SHELF_ALIGNMENT_BOTTOM, 65 root_window_); 66 break; 67 case MENU_ALIGN_RIGHT: 68 Shell::GetInstance()->metrics()-> 69 RecordUserMetricsAction(UMA_SHELF_ALIGNMENT_SET_RIGHT); 70 Shell::GetInstance()->SetShelfAlignment(SHELF_ALIGNMENT_RIGHT, 71 root_window_); 72 break; 73 } 74} 75 76} // namespace ash 77