> 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 );
}
}
}