src/it/ht/rcs/console/search/controller/SearchManager.as
package it.ht.rcs.console.search.controller
{
import it.ht.rcs.console.DB;
import it.ht.rcs.console.controller.ItemManager;
import it.ht.rcs.console.search.model.SearchItem;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
public class SearchManager extends ItemManager
{
[Bindable]
public var filter:Object = {};
private static var _instance:SearchManager = new SearchManager();
public static function get instance():SearchManager { return _instance; }
override public function refresh():void
{
super.refresh();
DB.instance.search.all(filter, onResult);
}
private function onResult(e:ResultEvent):void
{
clear();
for each (var item:* in e.result.source)
addItem(item);
dispatchDataLoadedEvent();
}
// logic: when showing, if the item is present, replace it, if not, just add it.
// if show returns an error the item is gone, delete it from list
public function showItem(id:String, onResult:Function=null, onFault:Function=null):void
{
//default fault handler
var faultHandler:Function = onFault != null ? onFault :
function(fe:FaultEvent):void {
var current:SearchItem = getItem(id);
if (current != null)
removeItem(current);
};
DB.instance.search.show(id, function(re:ResultEvent):void {
var item:SearchItem = re.result as SearchItem;
if(item==null) return;
var current:SearchItem = getItem(item._id);
if (current != null)
removeItem(current);
addItem(item);
if (onResult != null)
onResult(item);
}, faultHandler);
}
}
}