• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 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 "ui/views/controls/menu/menu.h"
6 
7 #include "base/i18n/rtl.h"
8 #include "ui/gfx/image/image_skia.h"
9 
10 namespace views {
11 
IsItemChecked(int id) const12 bool Menu::Delegate::IsItemChecked(int id) const {
13   return false;
14 }
15 
IsItemDefault(int id) const16 bool Menu::Delegate::IsItemDefault(int id) const {
17   return false;
18 }
19 
GetLabel(int id) const20 base::string16 Menu::Delegate::GetLabel(int id) const {
21   return base::string16();
22 }
23 
GetAcceleratorInfo(int id,ui::Accelerator * accel)24 bool Menu::Delegate::GetAcceleratorInfo(int id, ui::Accelerator* accel) {
25   return false;
26 }
27 
GetIcon(int id) const28 const gfx::ImageSkia& Menu::Delegate::GetIcon(int id) const {
29   return GetEmptyIcon();
30 }
31 
GetItemCount() const32 int Menu::Delegate::GetItemCount() const {
33   return 0;
34 }
35 
IsItemSeparator(int id) const36 bool Menu::Delegate::IsItemSeparator(int id) const {
37   return false;
38 }
39 
HasIcon(int id) const40 bool Menu::Delegate::HasIcon(int id) const {
41   return false;
42 }
43 
SupportsCommand(int id) const44 bool Menu::Delegate::SupportsCommand(int id) const {
45   return true;
46 }
47 
IsCommandEnabled(int id) const48 bool Menu::Delegate::IsCommandEnabled(int id) const {
49   return true;
50 }
51 
GetContextualLabel(int id,base::string16 * out) const52 bool Menu::Delegate::GetContextualLabel(int id, base::string16* out) const {
53   return false;
54 }
55 
IsRightToLeftUILayout() const56 bool Menu::Delegate::IsRightToLeftUILayout() const {
57   return base::i18n::IsRTL();
58 }
59 
GetEmptyIcon() const60 const gfx::ImageSkia& Menu::Delegate::GetEmptyIcon() const {
61   static const gfx::ImageSkia* empty_icon = new gfx::ImageSkia();
62   return *empty_icon;
63 }
64 
Menu(Delegate * delegate,AnchorPoint anchor)65 Menu::Menu(Delegate* delegate, AnchorPoint anchor)
66     : delegate_(delegate),
67       anchor_(anchor) {
68 }
69 
Menu(Menu * parent)70 Menu::Menu(Menu* parent)
71     : delegate_(parent->delegate_),
72       anchor_(parent->anchor_) {
73 }
74 
~Menu()75 Menu::~Menu() {
76 }
77 
AppendMenuItem(int item_id,const base::string16 & label,MenuItemType type)78 void Menu::AppendMenuItem(int item_id,
79                           const base::string16& label,
80                           MenuItemType type) {
81   AddMenuItem(-1, item_id, label, type);
82 }
83 
AddMenuItem(int index,int item_id,const base::string16 & label,MenuItemType type)84 void Menu::AddMenuItem(int index,
85                        int item_id,
86                        const base::string16& label,
87                        MenuItemType type) {
88   if (type == SEPARATOR)
89     AddSeparator(index);
90   else
91     AddMenuItemInternal(index, item_id, label, gfx::ImageSkia(), type);
92 }
93 
AppendSubMenu(int item_id,const base::string16 & label)94 Menu* Menu::AppendSubMenu(int item_id, const base::string16& label) {
95   return AddSubMenu(-1, item_id, label);
96 }
97 
AddSubMenu(int index,int item_id,const base::string16 & label)98 Menu* Menu::AddSubMenu(int index, int item_id, const base::string16& label) {
99   return AddSubMenuWithIcon(index, item_id, label, gfx::ImageSkia());
100 }
101 
AppendSubMenuWithIcon(int item_id,const base::string16 & label,const gfx::ImageSkia & icon)102 Menu* Menu::AppendSubMenuWithIcon(int item_id,
103                                   const base::string16& label,
104                                   const gfx::ImageSkia& icon) {
105   return AddSubMenuWithIcon(-1, item_id, label, icon);
106 }
107 
AppendMenuItemWithLabel(int item_id,const base::string16 & label)108 void Menu::AppendMenuItemWithLabel(int item_id, const base::string16& label) {
109   AddMenuItemWithLabel(-1, item_id, label);
110 }
111 
AddMenuItemWithLabel(int index,int item_id,const base::string16 & label)112 void Menu::AddMenuItemWithLabel(int index,
113                                 int item_id,
114                                 const base::string16& label) {
115   AddMenuItem(index, item_id, label, Menu::NORMAL);
116 }
117 
AppendDelegateMenuItem(int item_id)118 void Menu::AppendDelegateMenuItem(int item_id) {
119   AddDelegateMenuItem(-1, item_id);
120 }
121 
AddDelegateMenuItem(int index,int item_id)122 void Menu::AddDelegateMenuItem(int index, int item_id) {
123   AddMenuItem(index, item_id, base::string16(), Menu::NORMAL);
124 }
125 
AppendSeparator()126 void Menu::AppendSeparator() {
127   AddSeparator(-1);
128 }
129 
AppendMenuItemWithIcon(int item_id,const base::string16 & label,const gfx::ImageSkia & icon)130 void Menu::AppendMenuItemWithIcon(int item_id,
131                                   const base::string16& label,
132                                   const gfx::ImageSkia& icon) {
133   AddMenuItemWithIcon(-1, item_id, label, icon);
134 }
135 
AddMenuItemWithIcon(int index,int item_id,const base::string16 & label,const gfx::ImageSkia & icon)136 void Menu::AddMenuItemWithIcon(int index,
137                                int item_id,
138                                const base::string16& label,
139                                const gfx::ImageSkia& icon) {
140   AddMenuItemInternal(index, item_id, label, icon, Menu::NORMAL);
141 }
142 
Menu()143 Menu::Menu() : delegate_(NULL), anchor_(TOPLEFT) {
144 }
145 
146 }  // namespace views
147