{ "type": "class",
  "qname": "org.apache.royale.textLayout.edit.SelectionState",
  "baseClassname": "org.apache.royale.textLayout.elements.TextRange"
  ,
    "description": "The SelectionState class represents a selection in a text flow.  <p>A selection range has an anchor point, representing the point at which the selection of text began, and an active point, representing the point to which the selection is extended. The active point can be before or after the anchor point in the text. If a selection is modified (for example, by a user shift-clicking with the mouse), the active point changes while the anchor point always remains in the same position.</p>",
  "tags": [
  {  "tagName": "see",
         "values": ["org.apache.royale.textLayout.edit.ISelectionManager#getSelectionState()", "org.apache.royale.textLayout.elements.TextFlow", "org.apache.royale.textLayout.elements.TextRange"]},
      {  "tagName": "playerversion",
         "values": ["Flash 10", "AIR 1.5"]},
      {  "tagName": "langversion",
         "values": ["3.0"]}  ],
  "members": [
  { "type": "method",
        "qname": "org.apache.royale.textLayout.edit.SelectionState",
        "namespace": "",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Creates a SelectionState object.  <p><b>Note:</b> Do not construct a SelectionState object in order to create a selection. To create a selection in a text flow, call the <code>setSelection()</code> method of the relevant ISelectionManager instance (which is the SelectionManager or EditManager object assigned to the <code>interactionManager</code> property of the text flow).</p>",
        "tags": [
        {  "tagName": "see",
               "values": ["org.apache.royale.textLayout.edit.ISelectionManager#getSelectionState()", "org.apache.royale.textLayout.edit.SelectionManager", "org.apache.royale.textLayout.edit.EditManager"]},
            {  "tagName": "param",
               "values": ["root The TextFlow associated with the selection.", "anchorPosition The anchor index of the selection.", "activePosition The active index of the selection.", "format The TextLayoutFormat to be applied on next character typed when a point selection"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "",
          "params": [{ "name": "root", "type": "org.apache.royale.textLayout.elements.ITextFlow"},
        { "name": "anchorPosition", "type": "int"},
        { "name": "activePosition", "type": "int"},
        { "name": "format", "type": "org.apache.royale.textLayout.formats.ITextLayoutFormat"},
        { "name": "cellRange", "type": "org.apache.royale.textLayout.elements.CellRange"}]}
      ,
      { "type": "method",
        "qname": "updateRange",
        "namespace": "public",
        "bindable": [],
        "details": ["override"],
        "deprecated": {},
          "description": "Updates the selection range with new anchor or active position values.  <p>The <code>pointFormat</code> styles are cleared if the selection is changed.</p>",
        "tags": [
        {  "tagName": "param",
               "values": ["newAnchorPosition the anchor index of the selection.", "newActivePosition the active index of the selection."]},
            {  "tagName": "return",
               "values": ["true if selection is changed"]}  ],
          "return": "Boolean",
          "params": [{ "name": "newAnchorPosition", "type": "int"},
        { "name": "newActivePosition", "type": "int"}]}
      ,
      { "type": "accessor",
        "access": "read-write",
        "return": "org.apache.royale.textLayout.formats.ITextLayoutFormat",
        "qname": "pointFormat",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The format attributes applied to inserted text.  <p><b>Note:</b> The <code>pointFormat</code> object does not include inherited styles. To get all the applicable style definitions, use the <code>getCommonCharacterFormat()</code> method of the ISelectionManager class.</p>",
        "tags": [
        {  "tagName": "see",
               "values": ["ISelectionManager#getCommonCharacterFormat()"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 1.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "Boolean",
        "qname": "selectionManagerOperationState",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "@private"},
      { "type": "accessor",
        "access": "read-write",
        "return": "org.apache.royale.textLayout.elements.CellRange",
        "qname": "cellRange",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Range of table cells in selection (null if no cells selected)"}]
  }
