/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 *
 * 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/. */

#include "nsISupports.idl"

[scriptable, uuid(93d0ba57-0d20-49d1-aede-8fde6699855d)]
interface nsIAccessibleEditableText : nsISupports
{
  /**
   * Replaces the text represented by this object by the given text.
   */
  void setTextContents (in AString text);

  /**
   * Inserts text at the specified position.
   *
   * @param text - text that is inserted.
   * @param position - index at which to insert the text.
   */
  [binaryname(ScriptableInsertText)]
  void insertText(in AString text, in long position);

  /**
   * Copies the text range into the clipboard.
   *
   * @param startPos - start index of the text to moved into the clipboard.
   * @param endPos - end index of the text to moved into the clipboard.
   */
  [binaryname(ScriptableCopyText)]
  void copyText(in long startPos, in long endPos);

  /**
   * Deletes a range of text and copies it to the clipboard.
   *
   * @param startPos - start index of the text to be deleted.
   * @param endOffset - end index of the text to be deleted.
   */
  [binaryname(ScriptableCutText)]
  void cutText(in long startPos, in long endPos);

  /**
   * Deletes a range of text.
   *
   * @param startPos - start index of the text to be deleted.
   * @param endPos - end index of the text to be deleted.
   */
  [binaryname(ScriptableDeleteText)]
  void deleteText(in long startPos, in long endPos);

  /**
   * Pastes text from the clipboard.
   *
   * @param position - index at which to insert the text from the system
   *                   clipboard into the text represented by this object.
   */
  [binaryname(ScriptablePasteText)]
  void pasteText(in long position);
};
