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/app_list_shelf_item_delegate.h"
6
7#include "ash/shelf/shelf_model.h"
8#include "ash/shell.h"
9#include "ash/shell_delegate.h"
10#include "grit/ash_strings.h"
11#include "ui/base/l10n/l10n_util.h"
12
13namespace ash {
14
15AppListShelfItemDelegate::AppListShelfItemDelegate() {
16  ShelfItem app_list;
17  app_list.type = TYPE_APP_LIST;
18  Shell::GetInstance()->shelf_model()->Add(app_list);
19}
20
21AppListShelfItemDelegate::~AppListShelfItemDelegate() {
22  // ShelfItemDelegateManager owns and destroys this class.
23}
24
25bool AppListShelfItemDelegate::ItemSelected(const ui::Event& event) {
26  // Pass NULL here to show the app list in the currently active RootWindow.
27  Shell::GetInstance()->ToggleAppList(NULL);
28  return false;
29}
30
31base::string16 AppListShelfItemDelegate::GetTitle() {
32  ShelfModel* model = Shell::GetInstance()->shelf_model();
33  DCHECK(model);
34  return model->status() == ShelfModel::STATUS_LOADING ?
35      l10n_util::GetStringUTF16(IDS_ASH_SHELF_APP_LIST_SYNCING_TITLE) :
36      l10n_util::GetStringUTF16(IDS_ASH_SHELF_APP_LIST_TITLE);
37}
38
39ui::MenuModel* AppListShelfItemDelegate::CreateContextMenu(
40    aura::Window* root_window) {
41  return Shell::GetInstance()->delegate()->CreateContextMenu(root_window,
42                                                             NULL,
43                                                             NULL);
44}
45
46ShelfMenuModel* AppListShelfItemDelegate::CreateApplicationMenu(
47    int event_flags) {
48  // AppList does not show an application menu.
49  return NULL;
50}
51
52bool AppListShelfItemDelegate::IsDraggable() {
53  return false;
54}
55
56bool AppListShelfItemDelegate::ShouldShowTooltip() {
57  return true;
58}
59
60void AppListShelfItemDelegate::Close() {
61}
62
63}  // namespace ash
64