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 14 namespace ash { 15 16 ShelfAlignmentMenu::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 33 ShelfAlignmentMenu::~ShelfAlignmentMenu() {} 34 35 bool 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 43 bool ShelfAlignmentMenu::IsCommandIdEnabled(int command_id) const { 44 return true; 45 } 46 47 bool ShelfAlignmentMenu::GetAcceleratorForCommandId( 48 int command_id, 49 ui::Accelerator* accelerator) { 50 return false; 51 } 52 53 void 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