{ "type": "interface",
  "qname": "org.apache.royale.textLayout.edit.IEditManager",
"baseInterfaceNames": [
"org.apache.royale.textLayout.edit.ISelectionManager"]
,
    "description": "IEditManager defines the interface for handling edit operations of a text flow.  <p>To enable text flow editing, assign an IEditManager instance to the <code>interactionManager</code> property of the TextFlow object. The edit manager handles changes to the text (such as insertions, deletions, and format changes). Changes are reversible if the edit manager has an undo manager. The edit manager triggers the recomposition and display of the text flow, as necessary.</p>",
  "tags": [
  {  "tagName": "see",
         "values": ["EditManager", "org.apache.royale.textLayout.elements.TextFlow", "flashx.undo.UndoManager"]},
      {  "tagName": "playerversion",
         "values": ["Flash 10", "AIR 1.5"]},
      {  "tagName": "langversion",
         "values": ["3.0"]}  ],
  "members": [
  { "type": "accessor",
    "access": "read-only",
    "return": "org.apache.royale.utils.undo.IUndoManager",
    "qname": "undoManager",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "The UndoManager object assigned to this EditManager instance, if there is one.  <p>An undo manager handles undo and redo operations.</p>",
    "tags": [
    {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ]},
  { "type": "method",
    "qname": "applyFormat",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Changes the formats of the specified (or current) selection.  <p>Executes an undoable operation that applies the new formats. Only style attributes set for the TextLayoutFormat objects are applied. Undefined attributes in the format objects are not changed. </p>  if <code>null</code>, the operation applies to the current selection.",
    "tags": [
    {  "tagName": "param",
           "values": ["leafFormat    The format to apply to leaf elements such as spans and inline graphics.", "paragraphFormat   The format to apply to paragraph elements.", "containerFormat   The format to apply to the containers.", "operationState    Specifies the text to which this operation applies;"]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "void",
      "params": [{ "name": "leafFormat", "type": "org.apache.royale.textLayout.formats.ITextLayoutFormat"},
    { "name": "paragraphFormat", "type": "org.apache.royale.textLayout.formats.ITextLayoutFormat"},
    { "name": "containerFormat", "type": "org.apache.royale.textLayout.formats.ITextLayoutFormat"},
    { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
  ,
  { "type": "method",
    "qname": "clearFormat",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Undefines formats of the specified (or current) selection.  <p>Executes an undoable operation that undefines the specified formats. Only style attributes set for the TextLayoutFormat objects are applied. Undefined attributes in the format objects are not changed. </p>  if <code>null</code>, the operation applies to the current selection.",
    "tags": [
    {  "tagName": "param",
           "values": ["leafFormat     The format whose set values indicate properties to undefine to LeafFlowElement objects in the selected range.", "paragraphFormat The format whose set values indicate properties to undefine to ParagraphElement objects in the selected range.", "containerFormat The format whose set values indicate properties to undefine to ContainerController objects in the selected range.", "operationState    Specifies the text to which this operation applies;"]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "void",
      "params": [{ "name": "leafFormat", "type": "org.apache.royale.textLayout.formats.ITextLayoutFormat"},
    { "name": "paragraphFormat", "type": "org.apache.royale.textLayout.formats.ITextLayoutFormat"},
    { "name": "containerFormat", "type": "org.apache.royale.textLayout.formats.ITextLayoutFormat"},
    { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
  ,
  { "type": "method",
    "qname": "applyLeafFormat",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Changes the format applied to the leaf elements in the specified (or current) selection.  <p>Executes an undoable operation that applies the new format to leaf elements such as SpanElement and InlineGraphicElement objects. Only style attributes set for the TextLayoutFormat objects are applied. Undefined attributes in the format object are changed.</p>  if <code>null</code>, the operation applies to the current selection.",
    "tags": [
    {  "tagName": "param",
           "values": ["format    The format to apply.", "operationState    Specifies the text to which this operation applies;"]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "void",
      "params": [{ "name": "format", "type": "org.apache.royale.textLayout.formats.ITextLayoutFormat"},
    { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
  ,
  { "type": "method",
    "qname": "applyTCY",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Transforms text into a TCY run, or a TCY run into non-TCY text.  <p>TCY, or tate-chu-yoko, causes text to draw horizontally within a vertical line, and is used to make small blocks of non-Japanese text or numbers, such as dates, more readable in vertical text.</p>  if <code>null</code>, the operation applies to the current selection.",
    "tags": [
    {  "tagName": "see",
           "values": ["org.apache.royale.textLayout.elements.TCYElement"]},
        {  "tagName": "param",
           "values": ["tcyOn Set to <code>true</code> to apply TCY to a text range, <code>false</code> to remove TCY.", "operationState    Specifies the text to which this operation applies;"]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "return",
           "values": ["The TCYElement that was created."]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "org.apache.royale.textLayout.elements.ITCYElement",
      "params": [{ "name": "tcyOn", "type": "Boolean"},
    { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
  ,
  { "type": "method",
    "qname": "applyLink",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Transforms a selection into a link, or a link into normal text.  <p>Executes an undoable operation that creates or removes the link.</p>  <p>If a <code>target</code> parameter is specified, it must be one of the following values:</p> <ul> <li>&quot;_self&quot;</li> <li>&quot;_blank&quot;</li> <li>&quot;_parent&quot;</li> <li>&quot;_top&quot;</li> </ul> <p>In browser-hosted runtimes, a target of &quot;_self&quot; replaces the current html page. So, if the SWF content containing the link is in a page within a frame or frameset, the linked content loads within that frame.  If the page is at the top level, the linked content opens to replace the original page. A target of &quot;_blank&quot; opens a new browser window with no name. A target of &quot;_parent&quot; replaces the parent of the html page containing the SWF content. A target of &quot;_top&quot; replaces the top-level page in the current browser window.</p>  <p>In other runtimes, such as Adobe AIR, the link opens in the user's default browser and the <code>target</code> parameter is ignored.</p>  <p>The <code>extendToLinkBoundary</code> parameter determines how the edit manager treats a selection that intersects with one or more existing links. If the parameter is <code>true</code>, then the operation is applied as a unit to the selection and the whole text of the existing links. Thus, a single link is created that spans from the beginning of the first link intersected to the end of the last link intersected. In contrast, if <code>extendToLinkBoundary</code> were <code>false</code> in this situation, the existing partially selected links would be split into two links.</p>  if <code>null</code>, the operation applies to the current selection.",
    "tags": [
    {  "tagName": "see",
           "values": ["org.apache.royale.textLayout.elements.LinkElement"]},
        {  "tagName": "param",
           "values": ["href The uri referenced by the link.", "target The target browser window of the link.", "extendToLinkBoundary Specifies whether to consolidate selection with any overlapping existing links, and then apply the change.", "operationState    Specifies the text to which this operation applies;"]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "return",
           "values": ["The LinkElement that was created."]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "org.apache.royale.textLayout.elements.ILinkElement",
      "params": [{ "name": "href", "type": "String"},
    { "name": "target", "type": "String"},
    { "name": "extendToLinkBoundary", "type": "Boolean"},
    { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
  ,
  { "type": "method",
    "qname": "changeElementID",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {},
      "description": "Changes the ID of an element.  <p>If the <code>relativeStart</code> or <code>relativeEnd</code> parameters are set (to anything other than the default values), then the element is split. The parts of the element outside this range retain the original ID. Setting both the <code>relativeStart</code> and <code>relativeEnd</code> parameters creates elements with duplicate IDs.</p>  if <code>null</code>, the operation saves the current selection.",
    "tags": [
    {  "tagName": "param",
           "values": ["newID The new ID value.", "targetElement The element to modify.", "relativeStart An offset from the beginning of the element at which to split the element when assigning the new ID.", "relativeEnd An offset from the beginning of the element at which to split the element when assigning the new ID.", "operationState Specifies the selection to restore when undoing this operation;"]},
        {  "tagName": "playerversion",
           "values": ["Flash 10", "AIR 1.5"]},
        {  "tagName": "langversion",
           "values": ["3.0"]}  ],
      "return": "void",
      "params": [{ "name": "newID", "type": "String"},
    { "name": "targetElement", "type": "org.apache.royale.textLayout.elements.IFlowElement"},
    { "name": "relativeStart", "type": "int"},
    { "name": "relativeEnd", "type": "int"},
    { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
  ,
  { "type": "method",
    "qname": "changeStyleName",
    "namespace": "public",
    "bindable": [],
    "details": [],
    "deprecated": {
  
      "replacement":  "applyFormatToElement"}
    ,
        "description": "Changes the styleName of an element or part of an element.  <p>If the <code>relativeStart</code> or <code>relativeEnd</code> parameters are set (to anything other than the default values), then the element is split. The parts of the element outside this range retain the original style.</p>  if <code>null</code>, the operation saves the current selection.",
      "tags": [
      {  "tagName": "param",
             "values": ["newName The name of the new style.", "targetElement Specifies the element to change.", "relativeStart An offset from the beginning of the element at which to split the element when assigning the new style.", "relativeEnd An offset from the end of the element at which to split the element when assigning the new style.", "operationState Specifies the selection to restore when undoing this operation;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": [{ "name": "newName", "type": "String"},
      { "name": "targetElement", "type": "org.apache.royale.textLayout.elements.IFlowElement"},
      { "name": "relativeStart", "type": "int"},
      { "name": "relativeEnd", "type": "int"},
      { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "changeTypeName",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Changes the typeName of an element or part of an element.  <p>If the <code>relativeStart</code> or <code>relativeEnd</code> parameters are set (to anything other than the default values), then the element is split. The parts of the element outside this range retain the original style.</p>  if <code>null</code>, the operation saves the current selection.",
      "tags": [
      {  "tagName": "param",
             "values": ["newName The name of the new type.", "targetElement Specifies the element to change.", "relativeStart An offset from the beginning of the element at which to split the element when assigning the new style", "relativeEnd An offset from the end of the element at which to split the element when assigning the new style", "operationState    Specifies the selection to restore when undoing this operation;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": [{ "name": "newName", "type": "String"},
      { "name": "targetElement", "type": "org.apache.royale.textLayout.elements.IFlowElement"},
      { "name": "relativeStart", "type": "int"},
      { "name": "relativeEnd", "type": "int"},
      { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "deleteNextCharacter",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Deletes a range of text, or, if a point selection is given, deletes the next character.  if <code>null</code>, the operation applies to the current selection.",
      "tags": [
      {  "tagName": "param",
             "values": ["operationState    specifies the text to which this operation applies;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": [{ "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "deletePreviousCharacter",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Deletes a range of text, or, if a point selection is given, deletes the previous character.  if <code>null</code>, the operation applies to the current selection.",
      "tags": [
      {  "tagName": "param",
             "values": ["operationState    Specifies the text to which this operation applies;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": [{ "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "deleteNextWord",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Deletes the next word.  <p>If a range is selected, the first word of the range is deleted.</p>  if <code>null</code>, the operation applies to the current selection.",
      "tags": [
      {  "tagName": "param",
             "values": ["operationState Specifies the text to which this operation applies;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": [{ "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "deletePreviousWord",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Deletes the previous word.  <p>If a range is selected, the first word of the range is deleted.</p>  if <code>null</code>, the operation applies to the current selection.",
      "tags": [
      {  "tagName": "param",
             "values": ["operationState    Specifies the text to which this operation applies;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": [{ "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "deleteText",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Deletes a range of text.  if <code>null</code>, the operation applies to the current selection.",
      "tags": [
      {  "tagName": "param",
             "values": ["operationState    Specifies the text to which this operation applies;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": [{ "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "insertInlineGraphic",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Inserts an image.  <p>The source of the image can be a string containing a URI, URLRequest object, a Class object representing an embedded asset, or a DisplayObject instance.</p>  <p>The width and height values can be the number of pixels, a percent, or the string, 'auto', in which case the actual dimension of the graphic is used.</p>  <p>Set the <code>float</code> to one of the constants defined in the Float class to specify whether the image should be displayed to the left or right of any text or inline with the text.</p>  a DisplayObject instance or a URLRequest. if <code>null</code>, the operation applies to the current selection.",
      "tags": [
      {  "tagName": "see",
             "values": ["org.apache.royale.textLayout.elements.InlineGraphicElement"]},
          {  "tagName": "param",
             "values": ["source  Can be either a String interpreted as a uri, a Class interpreted as the class of an Embed DisplayObject,", "width   The width of the image to insert (number, percent, or 'auto').", "height  The height of the image to insert (number, percent, or 'auto').", "options None supported.", "operationState    Specifies the text to which this operation applies;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "org.apache.royale.textLayout.elements.IInlineGraphicElement",
        "params": [{ "name": "source", "type": "Object"},
      { "name": "width", "type": "Object"},
      { "name": "height", "type": "Object"},
      { "name": "options", "type": "Object"},
      { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "insertTableElement",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "return": "void",
        "params": [{ "name": "table", "type": "org.apache.royale.textLayout.elements.ITableElement"},
      { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "modifyInlineGraphic",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Modifies an existing inline graphic.  <p>Set unchanging properties to the values in the original graphic. (Modifying an existing graphic object is typically more efficient than deleting and recreating one.)</p>  a DisplayObject instance or a URLRequest. if <code>null</code>, the operation applies to the current selection.",
      "tags": [
      {  "tagName": "see",
             "values": ["org.apache.royale.textLayout.elements.InlineGraphicElement"]},
          {  "tagName": "param",
             "values": ["source  Can be either a String interpreted as a uri, a Class interpreted as the class of an Embed DisplayObject,", "width   The new width for the image (number or percent).", "height  The new height for the image (number or percent).", "options None supported.", "operationState    Specifies the text to which this operation applies;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": [{ "name": "source", "type": "Object"},
      { "name": "width", "type": "Object"},
      { "name": "height", "type": "Object"},
      { "name": "options", "type": "Object"},
      { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "insertText",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Inserts text.  <p>Inserts the text at a position or range in the text. If the location supplied in the <code>operationState</code> parameter is a range (or the parameter is <code>null</code> and the current selection is a range), then the text currently in the range is replaced by the inserted text.</p>  if <code>null</code>, the operation applies to the current selection.",
      "tags": [
      {  "tagName": "param",
             "values": ["text        The string to insert.", "operationState    Specifies the text in the flow to which this operation applies;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": [{ "name": "text", "type": "String"},
      { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "overwriteText",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Overwrites the selected text.  <p>If the selection is a point selection, the first character is overwritten by the new text.</p>  if <code>null</code>, the operation applies to the current selection.",
      "tags": [
      {  "tagName": "param",
             "values": ["text The string to insert.", "operationState Specifies the text to which this operation applies;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": [{ "name": "text", "type": "String"},
      { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "applyParagraphFormat",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Applies paragraph styles to any paragraphs in the selection.  <p>Any style properties in the format object that are <code>null</code> are left unchanged.</p>  if <code>null</code>, the operation applies to the current selection.",
      "tags": [
      {  "tagName": "param",
             "values": ["format The format to apply to the selected paragraphs.", "operationState    Specifies the text to which this operation applies;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": [{ "name": "format", "type": "org.apache.royale.textLayout.formats.ITextLayoutFormat"},
      { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "applyContainerFormat",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Applies container styles to any containers in the selection.  <p>Any style properties in the format object that are <code>null</code> are left unchanged.</p>  if <code>null</code>, the operation applies to the current selection.",
      "tags": [
      {  "tagName": "param",
             "values": ["format    The format to apply to the containers in the range", "operationState    Specifies the text to which this operation applies;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": [{ "name": "format", "type": "org.apache.royale.textLayout.formats.ITextLayoutFormat"},
      { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "applyFormatToElement",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Applies styles to the specified element.  <p>Any style properties in the format object that are <code>null</code> are left unchanged. Only styles that are relevant to the specified element are applied.</p>  if <code>null</code>, the operation applies to the current selection.",
      "tags": [
      {  "tagName": "param",
             "values": ["targetElement The element to which the styles are applied.", "format  The format containing the styles to apply.", "relativeStart An offset from the beginning of the element at which to split the element when assigning the new formatting.", "relativeEnd An offset from the beginning of the element at which to split the element when applying the new formatting.", "operationState    Specifies the text to which this operation applies;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": [{ "name": "targetElement", "type": "org.apache.royale.textLayout.elements.IFlowElement"},
      { "name": "format", "type": "org.apache.royale.textLayout.formats.ITextLayoutFormat"},
      { "name": "relativeStart", "type": "int"},
      { "name": "relativeEnd", "type": "int"},
      { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "clearFormatOnElement",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Undefines styles to the specified element.  <p>Any style properties in the format object that are <code>undefined</code> are left unchanged. Any styles that are defined in the specififed format are undefined on the specified element.</p>  if <code>null</code>, the operation applies to the current selection.",
      "tags": [
      {  "tagName": "param",
             "values": ["targetElement The element to which the styles are applied.", "format  The format containing the styles to undefine.", "operationState    Specifies the text to which this operation applies;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": [{ "name": "targetElement", "type": "org.apache.royale.textLayout.elements.IFlowElement"},
      { "name": "format", "type": "org.apache.royale.textLayout.formats.ITextLayoutFormat"},
      { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "splitParagraph",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Splits the paragraph at the current position, creating a new paragraph after the current one.  <p>If a range of text is specified, the text in the range is deleted.</p>  if <code>null</code>, the operation applies to the current selection.",
      "tags": [
      {  "tagName": "param",
             "values": ["operationState    Specifies the text to which this operation applies;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "return",
             "values": ["The new paragraph that was created."]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "org.apache.royale.textLayout.elements.IParagraphElement",
        "params": [{ "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "splitElement",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Splits the target element at the location specified, creating a new element after the current one. If the operationState is a range, the text within the range is deleted. The new element is created after the text position specified by operationState. Note that splitting a SubParagraphGroupElement will have no effect because they will automatically remerge with the adejacent elements.  <p>An example where you might want to use this is if you have a list, and you want to divide it into two lists.</p>  if <code>null</code>, the operation applies to the current selection.",
      "tags": [
      {  "tagName": "param",
             "values": ["target  The element to be split.", "operationState    Specifies the text to which this operation applies;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "return",
             "values": ["The new paragraph that was created."]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "org.apache.royale.textLayout.elements.IFlowGroupElement",
        "params": [{ "name": "target", "type": "org.apache.royale.textLayout.elements.IFlowGroupElement"},
      { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "createDiv",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Creates a new IDivElement that contains the entire range specified in the operationState at the lowest common parent element that contains both the start and end points of the range. If the start and end points are the same, a new IDivElement is created at that position with a single child paragraph.  If <code>null</code> the new parent will be lowest level that contains the SelectionState. if <code>null</code>, the operation applies to the current selection.",
      "tags": [
      {  "tagName": "param",
             "values": ["parent    Specifies a parent element for the new IDivElement.", "format    Formatting attributes to apply to the new IDivElement.", "operationState    Specifies the text to which this operation applies;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "return",
             "values": ["The new IDivElement that was created."]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "org.apache.royale.textLayout.elements.IDivElement",
        "params": [{ "name": "parent", "type": "org.apache.royale.textLayout.elements.IFlowGroupElement"},
      { "name": "format", "type": "org.apache.royale.textLayout.formats.ITextLayoutFormat"},
      { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "createList",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Creates a new ListElement that contains the entire range specified in the operationState at the lowest common parent element that contains both the start and end points of the range. Each paragraph within the range will become a ListItemElement in the new ListElement. If the start and end points are the same, a new ListElement is created at that position with a single ListItemElement child.  If <code>null</code> the new parent will be lowest level that contains the SelectionState. if <code>null</code>, the operation applies to the current selection.",
      "tags": [
      {  "tagName": "param",
             "values": ["parent Optionally specifies a parent element for the new ListElement.", "format Formatting attributes to apply to the new ListElement.", "operationState    Specifies the text to which this operation applies;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "return",
             "values": ["The new ListElement that was created."]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "org.apache.royale.textLayout.elements.IListElement",
        "params": [{ "name": "parent", "type": "org.apache.royale.textLayout.elements.IFlowGroupElement"},
      { "name": "format", "type": "org.apache.royale.textLayout.formats.ITextLayoutFormat"},
      { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "moveChildren",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Move a set of FlowElements from one IFlowGroupElement to another. The desinationElement must be a legal parent type for the children being moved, or an exception is thrown.  If <code>null</code>, the operation applies to the current selection.  If there is no current selection, this parameter must be non-null.",
      "tags": [
      {  "tagName": "param",
             "values": ["source    The orginal parent of the elements to be moved.", "sourceIndex   The child index within the source of the first element to be moved.", "numChildren   The number of children being moved.", "destination   The new parent of elements after move.", "destinationIndex  The child index within the destination to where elements are moved to.", "operationState    Specifies the text to which this operation applies, and to which selection returns to upon undo."]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": [{ "name": "source", "type": "org.apache.royale.textLayout.elements.IFlowGroupElement"},
      { "name": "sourceIndex", "type": "int"},
      { "name": "numChildren", "type": "int"},
      { "name": "destination", "type": "org.apache.royale.textLayout.elements.IFlowGroupElement"},
      { "name": "destinationIndex", "type": "int"},
      { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "createSubParagraphGroup",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Creates a new SubParagraphGroupElement that contains the entire range specified in the operationState at the lowest common parent element that contains both the start and end points of the range. If the start and end points are the same, nothing is done.  If <code>null</code> the new parent will be lowest level that contains the SelectionState. if <code>null</code>, the operation applies to the current selection.",
      "tags": [
      {  "tagName": "param",
             "values": ["parent Specifies a parent element for the new SubParagraphGroupElement element.", "format    Formatting attributes to apply to the new SubParagraphGroupElement", "operationState    Specifies the text to which this operation applies;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "return",
             "values": ["The new SubParagraphGroupElement that was created."]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "org.apache.royale.textLayout.elements.ISubParagraphGroupElement",
        "params": [{ "name": "parent", "type": "org.apache.royale.textLayout.elements.IFlowGroupElement"},
      { "name": "format", "type": "org.apache.royale.textLayout.formats.ITextLayoutFormat"},
      { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "cutTextScrap",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Deletes the selected area and returns the deleted area in a TextScrap object.  <p>The resulting TextScrap can be posted to the system clipboard or used in a subsequent <code>pasteTextOperation()</code> operation.</p>  if <code>null</code>, the operation applies to the current selection.",
      "tags": [
      {  "tagName": "see",
             "values": ["org.apache.royale.textLayout.edit.IEditManager.pasteTextScrap", "org.apache.royale.textLayout.edit.TextClipboard.setContents"]},
          {  "tagName": "param",
             "values": ["operationState    Specifies the text to which this operation applies;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "return",
             "values": ["The TextScrap that was cut."]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "org.apache.royale.textLayout.edit.TextScrap",
        "params": [{ "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "pasteTextScrap",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Pastes the TextScrap into the selected area.  <p>If a range of text is specified, the text in the range is deleted.</p>  if <code>null</code>, the operation applies to the current selection.",
      "tags": [
      {  "tagName": "see",
             "values": ["org.apache.royale.textLayout.edit.IEditManager.cutTextScrap", "org.apache.royale.textLayout.edit.TextClipboard.getContents", "org.apache.royale.textLayout.edit.TextScrap"]},
          {  "tagName": "param",
             "values": ["scrapToPaste  The TextScrap to paste.", "operationState    Specifies the text to which this operation applies;"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": [{ "name": "scrapToPaste", "type": "org.apache.royale.textLayout.edit.TextScrap"},
      { "name": "operationState", "type": "org.apache.royale.textLayout.edit.SelectionState"}]}
    ,
    { "type": "method",
      "qname": "beginCompositeOperation",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Begins a new group of operations.  <p>All operations executed after the call to <code>beginCompositeOperation()</code>, and before the matching call to <code>endCompositeOperation()</code> are executed and grouped together as a single operation that can be undone as a unit.</p>  <p>A <code>beginCompositeOperation</code>/<code>endCompositeOperation</code> block can be nested inside another <code>beginCompositeOperation</code>/<code>endCompositeOperation</code> block.</p>",
      "tags": [
      {  "tagName": "see",
             "values": ["org.apache.royale.textLayout.edit.IEditManager.endCompositeOperation"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": []}
    ,
    { "type": "method",
      "qname": "endCompositeOperation",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Ends a group of operations.  <p>All operations executed since the last call to <code>beginCompositeOperation()</code> are grouped as a CompositeOperation that is then completed. This CompositeOperation object is added to the undo stack or, if this composite operation is nested inside another composite operation, added to the parent operation.</p>",
      "tags": [
      {  "tagName": "see",
             "values": ["org.apache.royale.textLayout.edit.IEditManager.beginCompositeOperation"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": []}
    ,
    { "type": "method",
      "qname": "doOperation",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Executes a FlowOperation.  <p>The <code>doOperation()</code> method is called by IEditManager functions that update the text flow. You do not typically need to call this function directly unless you create your own custom operations.</p>  <p>This function proceeds in the following steps:</p> <ol> <li>Flush any pending operations before performing this operation.</li> <li>Send a cancelable flowOperationBegin event.  If canceled this method returns immediately.</li> <li>Execute the operation.  The operation returns <code>true</code> or <code>false</code>. <code>False</code> indicates that no changes were made.</li> <li>Push the operation onto the undo stack.</li> <li>Clear the redo stack.</li> <li>Update the display.</li> <li>Send a cancelable flowOperationEnd event.</li> </ol> <p>Exception handling:  If the operation throws an exception, it is caught and the error is attached to the flowOperationEnd event.  If the event is not canceled the error is rethrown.</p>",
      "tags": [
      {  "tagName": "param",
             "values": ["operation a FlowOperation object"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": [{ "name": "operation", "type": "org.apache.royale.textLayout.operations.FlowOperation"}]}
    ,
    { "type": "method",
      "qname": "undo",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Reverses the previous operation.  <p><b>Note:</b> If the IUndoManager associated with this IEditManager is also associated with another IEditManager, then it is possible that the undo operation associated with the other IEditManager is the one undone.  This can happen if the FlowOperation of another IEditManager is on top of the undo stack.</p>  <p>This function does nothing if undo is not turned on.</p>",
      "tags": [
      {  "tagName": "see",
             "values": ["flashx.undo.IUndoManager#undo()"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": []}
    ,
    { "type": "method",
      "qname": "redo",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Reperforms the previous undone operation.  <p><b>Note:</b> If the IUndoManager associated with this IEditManager is also associated with another IEditManager, then it is possible that the redo operation associated with the other IEditManager is the one redone. This can happen if the FlowOperation of another IEditManager is on top of the redo stack.</p>  <p>This function does nothing if undo is not turned on.</p>",
      "tags": [
      {  "tagName": "see",
             "values": ["flashx.undo.IUndoManager#redo()"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10", "AIR 1.5"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": []}
    ,
    { "type": "accessor",
      "access": "read-write",
      "return": "Boolean",
      "qname": "delayUpdates",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "By default, calls into IEditManager handle updates synchronously, so the requested change is made and the text recomposed and added to the display list within the IEditManager method. To get a delayed redraw, set <code>delayUpdates</code> to <code>true</code>. This causes the IEditManager to only update the model, and recompose and redraw on the next <code>enter_frame</code> event.",
      "tags": [
      {  "tagName": "playerversion",
             "values": ["Flash 10.2", "AIR 2.0"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ]},
    { "type": "accessor",
      "access": "read-write",
      "return": "Boolean",
      "qname": "allowDelayedOperations",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Controls whether operations can be queued up for later execution.  <p>Execution of some operations might be delayed as a performance optimization. For example, it is convenient to be able to combine multiple keystrokes into a single insert operation. If <code>allowDelayedOperations</code> is <code>true</code>, then operations may be queued up. If <code>false</code>, all operations are executed immediately. By default, it is <code>true</code>.</p>",
      "tags": [
      {  "tagName": "see",
             "values": ["flashx.edit.ISelectionManager#flushPendingOperations"]},
          {  "tagName": "playerversion",
             "values": ["Flash 10.2", "AIR 2.0"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ]},
    { "type": "method",
      "qname": "updateAllControllers",
      "namespace": "public",
      "bindable": [],
      "details": [],
      "deprecated": {},
        "description": "Updates the display after an operation has modified it. Normally this is handled automatically, but call this method if <code>delayUpdates</code> is on, and the display should be updated before the next <code>enter_frame</code> event.",
      "tags": [
      {  "tagName": "playerversion",
             "values": ["Flash 10.2", "AIR 2.0"]},
          {  "tagName": "langversion",
             "values": ["3.0"]}  ],
        "return": "void",
        "params": []}
    ]
    }
  