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}