<!--
  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">horizontal</span><span class="MXMLDefault_Text">&quot; verticalAlign=&quot;</span><span class="MXMLString">middle</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; 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">import</span> <span class="ActionScriptDefault_Text">mx</span>.<span class="ActionScriptDefault_Text">controls</span>.<span class="ActionScriptDefault_Text">Alert</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"> title=&quot;</span><span class="MXMLString">LinkButton Sample</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">0xffffff</span><span class="MXMLDefault_Text">&quot; borderAlpha=&quot;</span><span class="MXMLString">0.15</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:Text</span><span class="MXMLDefault_Text"> color=&quot;</span><span class="MXMLString">0x323232</span><span class="MXMLDefault_Text">&quot; text=&quot;</span><span class="MXMLString">Sample of image embeded at compile time.</span><span class="MXMLDefault_Text">&quot; </span><span class="MXMLComponent_Tag">/&gt;</span>
        <span class="MXMLComponent_Tag">&lt;mx:LinkButton</span><span class="MXMLDefault_Text"> label=&quot;</span><span class="MXMLString">LinkButton Control</span><span class="MXMLDefault_Text">&quot; color=&quot;</span><span class="MXMLString">0x3380DD</span><span class="MXMLDefault_Text">&quot; click=&quot;</span><span class="ActionScriptBracket/Brace">{A</span><span class="ActionScriptDefault_Text">lert</span>.<span class="ActionScriptDefault_Text">show</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">&apos;LinkButton Pressed&apos;</span><span class="ActionScriptBracket/Brace">)</span>;<span class="ActionScriptBracket/Brace">}</span><span class="MXMLDefault_Text">&quot;
             textDecoration=&quot;</span><span class="MXMLString">underline</span><span class="MXMLDefault_Text">&quot; fontWeight=&quot;</span><span class="MXMLString">normal</span><span class="MXMLDefault_Text">&quot; icon=&quot;</span><span class="MXMLString">@Embed(&apos;assets/arrow_icon_blue.png&apos;)</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>
