001package gu.dtalk.event;
002
003import static com.google.common.base.Preconditions.*;
004
005import gu.dtalk.BaseItem;
006import gu.dtalk.BaseOption;
007
008
009/**
010 * 选项数据值改变侦听器
011 * @author guyadong
012 *
013 * @param <T>
014 */
015public abstract class ValueListener<T> extends BaseObserver<ValueChangeEvent<BaseOption<T>>> {
016
017        public ValueListener<T> registerTo(BaseOption<T> option){
018                if(option != null){
019                        option.addListener(this);
020                }
021                return this;
022        }
023        @SuppressWarnings("unchecked")
024        public void registerTo(BaseItem root){
025                checkArgument(root != null);
026                if(root instanceof BaseOption){
027                        registerTo((BaseOption<T>)root);
028                }else{
029                        for (BaseItem child : root.getChilds()) {
030                                registerTo(child);
031                        }
032                }
033        }
034}