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

<!-- APL Author sebawagner -->
<resource name="regexptip_rsc_r" src="resources/regexp/regexp_bg_r.swf" />
<!-- APL Author sebawagner -->
<resource name="regexptip_rsc_m" src="resources/regexp/regexp_bg_m.swf" />
<!-- APL Author sebawagner -->
<resource name="regexptip_rsc_l" src="resources/regexp/regexp_bg_l.swf" />
<!-- APL Author sebawagner -->
<resource name="regexptip_rsc_point" src="resources/regexp/regexp_point.swf" />

<class name="regexptip" extends="view">
    <attribute name="regexptext" value="" type="string" />
    <attribute name="fadeDelegate" value="null" />
    <handler name="oninit">
        this.fadeDelegate = new LzDelegate( this, "fadeText" );
        lz.Timer.addTimer( this.fadeDelegate, 5000 );
    </handler>
    <method name="fadeText" args="itemRef">
        this.destroy();
    </method>
    <view width="${parent.width}" layout="axis:x">
        <view name="regexptip_rsc_r" resource="regexptip_rsc_r" width="5" />
        <view name="regexptip_rsc_m" resource="regexptip_rsc_m" stretches="width" width="${ parent.width-10 }"/>
        <view name="regexptip_rsc_l" resource="regexptip_rsc_l" width="5" />
    </view>
    
    <view resource="regexptip_rsc_point" y="-7" x="12" />

    <text fontsize="11" text="${ parent.regexptext}" resize="true" multiline="false" />
</class>

</library>
