/* Copyright (c) 2009 Yahoo! Inc. All rights reserved. The copyrights embodied in the content of this file are licensed under the BSD (revised) open source license */ package com.yahoo.astra.containers.formClasses { import com.yahoo.astra.containers.formClasses.IForm; /** * Event obsever class for form classes. */ public class FormEventObserver implements IFormEventObserver { //-------------------------------------- // Constructor //-------------------------------------- /** * Constructor. * */ public function FormEventObserver() : void { observers = []; } //-------------------------------------- // Properties //-------------------------------------- /** * @private */ private var observers : Array; //-------------------------------------- // internal Methods //-------------------------------------- /** * Adds formItems to be subscribed. * Returns IFormEventObserver to force IForm instance to subscribe this observer class. * * @param observerItem Iform object to be subscribed events. * @return IFormEventObserver * */ public function subscribeObserver(observerItem : IForm) : IFormEventObserver { var duplicate : Boolean = false; for (var i : uint = 0;i < observers.length; i++) { if (observers[i] == observerItem) { duplicate = true; } } if (!duplicate) { observers.push(observerItem); } return this; } /** * Removes Iform from subscription. * * @param observerItem Iform instance to be unsubscribed. */ public function unsubscribeObserver(observerItem : IForm) : void { for (var i : uint = 0;i < observers.length; i++) { if (observers[i] == observerItem) { observers.splice(i, 1); } } } /** * Updates events every IForm in subscription. * * @param target String FormLayoutEvent type and its value. * @param value Object contains value associated FormLayoutEvent * */ public function setUpdate(target : String, value : Object) : void { for (var i:Object in this.observers) { observers[i].update(target, value); } } } }