/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:set ts=2 sw=2 sts=2 et cindent: */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

/**
 * This interface is supported by command events, which are dispatched to
 * XUL elements as a result of mouse or keyboard activation.
 */

#include "nsIDOMUIEvent.idl"

[scriptable, builtinclass, uuid(b7b54fe0-9983-49bc-bb79-1d8ffcb2260c)]
interface nsIDOMXULCommandEvent : nsIDOMUIEvent
{
  /**
   * Command events support the same set of modifier keys as mouse and key
   * events.
   */
  readonly attribute boolean ctrlKey;
  readonly attribute boolean shiftKey;
  readonly attribute boolean altKey;
  readonly attribute boolean metaKey;

  /**
   * If the command event was redispatched because of a command= attribute
   * on the original target, sourceEvent will be set to the original DOM Event.
   * Otherwise, sourceEvent is null.
   */
  readonly attribute nsIDOMEvent sourceEvent;

  /**
   * Creates a new command event with the given attributes.
   */
  void initCommandEvent(in DOMString typeArg,
                        in boolean canBubbleArg,
                        in boolean cancelableArg,
                        in nsIDOMWindow viewArg,
                        in long detailArg,
                        in boolean ctrlKeyArg,
                        in boolean altKeyArg,
                        in boolean shiftKeyArg,
                        in boolean metaKeyArg,
                        in nsIDOMEvent sourceEvent);
};
