/**
 *     Generated by mxmlc 2.0
 *
 *    Package:    
 *    Class:         DataBinding2
 *    Source:     C:\Documents and Settings\Kaleb Pederson\My Documents\workspace\DataBinding2\DataBinding2.mxml
 *    Template:     flex2/compiler/mxml/gen/ClassDef.vm
 *    Time:         2007.10.24 16:32:22 PDT
 */

package 
{

import flash.accessibility.*;
import flash.debugger.*;
import flash.display.*;
import flash.errors.*;
import flash.events.*;
import flash.external.*;
import flash.filters.*;
import flash.geom.*;
import flash.media.*;
import flash.net.*;
import flash.printing.*;
import flash.profiler.*;
import flash.system.*;
import flash.text.*;
import flash.ui.*;
import flash.utils.*;
import flash.xml.*;
import mx.binding.*;
import mx.containers.HBox;
import mx.controls.Label;
import mx.controls.TextInput;
import mx.core.Application;
import mx.core.ClassFactory;
import mx.core.DeferredInstanceFromClass;
import mx.core.DeferredInstanceFromFunction;
import mx.core.IDeferredInstance;
import mx.core.IFactory;
import mx.core.IPropertyChangeNotifier;
import mx.core.UIComponentDescriptor;
import mx.core.mx_internal;
import mx.styles.*;

[Frame(extraClass="_DataBinding2_FlexInit")]

[Frame(factoryClass="_DataBinding2_mx_managers_SystemManager")]


//    begin class def

public class DataBinding2
    extends mx.core.Application
{

    //    instance variables
    [Bindable]
/**
 * @private
 **/
    public var dst : mx.controls.TextInput;

    [Bindable]
/**
 * @private
 **/
    public var lbl : mx.controls.Label;

    [Bindable]
/**
 * @private
 **/
    public var src : mx.controls.TextInput;


    //    type-import dummies


    //    Container document descriptor
private var _documentDescriptor_ : mx.core.UIComponentDescriptor = 
new mx.core.UIComponentDescriptor({
  type: mx.core.Application
  ,
  propertiesFactory: function():Object { return {
    childDescriptors: [
      new mx.core.UIComponentDescriptor({
        type: mx.containers.HBox
        ,
        propertiesFactory: function():Object { return {
          childDescriptors: [
            new mx.core.UIComponentDescriptor({
              type: mx.controls.Label
              ,
              propertiesFactory: function():Object { return {
                text: "Source Field:"
              }}
            })
          ,
            new mx.core.UIComponentDescriptor({
              type: mx.controls.TextInput
              ,
              id: "src"
              ,
              propertiesFactory: function():Object { return {
                width: 219
              }}
            })
          ]
        }}
      })
    ,
      new mx.core.UIComponentDescriptor({
        type: mx.containers.HBox
        ,
        propertiesFactory: function():Object { return {
          childDescriptors: [
            new mx.core.UIComponentDescriptor({
              type: mx.controls.Label
              ,
              propertiesFactory: function():Object { return {
                text: "Destination Field:"
              }}
            })
          ,
            new mx.core.UIComponentDescriptor({
              type: mx.controls.TextInput
              ,
              id: "dst"
              ,
              propertiesFactory: function():Object { return {
                width: 219
              }}
            })
          ]
        }}
      })
    ,
      new mx.core.UIComponentDescriptor({
        type: mx.controls.Label
        ,
        id: "lbl"
      })
    ]
  }}
})

    //    constructor (Flex display object)
    /**
     * @private
     **/
    public function DataBinding2()
    {
        super();

        mx_internal::_document = this;

        //    our style settings


        //    ambient styles
        mx_internal::_DataBinding2_StylesInit();

        //    properties
        this.layout = "vertical";
        this.viewSourceURL = "srcview/index.html";

        //    events

    }

    //    initialize()
    /**
     * @private
     **/
    override public function initialize():void
    {
         mx_internal::setDocumentDescriptor(_documentDescriptor_);

        //    binding mgmt
        _DataBinding2_bindingsSetup();

        var target:DataBinding2 = this;

        if (_watcherSetupUtil == null)
        {
            var watcherSetupUtilClass:Object = getDefinitionByName("_DataBinding2WatcherSetupUtil");
            watcherSetupUtilClass["init"](null);
        }

        _watcherSetupUtil.setup(this,
                    function(propertyName:String):* { return target[propertyName]; },
                    _bindings,
                    _watchers);


        super.initialize();
    }

    //    scripts
    //    <Script>, line 4 - 6

            [Bindable] public var bool:Boolean;
        

    //    end scripts


    //    supporting function definitions for properties, events, styles, effects

    //    binding mgmt
    private var _bindings:Array;
    private var _watchers:Array;
    private function _DataBinding2_bindingsSetup():void
    {
        if (!_bindings)
        {
            _bindings = [];
        }

        if (!_watchers)
        {
            _watchers = [];
        }

        var binding:Binding;

        binding = new mx.binding.Binding(this,
            function():*
            {
                return src.text;
            },
            function(_sourceFunctionReturnValue:*):void
            {
                
                dst.text = _sourceFunctionReturnValue;
            },
            "dst.text");
        _bindings[0] = binding;
        binding = new mx.binding.Binding(this,
            function():*
            {
                return dst.text;
            },
            function(_sourceFunctionReturnValue:*):void
            {
                
                src.text = _sourceFunctionReturnValue;
            },
            "src.text");
        binding.twoWayCounterpart = _bindings[0];
        _bindings[0].twoWayCounterpart = binding;
        _bindings[1] = binding;
        binding = new mx.binding.Binding(this,
            function():*
            {
                return src.text.length > 5;
            },
            function(_sourceFunctionReturnValue:*):void
            {
                
                bool = _sourceFunctionReturnValue;
            },
            "bool");
        _bindings[2] = binding;
        binding = new mx.binding.Binding(this,
            function():String
            {
                var result:* = "[Source Length] " + (src.text.length) + " > 5 : " + (bool);
                var stringResult:String = (result == undefined ? null : String(result));
                return stringResult;
            },
            function(_sourceFunctionReturnValue:String):void
            {
                
                lbl.text = _sourceFunctionReturnValue;
            },
            "lbl.text");
        _bindings[3] = binding;
    }

    private function _DataBinding2_bindingExprs():void
    {
        var destination:*;
        [Binding(id='0')]
        dst.text = src.text;
        [Binding(id='1')]
        src.text = dst.text;
        [Binding(id='2')]
        bool = src.text.length > 5;
        [Binding(id='3')]
        destination = "[Source Length] " + (src.text.length) + " > 5 : " + (bool);
    }

    /**
     * @private
     **/
    public static function set watcherSetupUtil(watcherSetupUtil:IWatcherSetupUtil):void
    {
        (DataBinding2)._watcherSetupUtil = watcherSetupUtil;
    }

    private static var _watcherSetupUtil:IWatcherSetupUtil;

    //    initialize style defs for DataBinding2

    static mx_internal var _DataBinding2_StylesInit_done : Boolean = false;

    mx_internal function _DataBinding2_StylesInit():void
    {
        //    only add our style defs to the StyleManager once
        if (mx_internal::_DataBinding2_StylesInit_done)
            return;
        else
            mx_internal::_DataBinding2_StylesInit_done = true;

        var style:CSSStyleDeclaration;
        var effects:Array;


        StyleManager.mx_internal::initProtoChainRoots();
    }


    //    embed carrier vars
    //    end embed carrier vars


    //    binding management vars
    /**
     * @private
     **/
    public var _bindingsByDestination : Object;
    /**
     * @private
     **/
    public var _bindingsBeginWithWord : Object;

//    end class def
}

//    end package def
}