<!--
  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">0</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="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">richText</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">String</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptString">&quot;Enter text into the &lt;b&gt;RichTextEditor control&lt;/b&gt;, then click a &lt;b&gt;&lt;font color=&apos;#0050AA&apos;&gt;button&lt;/font&gt;&lt;/b&gt; to display your text as &lt;i&gt;plain text&lt;/i&gt;, or as &lt;i&gt;HTML-formatted&lt;/i&gt; text.&quot;</span>;
        <span class="ActionScriptBracket/Brace">]]</span><span class="ActionScriptOperator">&gt;</span>
    <span class="MXMLSpecial_Tag">&lt;/mx:Script&gt;</span>
    <span class="MXMLSpecial_Tag">&lt;mx:Style&gt;</span>
        <span class="CSSSelector">.white</span><span class="CSSDelimiters">{</span>
            <span class="CSSProperty_Name">color</span><span class="CSSDelimiters">:</span> <span class="CSSProperty_Value">#ffffff</span><span class="CSSDelimiters">;</span>
            <span class="CSSProperty_Name">fontWeight</span><span class="CSSDelimiters">:</span> <span class="CSSProperty_Value">bold</span><span class="CSSDelimiters">;</span>
        <span class="CSSDelimiters">}</span>
    <span class="MXMLSpecial_Tag">&lt;/mx:Style&gt;</span>
    
    <span class="MXMLComponent_Tag">&lt;mx:RichTextEditor</span><span class="MXMLDefault_Text"> titleStyleName=&quot;</span><span class="MXMLString">white</span><span class="MXMLDefault_Text">&quot; id=&quot;</span><span class="MXMLString">rte</span><span class="MXMLDefault_Text">&quot; title=&quot;</span><span class="MXMLString">RichTextEditor</span><span class="MXMLDefault_Text">&quot; width=&quot;</span><span class="MXMLString">70%</span><span class="MXMLDefault_Text">&quot; height=&quot;</span><span class="MXMLString">150</span><span class="MXMLDefault_Text">&quot;
        borderAlpha=&quot;</span><span class="MXMLString">0.15</span><span class="MXMLDefault_Text">&quot; creationComplete=&quot;</span><span class="ActionScriptDefault_Text">rte</span>.<span class="ActionScriptDefault_Text">htmlText</span><span class="ActionScriptOperator">=</span><span class="ActionScriptDefault_Text">richText</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">rteText</span><span class="MXMLDefault_Text">&quot; width=&quot;</span><span class="MXMLString">70%</span><span class="MXMLDefault_Text">&quot; height=&quot;</span><span class="MXMLString">50</span><span class="MXMLDefault_Text">&quot; </span><span class="MXMLComponent_Tag">/&gt;</span>

    <span class="MXMLComponent_Tag">&lt;mx:HBox&gt;</span>
        <span class="MXMLComponent_Tag">&lt;mx:Button</span><span class="MXMLDefault_Text"> color=&quot;</span><span class="MXMLString">black</span><span class="MXMLDefault_Text">&quot; label=&quot;</span><span class="MXMLString">Show Plain Text</span><span class="MXMLDefault_Text">&quot; click=&quot;</span><span class="ActionScriptDefault_Text">rteText</span>.<span class="ActionScriptDefault_Text">text</span><span class="ActionScriptOperator">=</span><span class="ActionScriptDefault_Text">rte</span>.<span class="ActionScriptDefault_Text">text</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"> color=&quot;</span><span class="MXMLString">black</span><span class="MXMLDefault_Text">&quot; label=&quot;</span><span class="MXMLString">Show HTML Markup</span><span class="MXMLDefault_Text">&quot; click=&quot;</span><span class="ActionScriptDefault_Text">rteText</span>.<span class="ActionScriptDefault_Text">text</span><span class="ActionScriptOperator">=</span><span class="ActionScriptDefault_Text">rte</span>.<span class="ActionScriptDefault_Text">htmlText</span>;<span class="MXMLDefault_Text">&quot;</span><span class="MXMLComponent_Tag">/&gt;</span>
    <span class="MXMLComponent_Tag">&lt;/mx:HBox&gt;</span>
<span class="MXMLComponent_Tag">&lt;/mx:Application&gt;</span></pre></body>
</html>
