// Copyright 2018 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.

module ash.mojom;

import "mojo/public/mojom/base/string16.mojom";
import "ui/gfx/image/mojo/image.mojom";

// The types of menu items shown in shelf context and application list menus.
// These values roughly match ui::MenuModel::ItemType (sans TYPE_BUTTON_ITEM).
enum MenuItemType {
  COMMAND,    // Performs an action when selected.
  CHECK,      // Can be selected/checked to toggle a boolean state.
  RADIO,      // Can be selected/checked among a group of choices.
  SEPARATOR,  // Shows a horizontal line separator.
  SUBMENU,    // Presents a submenu within another menu.
  ACTIONABLE_SUBMENU,  // A SUBMENU that is also a COMMAND.
};

// For a separator we have the following types.
enum MenuSeparatorType {
  // Normal - top to bottom: Spacing, line, spacing.
  NORMAL_SEPARATOR = 0,

  // Double thickness - top to bottom: Spacing, line, spacing.
  DOUBLE_SEPARATOR,

  // Upper - top to bottom: Line, spacing.
  UPPER_SEPARATOR,

  // Lower - top to bottom: Spacing, line.
  LOWER_SEPARATOR,

  // Spacing - top to bottom: Spacing only.
  SPACING_SEPARATOR,

  // Vertical separator within a row.
  VERTICAL_SEPARATOR,

  // Separator with left padding - top to bottom: Line only,
  //                               horizontal: Starts after left padding.
  PADDED_SEPARATOR,
};

// MenuItems are used to populate application menus for shelf items.
// Note: Some menu item types only support a subset of these item features.
// Please update comments below (MenuItemType -> [fields expected for usage])
// when anything changed to MenuItemType or MenuItem.
//
// COMMAND -> [command_id, label, image, enabled, checked].
// CHECK   -> [command_id, label, image, enabled, checked].
// RADIO   -> [command_id, label, image, enabled, checked, radio_group_id].
// SEPARATOR -> [separator_type].
// SUBMENU -> [command_id, label, image, enabled, submenu].
// ACTIONABLE_SUBMENU -> [command_id, label, image, enabled, submenu].
//
struct MenuItem {
  MenuItemType type;                 // The type of the menu item.
  int32 command_id;                  // The client's arbitrary item command id.
  mojo_base.mojom.String16 label;    // The string label, may be empty.
  gfx.mojom.ImageSkia? image;        // The image icon, may be null.
  array<MenuItem>? submenu;          // The optional nested submenu item list.
  bool enabled;                      // The enabled state.
  bool checked;                      // The checked state.
  int64 radio_group_id;              // The radio group id.
  MenuSeparatorType separator_type;  // The separator type.
};

// An interface implemented by clients to handle interaction with menus run in
// Ash.
interface MenuDelegate {
  MenuItemActivated(int32 command_id);
};
