<?xml version="1.0" ?>
<!--
  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.
  -->

<!-- Simple example to demonstrate the RichTextEditor control. -->
<mx:Module xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx"
				paddingBottom="0" paddingTop="0" paddingLeft="0" paddingRight="0"
				height="100%" width="100%">

    <mx:Panel title="Rich Text Editor Control Example" horizontalAlign="center"
			paddingBottom="10" paddingTop="10" paddingLeft="10" paddingRight="10"
			height="100%" width="100%">
		
	    <mx:RichTextEditor id="rte" title="RichTextEditor" height="75%"
						   text="Enter text into the RichTextEditor control, then click a button to display your text as plain text, or as HTML-formatted text."/>
	
	    <mx:TextArea id="rteText" width="80%" height="25%"/>
	
	    <mx:HBox>
	        <mx:Button label="Show Plain Text" click="rteText.text=rte.text"/>
	        <mx:Button label="Show HTML Markup" click="rteText.text=rte.htmlText"/>
	    </mx:HBox>
	</mx:Panel>

</mx:Module>
