// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/views/controls/menu/menu.h"
#include "base/i18n/rtl.h"
#include "ui/gfx/image/image_skia.h"
namespace views {
bool Menu::Delegate::IsItemChecked(int id) const {
return false;
}
bool Menu::Delegate::IsItemDefault(int id) const {
return false;
}
base::string16 Menu::Delegate::GetLabel(int id) const {
return base::string16();
}
bool Menu::Delegate::GetAcceleratorInfo(int id, ui::Accelerator* accel) {
return false;
}
const gfx::ImageSkia& Menu::Delegate::GetIcon(int id) const {
return GetEmptyIcon();
}
int Menu::Delegate::GetItemCount() const {
return 0;
}
bool Menu::Delegate::IsItemSeparator(int id) const {
return false;
}
bool Menu::Delegate::HasIcon(int id) const {
return false;
}
bool Menu::Delegate::SupportsCommand(int id) const {
return true;
}
bool Menu::Delegate::IsCommandEnabled(int id) const {
return true;
}
bool Menu::Delegate::GetContextualLabel(int id, base::string16* out) const {
return false;
}
bool Menu::Delegate::IsRightToLeftUILayout() const {
return base::i18n::IsRTL();
}
const gfx::ImageSkia& Menu::Delegate::GetEmptyIcon() const {
static const gfx::ImageSkia* empty_icon = new gfx::ImageSkia();
return *empty_icon;
}
Menu::Menu(Delegate* delegate, AnchorPoint anchor)
: delegate_(delegate),
anchor_(anchor) {
}
Menu::Menu(Menu* parent)
: delegate_(parent->delegate_),
anchor_(parent->anchor_) {
}
Menu::~Menu() {
}
void Menu::AppendMenuItem(int item_id,
const base::string16& label,
MenuItemType type) {
AddMenuItem(-1, item_id, label, type);
}
void Menu::AddMenuItem(int index,
int item_id,
const base::string16& label,
MenuItemType type) {
if (type == SEPARATOR)
AddSeparator(index);
else
AddMenuItemInternal(index, item_id, label, gfx::ImageSkia(), type);
}
Menu* Menu::AppendSubMenu(int item_id, const base::string16& label) {
return AddSubMenu(-1, item_id, label);
}
Menu* Menu::AddSubMenu(int index, int item_id, const base::string16& label) {
return AddSubMenuWithIcon(index, item_id, label, gfx::ImageSkia());
}
Menu* Menu::AppendSubMenuWithIcon(int item_id,
const base::string16& label,
const gfx::ImageSkia& icon) {
return AddSubMenuWithIcon(-1, item_id, label, icon);
}
void Menu::AppendMenuItemWithLabel(int item_id, const base::string16& label) {
AddMenuItemWithLabel(-1, item_id, label);
}
void Menu::AddMenuItemWithLabel(int index,
int item_id,
const base::string16& label) {
AddMenuItem(index, item_id, label, Menu::NORMAL);
}
void Menu::AppendDelegateMenuItem(int item_id) {
AddDelegateMenuItem(-1, item_id);
}
void Menu::AddDelegateMenuItem(int index, int item_id) {
AddMenuItem(index, item_id, base::string16(), Menu::NORMAL);
}
void Menu::AppendSeparator() {
AddSeparator(-1);
}
void Menu::AppendMenuItemWithIcon(int item_id,
const base::string16& label,
const gfx::ImageSkia& icon) {
AddMenuItemWithIcon(-1, item_id, label, icon);
}
void Menu::AddMenuItemWithIcon(int index,
int item_id,
const base::string16& label,
const gfx::ImageSkia& icon) {
AddMenuItemInternal(index, item_id, label, icon, Menu::NORMAL);
}
Menu::Menu() : delegate_(NULL), anchor_(TOPLEFT) {
}
} // namespace views