Home | History | Annotate | Download | only in shelf
      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