{ "type": "class",
  "qname": "spark.components.SkinnablePopUpContainer",
  "baseClassname": "spark.components.SkinnableContainer"
  ,
    "description": "The SkinnablePopUpContainer class is a SkinnableContainer that functions as a pop-up. One typical use for a SkinnablePopUpContainer container is to open a simple window in an application, such as an alert window, to indicate that the user must perform some action.  <p>You do not create a SkinnablePopUpContainer container as part of the normal layout of its parent container. Instead, it appears as a pop-up window on top of its parent. Therefore, you do not create it directly in the MXML code of your application.</p>  <p>Instead, you create is as an MXML component, often in a separate MXML file. To show the component create an instance of the MXML component, and then call the <code>open()</code> method. You can also set the size and position of the component when you open it.</p>  <p>To close the component, call the <code>close()</code> method. If the pop-up needs to return data to a handler, you can add an event listener for the <code>PopUp.CLOSE</code> event, and specify the returned data in the <code>close()</code> method.</p>  <p>The SkinnablePopUpContainer is initially in its <code>closed</code> skin state. When it opens, it adds itself as a pop-up to the PopUpManager, and transition to the <code>normal</code> skin state. To define open and close animations, use a custom skin with transitions between the <code>closed</code> and <code>normal</code> skin states.</p>  <p>The SkinnablePopUpContainer container has the following default characteristics:</p> <table class=&quot;innertable&quot;> <tr><th>Characteristic</th><th>Description</th></tr> <tr><td>Default size</td><td>Large enough to display its children</td></tr> <tr><td>Minimum size</td><td>0 pixels</td></tr> <tr><td>Maximum size</td><td>10000 pixels wide and 10000 pixels high</td></tr> <tr><td>Default skin class</td><td>spark.skins.spark.SkinnablePopUpContainerSkin</td></tr> </table>  attributes of its superclass and adds the following tag attributes:</p>  <pre>\\n &lt;s:SkinnablePopUpContainer\\n <strong>Events</strong>\\n close=&quot;<i>No default</i>&quot;\\n open=&quot;<i>No default</i>&quot;\\n /&gt;\\n </pre>",
  "tags": [
  {  "tagName": "see",
         "values": ["spark.skins.spark.SkinnablePopUpContainerSkin"]},
      {  "tagName": "mxml",
         "values": ["<p>The <code>&lt;s:SkinnablePopUpContainer&gt;</code> tag inherits all of the tag"]},
      {  "tagName": "playerversion",
         "values": ["Flash 10", "AIR 2.5"]},
      {  "tagName": "productversion",
         "values": ["Flex 4.5"]},
      {  "tagName": "langversion",
         "values": ["3.0"]}  ],
  "members": [
  { "type": "method",
        "qname": "spark.components.SkinnablePopUpContainer",
        "namespace": "",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Constructor.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "",
          "params": []}
      ,
      { "type": "accessor",
        "access": "read-only",
        "return": "Boolean",
        "qname": "isOpen",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Contains <code>true</code> when the container is open and is currently showing as a pop-up.",
        "tags": [
        {  "tagName": "see",
               "values": ["#open", "#close"]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "Boolean",
        "qname": "resizeForSoftKeyboard",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Enables resizing the pop-up when the soft keyboard on a mobile device is active.",
        "tags": [
        {  "tagName": "default",
               "values": ["true"]},
            {  "tagName": "playerversion",
               "values": ["AIR 3"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.6"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "Boolean",
        "qname": "moveForSoftKeyboard",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Enables moving the pop-up when the soft keyboard on a mobile device is active.",
        "tags": [
        {  "tagName": "default",
               "values": ["true"]},
            {  "tagName": "playerversion",
               "values": ["AIR 3"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.6"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "method",
        "qname": "open",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Opens the container as a pop-up, and switches the skin state from <code>closed</code> to <code>normal</code>. After and transitions finish playing, it dispatches  the <code>FlexEvent.OPEN</code> event.  The popup appears over this component. The owner must not be descendant of this container.  A modal container takes all keyboard and mouse input until it is closed. A nonmodal container allows other components to accept input while the pop-up window is open.",
        "tags": [
        {  "tagName": "see",
               "values": ["#close"]},
            {  "tagName": "param",
               "values": ["owner The owner of the container.", "modal Whether the container should be modal."]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "void",
          "params": [{ "name": "owner", "type": "mx.core.UIComponent"},
        { "name": "modal", "type": "Boolean"}]}
      ,
      { "type": "method",
        "qname": "updatePopUpPosition",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Positions the pop-up after the pop-up is added to PopUpManager but before any state transitions occur. The base implementation of open() calls updatePopUpPosition() immediately after the pop-up is added.  This method may also be called at any time to update the pop-up's position. Pop-ups that are positioned relative to their owner should call this method after position or size changes occur on the owner or it's ancestors.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["AIR 3"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.6"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "void",
          "params": []}
      ,
      { "type": "method",
        "qname": "close",
        "namespace": "public",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Changes the current skin state to <code>closed</code>, waits until any state transitions finish playing, dispatches a <code>PopUpEvent.CLOSE</code> event, and then removes the container from the PopUpManager.  <p>Use the <code>close()</code> method of the SkinnablePopUpContainer container to pass data back to the main application from the pop up. One typical usage scenario is building a dialog with a cancel button. When a valid option is selected in the dialog box, you close the dialog with a call to the <code>close()</code> method, passing <code>true</code> to the <code>commit</code> parameter and optionally passing any relevant data. When the SkinnablePopUpContainer has completed closing, it dispatch the <code>close</code> event. In the event listener for the <code>close</code> event, you can check the <code>commit</code> parameter and perform the appropriate actions.  </p>  The value of this argument is written to the <code>commit</code> property of the <code>PopUpEvent</code> event object.  The value of this argument is written to the <code>data</code> property of the <code>PopUpEvent</code> event object.",
        "tags": [
        {  "tagName": "see",
               "values": ["#open"]},
            {  "tagName": "param",
               "values": ["commit Specifies if the return data should be committed by the application.", "data Specifies any data returned to the application."]},
            {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "void",
          "params": [{ "name": "commit", "type": "Boolean"},
        { "name": "data", "type": "*"}]}
      ,
      { "type": "method",
        "qname": "createSoftKeyboardEffect",
        "namespace": "protected",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Called by the soft keyboard <code>activate</code> and <code>deactive</code> event handlers, this method is responsible for creating the Spark effect played on the pop-up.  This method may be overridden by subclasses. By default, it creates a parellel move and resize effect on the pop-up.    for the pop-up. This effect is played after the soft keyboard is activated or deactivated.",
        "tags": [
        {  "tagName": "param",
               "values": ["yTo The new y-coordinate of the pop-up.", "height The new height of the pop-up."]},
            {  "tagName": "playerversion",
               "values": ["AIR 3"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.6"]},
            {  "tagName": "return",
               "values": ["An IEffect instance serving as the move and/or resize transition"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "org.apache.royale.effects.IEffect",
          "params": [{ "name": "yTo", "type": "Number"},
        { "name": "heightTo", "type": "Number"}]}
      ,
      { "type": "accessor",
        "access": "read-only",
        "return": "Boolean",
        "qname": "softKeyboardEffectExplicitHeightFlag",
        "namespace": "mx_internal",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Flag when explicitHeight is set when the soft keyboard effect is active. Use this to distinguish explicitHeight changes due to the resizeForSoftKeyboard setting. When true, we prevent the original cached height from being modified.",
        "tags": [
        {  "tagName": "private",
               "values": []}  ]},
      { "type": "accessor",
        "access": "read-only",
        "return": "Boolean",
        "qname": "softKeyboardEffectExplicitWidthFlag",
        "namespace": "mx_internal",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Flag when explicitWidth is set when the soft keyboard effect is active. Use this to distinguish explicitWidth changes due to the resizeForSoftKeyboard setting.",
        "tags": [
        {  "tagName": "private",
               "values": []}  ]},
      { "type": "accessor",
        "access": "read-only",
        "return": "Number",
        "qname": "softKeyboardEffectCachedHeight",
        "namespace": "mx_internal",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "The original pop-up height to restore to when the soft keyboard is deactivated. If an explicitHeight was defined at activation, use it. If not, then use explicitMaxHeight or measuredHeight.",
        "tags": [
        {  "tagName": "private",
               "values": []}  ]},
      { "type": "accessor",
        "access": "read-only",
        "return": "Boolean",
        "qname": "isSoftKeyboardEffectActive",
        "namespace": "mx_internal",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Returns true if the soft keyboard is active and the pop-up is moved and/or resized.",
        "tags": [
        {  "tagName": "private",
               "values": []}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "Number",
        "qname": "softKeyboardEffectMarginTop",
        "namespace": "mx_internal",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "",
        "tags": [
        {  "tagName": "private",
               "values": []}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "Number",
        "qname": "softKeyboardEffectMarginBottom",
        "namespace": "mx_internal",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "",
        "tags": [
        {  "tagName": "private",
               "values": []}  ]}]
  ,
  "events": [
  { "qname": "open",
        "type": "spark.events.PopUpEvent"
      ,
          "description": "Dispatched by the container when it's opened and ready for user interaction.  <p>This event is dispatched when the container switches from the <code>closed</code> to <code>normal</code> skin state and the transition to that state completes.</p>  <p>Note: As of Flex 4.6, SkinnablePopUp container inherits its styles from the stage and not its owner.</p>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "eventType",
               "values": ["spark.events.PopUpEvent.OPEN"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "qname": "close",
        "type": "spark.events.PopUpEvent"
      ,
          "description": "Dispatched by the container when it's closed.  <p>This event is dispatched when the container switches from the <code>normal</code> to <code>closed</code> skin state and the transition to that state completes.</p>  <p>The event provides a mechanism to pass commit information from the container to an event listener. One typical usage scenario is building a multiple-choice dialog with a cancel button. When a valid option is selected, you close the pop up with a call to the <code>close()</code> method, passing <code>true</code> to the <code>commit</code> parameter and optionally passing in any relevant data. When the SkinnablePopUpContainer has completed closing, it dispatches this event. Then, in the event listener, you can check the <code>commit</code> property and perform the appropriate action.  </p>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 10", "AIR 2.5"]},
            {  "tagName": "eventType",
               "values": ["spark.events.PopUpEvent.CLOSE"]},
            {  "tagName": "productversion",
               "values": ["Flex 4.5"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]}]
  }
