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