<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<!-- saved from url=(0014)about:internet -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>sample1.mxml</title>
<link rel="stylesheet" type="text/css" href="../SourceStyles.css"/>
</head>

<body><pre><span class="MXMLProcessing_Instruction">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;</span>
<span class="MXMLComponent_Tag">&lt;mx:Application</span><span class="MXMLDefault_Text"> xmlns:mx=&quot;</span><span class="MXMLString">http://www.adobe.com/2006/mxml</span><span class="MXMLDefault_Text">&quot; layout=&quot;</span><span class="MXMLString">vertical</span><span class="MXMLDefault_Text">&quot; verticalAlign=&quot;</span><span class="MXMLString">top</span><span class="MXMLDefault_Text">&quot;
    horizontalAlign=&quot;</span><span class="MXMLString">center</span><span class="MXMLDefault_Text">&quot; backgroundGradientColors=&quot;</span><span class="MXMLString">[0x000000,0x323232]</span><span class="MXMLDefault_Text">&quot; paddingTop=&quot;</span><span class="MXMLString">10</span><span class="MXMLDefault_Text">&quot; viewSourceURL=&quot;</span><span class="MXMLString">srcview/index.html</span><span class="MXMLDefault_Text">&quot;</span><span class="MXMLComponent_Tag">&gt;</span>
    
    <span class="MXMLSpecial_Tag">&lt;mx:Script&gt;</span>
        <span class="ActionScriptOperator">&lt;!</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">CDATA</span><span class="ActionScriptBracket/Brace">[</span>
       
            <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">showProperties</span><span class="ActionScriptBracket/Brace">()</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span>  <span class="ActionScriptBracket/Brace">{</span>
                <span class="ActionScriptDefault_Text">panelPropertyArea</span>.<span class="ActionScriptDefault_Text">text</span><span class="ActionScriptOperator">=</span> <span class="ActionScriptString">&quot;Status: &quot;</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">panel</span>.<span class="ActionScriptDefault_Text">status</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptString">&apos;\n&apos;</span> <span class="ActionScriptOperator">+</span>
                  <span class="ActionScriptString">&quot;Title: &quot;</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">panel</span>.<span class="ActionScriptDefault_Text">title</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptString">&apos;\n&apos;</span> <span class="ActionScriptOperator">+</span>
                  <span class="ActionScriptString">&quot;Width: &quot;</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">panel</span>.<span class="ActionScriptDefault_Text">width</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptString">&apos;\n&apos;</span> <span class="ActionScriptOperator">+</span>
                  <span class="ActionScriptString">&quot;Height: &quot;</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">panel</span>.<span class="ActionScriptDefault_Text">height</span> ;
            <span class="ActionScriptBracket/Brace">}</span>
        <span class="ActionScriptBracket/Brace">]]</span><span class="ActionScriptOperator">&gt;</span>
    <span class="MXMLSpecial_Tag">&lt;/mx:Script&gt;</span>
    
    <span class="MXMLComponent_Tag">&lt;mx:Panel</span><span class="MXMLDefault_Text"> id=&quot;</span><span class="MXMLString">panel</span><span class="MXMLDefault_Text">&quot; title=&quot;</span><span class="MXMLString">Panel Container</span><span class="MXMLDefault_Text">&quot; layout=&quot;</span><span class="MXMLString">vertical</span><span class="MXMLDefault_Text">&quot; color=&quot;</span><span class="MXMLString">0x323232</span><span class="MXMLDefault_Text">&quot; height=&quot;</span><span class="MXMLString">200</span><span class="MXMLDefault_Text">&quot; borderAlpha=&quot;</span><span class="MXMLString">1</span><span class="MXMLDefault_Text">&quot; status=&quot;</span><span class="MXMLString">Active</span><span class="MXMLDefault_Text">&quot;
         paddingTop=&quot;</span><span class="MXMLString">10</span><span class="MXMLDefault_Text">&quot; paddingRight=&quot;</span><span class="MXMLString">10</span><span class="MXMLDefault_Text">&quot; paddingBottom=&quot;</span><span class="MXMLString">10</span><span class="MXMLDefault_Text">&quot; paddingLeft=&quot;</span><span class="MXMLString">10</span><span class="MXMLDefault_Text">&quot; horizontalAlign=&quot;</span><span class="MXMLString">center</span><span class="MXMLDefault_Text">&quot;</span><span class="MXMLComponent_Tag">&gt;</span>
           
         <span class="MXMLComponent_Tag">&lt;mx:Label</span><span class="MXMLDefault_Text"> width=&quot;</span><span class="MXMLString">100%</span><span class="MXMLDefault_Text">&quot; color=&quot;</span><span class="MXMLString">0x323232</span><span class="MXMLDefault_Text">&quot;
            text=&quot;</span><span class="MXMLString">Click the Button control to see panel properties.</span><span class="MXMLDefault_Text">&quot;</span><span class="MXMLComponent_Tag">/&gt;</span>

        <span class="MXMLComponent_Tag">&lt;mx:TextArea</span><span class="MXMLDefault_Text"> id=&quot;</span><span class="MXMLString">panelPropertyArea</span><span class="MXMLDefault_Text">&quot; width=&quot;</span><span class="MXMLString">100%</span><span class="MXMLDefault_Text">&quot; height=&quot;</span><span class="MXMLString">100%</span><span class="MXMLDefault_Text">&quot;</span><span class="MXMLComponent_Tag">/&gt;</span>
        <span class="MXMLComponent_Tag">&lt;mx:Button</span><span class="MXMLDefault_Text"> label=&quot;</span><span class="MXMLString">Click to view Panel properties</span><span class="MXMLDefault_Text">&quot; click=&quot;</span><span class="ActionScriptDefault_Text">showProperties</span><span class="ActionScriptBracket/Brace">()</span>;<span class="MXMLDefault_Text">&quot;</span><span class="MXMLComponent_Tag">/&gt;</span>
        
    <span class="MXMLComponent_Tag">&lt;/mx:Panel&gt;</span>
<span class="MXMLComponent_Tag">&lt;/mx:Application&gt;</span></pre></body>
</html>
