//////////////////////////////////////////////////////////////////////////////// // // 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. // //////////////////////////////////////////////////////////////////////////////// package mx.collections { import flash.events.IEventDispatcher; import mx.events.CollectionEvent; /** * Dispatched when the ICollectionView has been updated in some way. * * @eventType mx.events.CollectionEvent.COLLECTION_CHANGE * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ [Event(name="collectionChange", type="mx.events.CollectionEvent")] /** * An ICollectionView is a view onto a collection of data. * The view can be modified to show the data sorted according to various * criteria or reduced by filters without modifying the underlying data. * An IViewCursor provides to access items within a * collection. You can modify the collection by using the IViewCursor * interface insert() and remove() methods. * *

An ICollectionView may be a view onto data that has been * retrieved from a remote location. * When Implementing this interface for data * that may be remote it is important to handle the case where data * may not yet be available, which is indicated by the * ItemPendingError.

* *

The IList interface is an alternative to the * ICollectionView interface.

* * @see mx.collections.IViewCursor * @see mx.collections.errors.ItemPendingError * @see mx.collections.IList * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public interface ICollectionView extends IEventDispatcher { //-------------------------------------------------------------------------- // // Properties // //-------------------------------------------------------------------------- //---------------------------------- // length //---------------------------------- /** * The number of items in this view. * 0 means no items, while -1 means that the length is unknown. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ function get length():int; //---------------------------------- // filterFunction //---------------------------------- /** * A function that the view will use to eliminate items that do not * match the function's criteria. * A filterFunction is expected to have the following signature: * *
f(item:Object):Boolean
* * where the return value is true if the specified item * should remain in the view. * *

If a filter is unsupported, Flex throws an error when accessing * this property. * You must call refresh() after setting the * filterFunction property for the view to update.

* *

Note: The Flex implementations of ICollectionView retrieve all * items from a remote location before executing the filter function. * If you use paging, apply the filter to the remote collection before * you retrieve the data.

* * @see #refresh() * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ function get filterFunction():Function; /** * @private */ function set filterFunction(value:Function):void; //---------------------------------- // sort //---------------------------------- /** * The ISort that will be applied to the ICollectionView. * Setting the sort does not automatically refresh the view, * so you must call the refresh() method * after setting this property. * If sort is unsupported an error will be thrown when accessing * this property. * *

Note: The Flex implementations of ICollectionView retrieve all * items from a remote location before executing a sort. * If you use paging with a sorted list, apply the sort to the remote * collection before you retrieve the data.

* * @see #refresh() * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ function get sort():ISort; /** * @private */ function set sort(value:ISort):void; //-------------------------------------------------------------------------- // // Methods // //-------------------------------------------------------------------------- /** * Creates a new IViewCursor that works with this view. * * @return A new IViewCursor implementation. * * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ function createCursor():IViewCursor; /** * Returns whether the view contains the specified object. * Unlike the IViewCursor.findxxx methods, * this search is succesful only if it finds an item that exactly * matches the parameter. * If the view has a filter applied to it this method may return * false even if the underlying collection * does contain the item. * * @param item The object to look for. * * @return true if the ICollectionView, after applying any filter, * contains the item; false otherwise. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ function contains(item:Object):Boolean; /** * Prevents changes to the collection itself and items within the * collection from being dispatched by the view. * Also prevents the view from updating the positions of items * if the positions change in the collection. * The changes will be queued and dispatched appropriately * after enableAutoUpdate is called. * If more events than updates to a single item occur, * the view may end up resetting. * The disableAutoUpdate method acts cumulatively; * the same number of calls to enableAutoUpdate * are required for the view to dispatch events and refresh. * Note that disableAutoUpdate only affects the * individual view; edits may be detected on an individual * basis by other views. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ function disableAutoUpdate():void; /** * Enables auto-updating. * See disableAutoUpdate for more information. * * @see #disableAutoUpdate() * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ function enableAutoUpdate():void; /** * Notifies the view that an item has been updated. * This method is useful if the contents of the view do not implement * IPropertyChangeNotifier. * If the call to this method includes a property parameter, * the view may be able to optimize its notification mechanism. * Otherwise it may choose to simply refresh the whole view. * * @param item The item within the view that was updated. * * @param property The name of the property that was updated. * * @param oldValue The old value of that property. (If property * was null, this can be the old value of the item.). * * @param newValue The new value of that property. (If property * was null, there's no need to specify this as the item is assumed * to be the new value.) * * @see mx.events.CollectionEvent * @see mx.core.IPropertyChangeNotifier * @see mx.events.PropertyChangeEvent * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ function itemUpdated(item:Object, property:Object = null, oldValue:Object = null, newValue:Object = null):void; /** * Applies the sort and filter to the view. * The ICollectionView does not detect changes to a sort or * filter automatically, so you must call the refresh() * method to update the view after setting the sort * or filterFunction property. * If your ICollectionView implementation also implements * the IMXMLObject interface, you should to call the * refresh() method from your initialized() * method. * *

Returns true if the refresh was successful * and false if the sort is not yet complete * (e.g., items are still pending). * A client of the view should wait for a CollectionEvent event * with the CollectionEventKind.REFRESH kind * property to ensure that the refresh() operation is * complete.

* * @return true if the refresh() was complete, * false if the refresh() is incomplete. * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ function refresh():Boolean; } }