> Behalf Of Tom Chiverton
> Subject: Re: [flexcoders] How to tell a UIComponent to refresh because
> properties changed?
> It should do... when you say 'a custom class', what's the code for that
> ?
> 
> --
> Tom Chiverton

package org.pace2020.epace.editors.data
{
        import org.pace2020.epace.editors.data.TreeNode;
        import org.pace2020.epace.editors.data.ListModel;
        import org.pace2020.epace.editors.data.FieldRelated;
        import org.pace2020.epace.editors.data.events.*;
        import flash.events.Event;
        
public class Sort extends TreeNode implements DataObject, FieldRelated
{
        [Bindable]
    private var m_fieldDefinition:Field;
        [Bindable]
     private var m_field:String = "";
    [Bindable]
    private var m_groupBy:Boolean = false;
    [Bindable]
    private var m_collapsed:Boolean = false;
    
    [Bindable]
    private var m_sort:XML;
        
    public function Sort( data:XML, parent:DataObject, model:ListModel )
    {
        super(parent, model);
            
        initialize(data);
    } 
        
    public function setFieldDefinition():void
        {
                   if( null != field && "" != field )
                   {
                                var fieldset:Fieldset = getParentFieldset(
getParent() as DataObject );
                                
                                if( null != fieldset )
                                {
                                        if(
fieldset.getFieldsMap().hasOwnProperty(field) )
                                        {
                                                m_fieldDefinition =
fieldset.getFieldsMap()[field];
                                        }
                                }
                   }
        }         
          

    private function initialize(data:XML):void
    {
        setProperties(data);
        setFieldDefinition();   
        
        if( null != fieldDefinition )
        {
                var listener:FieldEventListener = new
FieldEventListener(this);
                        
                listener.registerForFieldNameChanges();
                listener.registerForFieldEditableChanges();
        }
    }
        
    public function handleItemEvent(e:FieldEvent):void
    {
        if( null != m_sort && e is FieldNameChangedEvent )
        {
              m_sort.elements()[EMAIL PROTECTED] = getDisplayName();
                
                var fieldset:Fieldset = getParentFieldset( getParent() as
DataObject );
                                
                                if( null != fieldset )
                                {
                                fieldset.refreshFieldsAvailForSort();
                        }
        }
        else if( e is FieldEditableChangedEvent )
        {
                if( groupBy && e.field.editable )
                {
                groupBy = false;
                }
        }
    }
    
    public function get fieldDefinition():Field
        {
           return m_fieldDefinition;
        }
            
     private function setProperties(data:XML):void
        {
                field = [EMAIL PROTECTED];
                groupBy = "true" == [EMAIL PROTECTED]; 
                collapsed = "true" == [EMAIL PROTECTED];
        }
    
        
    public function get groupBy():Boolean
        {
                return m_groupBy;
        }
        
        public function set groupBy( object:Boolean ):void
        {
                m_groupBy = object;
                
                if( null != m_sort )
                {
                m_sort.elements()[EMAIL PROTECTED] = groupBy;
                }
                
                if( !object)
                {
                        collapsed = false;
                } 
        }   
        
    public function get collapsed():Boolean
        {
                return m_collapsed;
        }
        
        public function set collapsed( object:Boolean ):void
        {
                m_collapsed = object && groupBy;
        }
    
    public function get field():String
        {
                return m_field;
        }
        
        public function set field( object:String ):void
        {
                if( null != object && "" != object )
                {
                        m_field = object;
                }
        }
        
    public function get displayGroupBy():Boolean
        {
            var list:ListForm = getParentList( getParent() as DataObject );

            return null != field && "" != field && ( list.readOnly ||
!fieldDefinition.editable );
        }
}
}


Reply via email to