{ "type": "class",
  "qname": "org.apache.royale.express.beads.layouts.DataGridLayout",
  "baseClassname": ""
  ,
    "description": "This DataGridLayout class sizes and positions all of the elements of the DataGrid in the Express package. The ButtonBar header, the container content area for the the list columns, and the positioning and sizing of the list columns within that container. On top of the contain a drawing layer is floating to allow for the graphics of a drag-and-drop indicator.",
  "members": [
  { "type": "method",
        "qname": "org.apache.royale.express.beads.layouts.DataGridLayout",
        "namespace": "",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "constructor",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10.2", "AIR 2.6"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.0"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "",
          "params": []}
      ,
      { "type": "accessor",
        "access": "write-only",
        "return": "org.apache.royale.core.IStrand",
        "qname": "strand",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10.2", "AIR 2.6"]},
            {  "tagName": "copy",
               "values": ["org.apache.royale.core.IBead#strand"]},
            {  "tagName": "productversion",
               "values": ["Royale 0.0"]},
            {  "tagName": "royaleignorecoercion",
               "values": ["org.apache.royale.events.IEventDispatcher"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "method",
        "qname": "layout",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "This layout algorithm handles columns of both pixel and percent widths. The percent width represents the amount of space remaining after the fixed width columns have been placed. For example, with three columns of widths, &quot;50&quot;, &quot;100%&quot;, and &quot;80&quot; the 100% size represents the amount left over after the 130 pixels have been removed from whatever width the DataGrid currently has at the time this layout is executed.",
        "tags": [
        {  "tagName": "royaleignorecoercion",
               "values": ["org.apache.royale.core.IBorderPaddingMarginValuesImpl", "org.apache.royale.core.IUIBase", "org.apache.royale.core.IParent", "org.apache.royale.core.ILayoutChild", "org.apache.royale.html.beads.IDataGridView", "org.apache.royale.core.IDataGridModel", "org.apache.royale.html.beads.models.ButtonBarModel", "org.apache.royale.html.beads.IDrawingLayerBead"]},
            {  "tagName": "royaleemitcoercion",
               "values": ["org.apache.royale.html.supportClasses.DataGridColumn"]}  ],
          "return": "Boolean",
          "params": []}
      ]
  }
